Compute Flesch scores and measure the syllable shortcut
sentences and paragraphs
readability scoring
workforce research
Learn how readability formulas use sentence, word, and syllable counts, and why their limits are severe.
Plain public help text is ready for review, but the coordinator still asks whether the job board is harder to read than the help articles. A single score would be convenient, but the score has to come from counted parts.
Readability formulas estimate text difficulty from surface counts such as sentences, words, and syllables. A syllable is a spoken beat inside a word. The formulas in this lesson can be computed by hand, which makes their limits visible.
Note
The job board and help articles scored here are fictional teaching texts.
TipWhat you will learn
By the end of this lesson, you will be able to:
define the counts used by Flesch Reading Ease;
define the counts used by Flesch-Kincaid Grade Level;
write a small syllable-counting heuristic;
measure that heuristic against hand-counted job-board words; and
explain why a readability score is not a reading level for a person.
Count syllables with a visible shortcut
This lesson reads local files, extracts HTML with rvest, tokenises text, and uses dplyr, tibble, purrr, and stringr for the count checks. The syllable counter below is only a shortcut: clean the word, drop a final silent e unless the word ends in consonant plus le, then count groups of vowel letters including y. In the code, \(word) is R shorthand for a small function applied to one word.
On these 30 job-board words, the heuristic matches 21 of 30, overcounts 5 of 30, and undercounts 4 of 30. The hand counts sum to 78 syllables, while the heuristic sums to 79. That one-syllable difference is small here, but the error is still real and it enters the readability formulas directly. The failures show three common traps: adjacent vowels at a syllable break, final es endings, and y joining a vowel group as in employer.
What is included before the readability formulas run
Text set
Blocks
Sentence pieces
Words
all HTML blocks collapsed
41
22
177
job-detail list items
22
22
133
headings, employers, and locations
19
19
44
knitr::kable( readability_scores,col.names =c("Document","Sentences","Words","Syllables","Words per sentence","Syllables per word","Flesch Reading Ease, rounded","Flesch-Kincaid grade, rounded" ),caption ="Readability formulas computed directly from counted parts",row.names =FALSE)
Readability formulas computed directly from counted parts
Document
Sentences
Words
Syllables
Words per sentence
Syllables per word
Flesch Reading Ease, rounded
Flesch-Kincaid grade, rounded
job detail sentences
22
133
230
6.0
1.7
54
7
help articles
6
56
89
9.3
1.6
63
7
knitr::kable( syllable_sensitivity |>select(document, syllables, flesch_reading_ease, flesch_kincaid_grade),col.names =c("Document", "Syllables", "Flesch Reading Ease, rounded", "Flesch-Kincaid grade, rounded"),caption ="Effect of applying the observed net syllable bias to the job-board score",row.names =FALSE)
Effect of applying the observed net syllable bias to the job-board score
Document
Syllables
Flesch Reading Ease, rounded
Flesch-Kincaid grade, rounded
job detail sentences
230
54
7
job detail sentences, net-bias adjusted
227
56
7
The code scores only the 22 job-detail list items as job-board sentences. The 19 headings, employer names, and location labels contain 44 words, but they are not running sentences. If all 41 HTML blocks are glued into one string, those labels run into the list items and the Flesch score rounds to 33. That is a preprocessing artefact, not a reading result.
With the list items kept separate, the job-board detail sentences have 22 sentences, 133 words, and 230 heuristic syllables. The help articles have 6 sentences, 56 words, and 89 syllables. The rounded scores are 54 and 7 for the job details, and 63 and 7 for the help articles. On common Flesch bands, the collapsed score of 33 falls in the difficult range; treating short job-board sentences as college-level prose would be implausible. The split score is still driven by the syllable term, especially long nouns such as certification and apprenticeship.
Those values compare two teaching texts under one set of counting rules. The formulas were fitted decades ago for particular populations (e.g., US military personnel or schoolchildren) and specific tasks. They count surface features and know nothing about meaning, layout, stakes, or whether a reader already knows the subject. A readability formula is a surface heuristic, never a true comprehension model. In practice, calculating these formulas reliably requires heavily tested ecosystem tools like quanteda.textstats in R or textstat in Python rather than custom arithmetic.
The 30-word audit found errors on nearly a third of tested words, and the net bias alone moves the job-detail Flesch score from 54 to 56. The help article sample is only 56 words. Whole-number scores are already more precision than the inputs deserve.
What to remember
Readability formulas use sentence, word, and syllable counts.
Preprocessing can change the sentence and word counts before the formula runs.
The syllable shortcut matched 21 of 30 job-board words and missed 9.
Whole-number scores are still rough because the syllable input is rough.
The help articles score a little easier than the job-detail sentences here, but the samples are small and the syllable counter is noisy. The numbers are a prompt to read the text, not a substitute for reading it.