retext plugin to check readability.
This package is a unified (retext) plugin to check readability: whether your presumed target audience can read your prose. It applies Dale—Chall, Automated Readability, Coleman-Liau, Flesch, Gunning-Fog, SMOG, and Spache.
You can use this plugin when you’re dealing with content that might be difficult to read to some folks, and have authors that can fix that content.
💡 Tip: I also made an online, editable, demo, similar to this project:
wooorm.com/readability
.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install retext-readability
In Deno with esm.sh
:
import retextReadability from 'https://esm.sh/retext-readability@8'
In browsers with esm.sh
:
<script type="module"> import retextReadability from 'https://esm.sh/retext-readability@8?bundle' </script>
Say our document example.txt
contains:
The cat sat on the mat The constellation also contains an isolated neutron star—Calvera—and H1504+65, the hottest white dwarf yet discovered, with a surface temperature of 200,000 kelvin
…and our module example.js
contains:
import retextEnglish from 'retext-english' import retextReadability from 'retext-readability' import retextStringify from 'retext-stringify' import {read} from 'to-vfile' import {unified} from 'unified' import {reporter} from 'vfile-reporter' const file = await unified() .use(retextEnglish) .use(retextReadability) .use(retextStringify) .process(await read('example.txt')) console.error(reporter(file))
…then running node example.js
yields:
example.txt 3:1-5:57 warning Unexpected hard to read sentence, according to 4 out of 7 algorithms readability retext-readability ⚠ 1 warning
The default target age is 16
. You can pass something else, such as 6
:
.use(retextEnglish) - .use(retextReadability) + .use(retextReadability, {age: 6}) .use(retextStringify)
…then running node example.js
again yields:
example.txt 1:1-1:23 warning Unexpected hard to read sentence, according to 4 out of 7 algorithms readability retext-readability 3:1-5:57 warning Unexpected hard to read sentence, according to all 7 algorithms readability retext-readability ⚠ 2 warnings
This package exports no identifiers. The default export is retextReadability
.
unified().use(retextReadability[, options])
Check hard to read sentences.
options
(Options
, optional) — configurationTransform (Transformer
).
Configuration (TypeScript type).
age
(number
, default: 16
) — target age groupminWords
(number
, default: 5
) — check sentences with at least this number of words; most algos are made to detect the reading level on an entire text; this plugin checks each sentence on its own; for short sentences, one long or complex word can strongly skew the resultsthreshold
(number
, default: 4 / 7
) — number of algos (out of 7) that need to agree something is hard to readEach message is emitted as a VFileMessage
, with source
set to 'retext-readability'
, ruleId
to 'readability'
, actual
to the difficult sentence, and expected
to an empty array.
This package is fully typed with TypeScript. It exports the additional type Options
.
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, retext-readability@^8
, compatible with Node.js 16.
retext-syntax-mentions
— classify @mentions as syntaxretext-syntax-urls
— classify URLs and filepaths as syntaxretext-simplify
— check phrases for simpler alternativesSee contributing.md
in retextjs/.github
for ways to get started. See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4