Class to parse a long text and return an estimated reading time based on a lang rate.
yarn add @untemps/read-per-minuteImport the functions:
import { parse, isLangExist, rates } from '@untemps/read-per-minute'Call parse with a string and a lang (see Override the value for a one-time parsing for an alternative usage):
parse('Long text', 'en')The parse function returns an object with the following properties:
| Property | Description |
|---|---|
| time | The estimated reading time in minutes |
| words | The number of words in the text |
| rate | The rate value used to calculate the reading time |
Default rate values come from "How many words do we read per minute? A review and meta-analysis of reading rate" by Marc Brysbaert - Department of Experimental Psychology Ghent University
| Lang | Rate |
|---|---|
| default | 200 |
| ar | 181 |
| zh | 260 |
| nl | 228 |
| en | 236 |
| fi | 195 |
| fr | 214 |
| de | 260 |
| he | 224 |
| it | 285 |
| ko | 226 |
| es | 278 |
| sv | 218 |
If the lang is not listed or is undefined, the default value will be used instead.
You can specify an entire custom rates object as the third parameter of parse or isLangExist:
const customRates = {
default: 220,
ar: 191,
zh: 255,
nl: 234,
en: 244,
}
parse('Long text', 'en', customRates)
isLangExist('en', customRates)NOTE: Set a default property in the object if you want the parsing to fallback to a specific value.
Otherwise, the static value will be used (rates.default).
Simply pass the desired custom reading rate in words per minute instead of a language code:
// For very fast readers: 425 words per minute.
parse('Long text', 425)NOTE: The custom reading rate must be greater than zero or the default value will be used.