Content Readability: 17 Formulas Across 86 Languages
A translated page can be correct, complete and twice as hard to read as the original. Nobody notices in review, because the reviewer reads the source language fluently and the target language politely.
Code: ReadSight, MIT licensed.
This is the quietest content defect we find in audits. The English page sits at a comfortable score, the Ukrainian version lands three grade levels higher, and the bounce rate on the translated page has no explanation in the analytics.
What a readability score measures
Every formula counts two things: words per sentence and syllables per word. Long sentences and long words raise the grade; short ones lower it. What the number says about truth, structure or usefulness is nothing.
Flesch Reading Ease runs from zero to a hundred where higher is easier. Gunning Fog and the Flesch-Kincaid grade report a school year where lower is easier. Mixing the two in one dashboard produces a chart that reads as noise.
That distinction matters when a client asks why the German page “scores worse” than the English one. It does not. It is being measured by a different formula with different coefficients, and the honest comparison is between two German pages.
Why translated text drifts
Three habits push a translation up the grade scale.
The first is calque: keeping the source syntax and swapping words. English tolerates a fourteen-word sentence with two subordinate clauses; Ukrainian and Russian read better when that sentence becomes two.
The second is nominalisation. Translators under time pressure reach for the noun form, and “implementation of the optimisation” replaces “we optimised it”.
The third is term consistency. A product name kept in Latin among Cyrillic text counts as one long word in every formula, and a page full of API names looks harder than it reads. That is a measurement artefact, and the fix is not to rename the product.
One library instead of nine implementations
ReadSight scores text in 86 languages with 17 formulas and no runtime dependencies beyond mbstring and json. The interesting part is the split between the two kinds of formula.
Five formulas work in every language: Gunning Fog, SMOG, Coleman-Liau, the Automated Readability Index and LIX. They count characters, words and sentences, which every language has.
The other twelve are language-aware and carry published coefficients. Flesch Reading Ease and Flesch-Kincaid cover twelve languages. The Wiener Sachtextformel handles German, Gulpease handles Italian, OSMAN handles Arabic, and the Fernández-Huerta family covers Spanish.
So an English page gets nine formulas, Spanish gets eleven, German gets eight, and a Thai sentence never gets scored by an English-only metric. That single rule removes the most common way readability numbers end up meaningless.
Syllables are where it breaks
Syllable counting is the part everyone underestimates. English heuristics like “count the vowels and subtract one” work until they meet “queue”, “fire” or a proper noun, and the error compounds across a thousand words.
The library uses the TeX hyphenation algorithm by Frank M. Liang, with per-language pattern files. That is the same approach behind hyphenation in TeX and LibreOffice, and it produces syllable boundaries that hold up on real text instead of dictionary words.
Putting content readability to work
A score is useful as a band, not a target. Developer documentation sits around grade ten to twelve. Marketing pages for a general audience sit lower. Legal text sits higher and should stay there.
Chasing “grade eight” everywhere cuts necessary precision from a reference page and adds filler to a short one. The band is a flag: text that leaves it gets a second read, and a person decides whether the change is right.
For translated sites, the useful check is a comparison between the source and the target in the same language family. A jump of three grades between an English page and its Ukrainian version means a sentence-splitting pass, not a rewrite.
The library works on PHP 8.2 and up, MIT licensed, with 257 tests passing and PHPStan at the maximum level. It runs inside a build step or a WP-CLI command, so a check can block a deploy without a network call.
Related: SEO for what happens after the text is readable, and web development for where the check fits in a release. One more pass before publishing: 20 cognitive biases in copywriting, because a readable page can still ask the reader for the wrong decision.
Background: Readability on Wikipedia and the WCAG guidance on reading level.
