Flesch-Kincaid Readability Scores Explained: Formulas, Code, and SEO Writing
"The cat sat on the mat" scores differently from "The feline reposed upon the floor covering." Both say the same thing, but readability formulas quantify how hard each is to read. These scores power everything from Microsoft Word's readability checker to SEO content guidelines to US military technical manual standards.
This article explains the math behind the major readability formulas, with hand-calculated examples and working code.
Flesch Reading Ease: The Original (1948)
Rudolf Flesch's Reading Ease formula scores text from 0 to 100 (higher = easier):
RE = 206.835 β 1.015 Γ (words/sentences) β 84.6 Γ (syllables/words)
Two inputs: average sentence length and average syllables per word. That's it. The constants (206.835, 1.015, 84.6) were derived empirically by Flesch from correlating these metrics with reading comprehension test scores.
Worked Example
Text: "The cat sat. The dog ran fast."
- Words: 7 (The, cat, sat, The, dog, ran, fast)
- Sentences: 2
- Syllables: The(1) + cat(1) + sat(1) + The(1) + dog(1) + ran(1) + fast(1) = 7
RE = 206.835 β 1.015 Γ (7/2) β 84.6 Γ (7/7)
= 206.835 β 1.015 Γ 3.5 β 84.6 Γ 1.0
= 206.835 β 3.5525 β 84.6
= 118.68
Scores above 100 are possible for very simple text (the scale isn't strictly capped). Now a harder example:
Text: "The implementation utilizes sophisticated methodological frameworks."
- Words: 5, Sentences: 1
- Syllables: The(1) + im-ple-men-ta-tion(5) + u-ti-li-zes(4) + so-phis-ti-ca-ted(5) + meth-od-o-log-i-cal(6) + frame-works(2) = 23
RE = 206.835 β 1.015 Γ (5/1) β 84.6 Γ (23/5)
= 206.835 β 5.075 β 84.6 Γ 4.6
= 206.835 β 5.075 β 389.16
= β187.4
Negative scores indicate extremely difficult text. The interpretation scale:
| Score | Difficulty | Typical material |
|---|---|---|
| 90β100 | Very easy | 5th grade, comics |
| 80β90 | Easy | 6th grade, consumer ads |
| 70β80 | Fairly easy | 7th grade |
| 60β70 | Standard | 8thβ9th grade, most web content |
| 50β60 | Fairly difficult | 10thβ12th grade |
| 30β50 | Difficult | College level |
| 0β30 | Very difficult | Academic papers, legal documents |
SEO sweet spot: 60β70. Most successful web content targets this range β accessible to a broad audience without sounding dumbed down.
Flesch-Kincaid Grade Level: The US Navy Version (1975)
The US Navy needed to ensure technical manuals matched sailors' reading levels. J. Peter Kincaid recalibrated Flesch's formula to output a US grade level instead of a 0β100 score:
FKGL = 0.39 Γ (words/sentences) + 11.8 Γ (syllables/words) β 15.59
Using our examples:
Simple text ("The cat sat. The dog ran fast."):
FKGL = 0.39 Γ 3.5 + 11.8 Γ 1.0 β 15.59
= 1.365 + 11.8 β 15.59
= β2.43 β effectively grade 0 (very easy)
Hard text ("The implementation utilizes..."):
FKGL = 0.39 Γ 5.0 + 11.8 Γ 4.6 β 15.59
= 1.95 + 54.28 β 15.59
= 40.64 β grade 40+ (post-graduate+)
A grade level of 8.0 means an 8th grader (age ~13β14) should comprehend it. Most web content guidelines recommend grade 7β9.
Gunning Fog Index
Robert Gunning's Fog Index (1952) takes a different approach β it counts complex words (3+ syllables, excluding proper nouns, compound words, and common suffixes):
Fog = 0.4 Γ ((words/sentences) + 100 Γ (complex_words/words))
Example: "The cat sat on the mat. It was happy."
- Words: 10, Sentences: 2, Complex words: 0
- Fog = 0.4 Γ ((10/2) + 100 Γ (0/10)) = 0.4 Γ 5 = 2.0
The Fog Index roughly corresponds to years of education needed. A Fog of 12 = high school senior level. The Economist averages ~11; academic papers often exceed 16.
SMOG Index
McLaughlin's SMOG (Simple Measure of Gobbledygook, 1969) focuses purely on polysyllabic words:
SMOG = 1.043 Γ β(polysyllables Γ (30/sentences)) + 3.1291
It's specifically calibrated for 30-sentence samples. Fewer sentences? The formula still works but accuracy drops. SMOG tends to score 1β2 grades higher than Flesch-Kincaid for the same text β it's the "strict" grader.
The Hard Part: Counting Syllables
All these formulas depend on syllable counts, but English syllabification is notoriously irregular. Production implementations use heuristic algorithms:
import re
def count_syllables(word: str) -> int:
"""Heuristic syllable counter. Accurate ~90% of the time."""
word = word.lower().strip()
if not word:
return 0
if len(word) <= 3:
return 1
# Remove silent 'e' at end
word = re.sub(r'e$', '', word)
# Remove 'es', 'ed' endings (usually silent)
word = re.sub(r'(es|ed)$', '', word)
# Count vowel groups
vowels = re.findall(r'[aeiouy]+', word)
count = len(vowels)
# Adjustments
if word.endswith('le') and len(word) > 2 and word[-3] not in 'aeiouy':
count += 1 # 'table' = 2, not 1
return max(1, count)
# Test
for w in ["cat", "implementation", "the", "beautiful", "queue"]:
print(f"{w}: {count_syllables(w)}")
# cat: 1, implementation: 5, the: 1, beautiful: 3, queue: 1
Edge cases that break naive counters: "queue" (1 syllable, 4 vowels), "rhythm" (2 syllables, 0 standard vowels β the 'y' counts), "business" (2 syllables, not 3). Dictionary-based approaches (like the CMU Pronouncing Dictionary) are more accurate but require a 130,000-word lookup table.
Complete Readability Calculator
function fleschKincaid(text) {
const sentences = text.split(/[.!?]+/).filter(s => s.trim().length > 0);
const words = text.match(/\b[\w']+\b/g) || [];
const syllables = words.reduce((sum, w) => sum + countSyllables(w), 0);
const wps = words.length / Math.max(1, sentences.length); // words per sentence
const spw = syllables / Math.max(1, words.length); // syllables per word
const readingEase = 206.835 - 1.015 * wps - 84.6 * spw;
const gradeLevel = 0.39 * wps + 11.8 * spw - 15.59;
return {
words: words.length,
sentences: sentences.length,
syllables,
readingEase: Math.round(readingEase * 10) / 10,
gradeLevel: Math.round(gradeLevel * 10) / 10,
};
}
console.log(fleschKincaid("The cat sat on the mat. It was a happy cat."));
// { words: 11, sentences: 2, syllables: 12,
// readingEase: 109.3, gradeLevel: -0.6 }
Limitations (What Scores Don't Tell You)
Readability formulas are useful but crude. They don't measure:
- Coherence: "Colorless green ideas sleep furiously" scores as easy (short words, short sentences) but is nonsense. (Chomsky's famous example.)
- Domain knowledge: "The mitochondria is the powerhouse of the cell" is "difficult" by syllable count but trivial for a biology student.
- Layout and formatting: bullet points, headings, and white space dramatically affect real readability but don't change the score.
- Cultural context: idioms and references that are easy for one audience are opaque to another.
Use scores as a rough gauge, not a target to game. Writing to hit "grade 8.0" by mechanically shortening sentences produces stilted prose. Better: write naturally, check the score, and revise if it's wildly off from your target audience.
SEO Writing: Practical Guidelines
For web content targeting a general audience:
- Aim for Flesch Reading Ease 60β70 (grade 7β9). This covers the broadest audience without sounding simplistic.
- Sentences under 20 words on average. Vary length for rhythm β all short sentences sound robotic.
- Prefer Anglo-Saxon words over Latinate ones: "use" not "utilize," "help" not "facilitate," "start" not "commence."
- One idea per sentence. If you need a semicolon, consider splitting.
- Active voice tends to produce shorter, clearer sentences (though passive has its place).
Google doesn't directly use readability scores as a ranking factor, but user engagement metrics (bounce rate, time on page, scroll depth) correlate strongly with readability. Content people can actually read performs better.
Try It
Want to check your content's readability right now? DailyToolbox's free readability analyzer runs entirely in your browser: paste your text and get instant Flesch-Kincaid grade level, reading ease score, word count, sentence count, and estimated reading time. Pair it with the word counter for quick content audits.
π Try the Readability Analyzer β
FAQ
What's a good Flesch-Kincaid score for a blog post?
Grade 7β9 (Reading Ease 60β70) for general audiences. Technical blogs can go higher (grade 10β12) if the audience is specialized, but even expert readers prefer clear writing. The New York Times averages around grade 10; Reader's Digest targets grade 8.
Why do different tools give different readability scores?
Syllable counting is heuristic. Different implementations handle edge cases (silent 'e', 'y' as vowel, compound words) differently. Sentence splitting also varies (how to handle "Dr.", "e.g.", decimal numbers). Expect Β±1 grade level variation between tools β that's normal.
Do readability scores work for non-English text?
Not reliably. The formulas were calibrated on English. Some adaptations exist (FernΓ‘ndez Huerta for Spanish, LIX for Swedish/Danish), but you can't just run English Flesch-Kincaid on French text and trust the result. Syllable structures and sentence patterns differ fundamentally across languages.
Should I dumb down my writing to hit a target score?
No. Write for your audience first, then check the score as a sanity check. If you're writing for PhD researchers and score grade 16, that's fine. If you're writing a consumer guide and score grade 16, simplify. The score is a diagnostic tool, not a writing instructor.