Skip to content

Readability Check: 86 Languages, One Command

Readability Check: 86 Languages, One Command

A brief says “write simply” and nobody measures what came back. An editor reads the piece, finds it dense, and asks for a rewrite that makes it denser. A readability check replaces the opinion with a number a writer can argue with, and it takes a second per page.

Code: ReadSightJS, MIT licensed.

@globus.studio/readsight measures text in 86 languages across 19 writing systems. It implements 17 formulas, uses TeX hyphenation patterns for syllables, and has no runtime dependencies.

What the number replaces

“Too hard to read” is a judgement about a person. “Grade 14 with Flesch-Kincaid, 23 on Flesch Reading Ease” is a statement about a text, and a writer can test a different version against it in a minute.

That difference changes the conversation in review. Instead of defending a paragraph, the author cuts a clause and watches two numbers move. The tool does not make the writing better; it makes the disagreement solvable.

Five formulas work in every language

Gunning Fog, SMOG, Coleman-Liau, ARI and LIX score text in all 86 languages, because they count letters and syllables rather than consult a word list. The other twelve carry published coefficients for a specific language.

The engine hands each language only the formulas that fit it: nine for English, eleven for Spanish, eight for German, five for Thai. An English metric never lands on a Thai sentence, and that single rule prevents the most common nonsense in multilingual content work.

Syllables are where the honesty shows

Syllable counting uses the Frank M. Liang hyphenation algorithm, the one TeX has used for line breaking for decades. It is exact about where a word may break and approximate about how many syllables it has, because hyphenation and phonetics are different problems.

The library says so in its readme instead of hiding it. For the Slavic Cyrillic languages, where one vowel equals one syllable, it switches to a heuristic counter with a per-language vowel pattern, and дыхание counts as four instead of whatever the TeX patterns suggest.

What a Node build gets

The package ships ESM and CommonJS with TypeScript types, so a build step that already exists does not need a new tool. Coverage is enforced at 100%, and parity with the PHP original is checked by golden vectors across all 86 languages with a tolerance of 1e-9.

For a content team that means the number in the editor and the number in the pipeline come from the same arithmetic, and a rewrite of one implementation cannot quietly change the other.

What it does not tell you

It cannot say whether the argument is clear, whether the headings follow the reader’s questions, or whether a sentence is long for a good reason. Dale-Chall and Spache use a syllable heuristic to estimate difficult words, and the readme admits that this is an estimate rather than the original word lists.

A reading score is one gate among several. It catches the paragraph that nobody could read on a phone, and it ignores the paragraph that is easy and says nothing.

Where it fits in a process

Two places earn their keep: a check before publication that blocks a text above the agreed grade, and a trend line over a section of the site that shows whether the writing is drifting.

Both are cheap. The first costs one command in CI, the second costs a table of scores per month, and either one makes the “write simply” line in a brief mean something.

Related: content readability for the full picture of formulas and languages, and HTML table sorting for another case where a native, dependency-free tool beats a heavy one.