Reading time estimator
A 1200-word article read at 200 words per minute takes 6 minutes: enter the word count and a realistic reading speed to get the time in minutes, hours and seconds for a read-time label or a lesson plan. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Word count
- 1,200
- Reading speed
- 200
- Minutes
- 6
- Hours
- 0.1
- Seconds
- 360
Knowing how long a piece of text will take to read is the first practical question for blog posts, newsletters, e-books, lesson plans, and content calendars. This reading time estimator divides total word count by average reading speed in words per minute and returns a stable duration you can pin in apps and tests. Zero or negative reading speed is rejected as invalid input so form glitches never divide by zero or invent a backward clock.
How reading time is computed from word count and WPM
Estimated reading duration equals word count divided by average reading speed when speed is written as words per minute. A twelve-hundred-word article at two hundred words per minute needs six minutes; a three-thousand-word chapter at one hundred fifty words per minute needs twenty minutes; the same identity works for any coherent word total and positive WPM. Zero or negative reading speed is a hard error under the product contract because it would divide by zero or reverse time.
Negative word count is likewise rejected; zero words yields zero time for empty drafts.
Understanding the result and picking a realistic speed
Use minutes when your CMS badge shows a short “read time” label; use hours for long-form books and whitepapers; use seconds when timers or accessibility tools need finer grain. The formula field is safe to show next to the numbers so users see minutes equals word count divided by reading speed.
Prefer real-world average speeds over optimistic race times when the text includes dense technical prose, footnotes, or a second language—typical silent adult reading often lands near two hundred to two hundred fifty words per minute, while careful study may run lower and skimming may run higher.
What you can do with it
Blog and newsletter read-time badges
CMS plugins and newsletter tools convert article word count and a typical audience WPM into minutes so readers see “about six minutes” before they open the post.
Curriculum and e-learning estimates
Teachers and course builders enter lesson word totals plus student reading speed to schedule homework blocks without guessing from page length alone.
Editorial calendars and book previews
Publishers and documentation sites preview long-form duration from chapter word counts and careful-study WPM before adding images or difficulty scoring elsewhere.
FAQ
What happens if reading speed is zero or negative?
Non-positive reading speed is rejected under the product contract and is not charged.
What WPM should I use?
Typical silent adult reading is often about 200–250 words per minute. Use a lower rate for dense technical prose or language learners, and a higher rate for light skimming.
Is the reading time estimator free?
The browser tool runs free on your device.
Does this count the words in my document?
Pair with your own counter if you only have raw text.
How long does a 1200-word article take to read?
About 6 minutes at 200 words per minute, which is 360 seconds. Dense prose, footnotes or a second language slow most readers down, so pick a lower speed for that kind of text.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/reading-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"word_count":1200,"reading_speed":200}'const res = await fetch("https://api.kit.forhosting.com/hobby/reading-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"word_count": 1200,
"reading_speed": 200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/reading-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"word_count": 1200,
"reading_speed": 200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/reading-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"word_count":1200,"reading_speed":200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"word_count":1200,"reading_speed":200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/reading-time", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"word_count": 1200,
"reading_speed": 200
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.reading_time",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Enter word_count and reading_speed to get minutes, hours, and seconds in deterministic JSON for CMS plugins, publishing tools, and tutoring platforms.
How reading time is computed from word count and WPM
Send required fields word_count and reading_speed as JSON numbers or numeric strings. Aliases words, count, n, and total_words map to word_count; wpm, speed, rate, and words_per_minute map to reading_speed. Magnitude caps keep results finite on the Worker isolate.
Reading the response fields and choosing realistic reading speeds
On success the response echoes word_count and reading_speed after stable rounding, plus minutes equal to word count over reading speed, hours equal to minutes divided by sixty, seconds equal to minutes times sixty for clock-friendly display, a human-readable formula string, and method equal to word_count_over_wpm. This endpoint does not count words in a file, score difficulty, or model images and tables; it is a transparent arithmetic check, not a full readability suite. Missing required fields, non-finite values, and zero or negative reading speed all fail with invalid_input and are not charged after the engine rejects the request, so bad form posts never drain prepaid balance on a validation failure.
API usage, pricing, publishing workflows, and practical limits
Call the free in-browser reading time estimator for blog previews, classroom demos, and quick newsletter checks without installing a spreadsheet or CMS plugin. For multi-section books, sum minutes client-side or call once per chapter so each segment stays auditable in logs and support tickets. Authors shipping SDKs can map minutes, hours, and seconds into badges that show “about six minutes” or “roughly one hour”—the same shape editors sketch on a pitch sheet when they estimate reading time by hand for a feature article. Send a JSON body with word_count and reading_speed (or the documented aliases). Use the prepaid API when a publishing platform, content calendar, e-learning module, documentation site, or editorial dashboard needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance. Pair this endpoint with a separate word counter when you only have raw text—count words client-side or upstream, then call here with the integer total and your audience WPM.
Technical questions
How do I estimate reading time with this calculator?
Send JSON with word_count (total words) and reading_speed (words per minute). The response includes minutes, hours, and seconds from minutes = word_count / reading_speed.