Skip to content

Reading time

What this does

Estimates how long a piece of text takes to read. Counts words, applies a standard reading speed (around 200 words per minute for silent reading), and returns minutes and seconds. Handy for blogs, newsletters, and accessibility hints.

Who it is for

  • Blog templates showing “5 min read”
  • Email footers setting expectations
  • CMS plugins without a local word counter
  • Editors trimming copy to a time budget

Try it

https://fetch.li/v1/readtime?text=fetch.li helps teams ship small APIs without running a platform team.

Longer sample (URL-encode in practice):

https://fetch.li/v1/readtime?text=The quick brown fox jumps over the lazy dog. Repeat for a longer article body pasted here.

HTTP example

GET /v1/readtime?text=UK%20Dev%20Suite%20documentation HTTP/1.1
Host: fetch.li
Accept: application/json

curl

curl -sS "https://fetch.li/v1/readtime?text=UK%20Dev%20Suite%20documentation"

JavaScript fetch

const text = "fetch.li helps teams ship small APIs.";
const response = await fetch(
  `https://fetch.li/v1/readtime?text=${encodeURIComponent(text)}`
);
const stats = await response.json();
console.log(stats.minutes, stats.words);

Python requests

import requests

response = requests.get(
    "https://fetch.li/v1/readtime",
    params={"text": "fetch.li helps teams ship small APIs."},
)
response.raise_for_status()
print(response.json())

Example JSON response

{
  "words": 42,
  "characters": 218,
  "minutes": 1,
  "seconds": 13,
  "wpm": 200,
  "human": "1 min read"
}

For very short text:

{
  "words": 3,
  "characters": 11,
  "minutes": 0,
  "seconds": 1,
  "wpm": 200,
  "human": "Less than 1 min read"
}

Parameters

Parameter Required Type Description
text Yes string Body text to analyse (max 50,000 characters)

Errors that can happen

HTTP error.code When
400 invalid_body Missing or empty text, or text too long
429 rate_limited Demo limit exceeded
500 internal Unexpected server error

Demo

GET endpoints work without an API key on the public demo tier (60 calls per hour per IP). POST /v1/vibe/classify needs a key.