Skip to content

SMOG Index

G. Harry McLaughlin developed SMOG (Simple Measure of Gobbledygook) in 1969 as a faster, more reliable alternative to the Flesch-Kincaid formula for health and educational materials. It counts words with three or more syllables across a 30-sentence sample and returns a US grade level.

OutputUS grade level
Best forHealth communications, patient materials, public health documents
Methodr.smog()
What it countsPolysyllabic words (3+ syllables) in a 30-sentence sample
Minimum text30 sentences (hard requirement)
  • You are writing or reviewing health communications: patient instructions, consent forms, public health campaigns, or cancer screening materials. The National Cancer Institute and Harvard T.H. Chan School of Public Health both recommend SMOG for assessing health literacy materials.
  • You need to ensure that text is accessible to the lowest-literacy readers in your audience, not just most readers. SMOG’s 100% comprehension target makes it conservative — a good property when the stakes are high.
  • You are working with documents that have clear sentence structure and at least 30 sentences. SMOG is reliable only within that range.
  • You want a formula that is robust to sentence length manipulation. Because SMOG counts polysyllabic words rather than averaging syllables, it is harder to game with sentence-length tricks than Flesch or Flesch-Kincaid.

SMOG selects 30 sentences from the text: the first 10, 10 from the middle, and the last 10. It then counts every word with three or more syllables in that sample and applies:

score = 1.0430 × √(30 × polysyllabic words / sentences) + 3.1291

The result is a grade level. A score of 9 means the text requires a 9th-grade reading level for full comprehension.

McLaughlin’s key insight was that counting polysyllabic words in a fixed sentence sample captures the combined effect of word complexity and sentence length without needing multiplication. The formula is simple to apply by hand — which was important for its original use in clinical and public health settings before computers were widespread.

SMOG returns a grade level directly. Grade 12 means high school level; grade 9 means middle-high school level.

SMOG ScoreGrade LevelReading Context
5–6Grades 5–6Elementary school
7–8Grades 7–8Middle school
9–10Grades 9–10Early high school
11–12Grades 11–12Late high school
13+College+Post-secondary

Health literacy guidelines generally recommend a target of grade 6–8 for patient-facing materials. If SMOG returns grade 10 or higher, the text is likely too complex for a general patient population.

r.smog() returns a SmogResult object:

FieldTypeDescription
scorefloatRaw SMOG score (grade level as a float)
grade_levelslist[str]Grade level rounded to nearest integer, e.g. ["9"]
grade_levelstrThe primary grade level (first item in grade_levels)

SMOG requires at least 30 sentences. By default, passing fewer raises a ValueError.

# Fewer than 30 sentences — raises ValueError by default
r = Readability(short_text)
r.smog() # ValueError: SMOG requires at least 30 sentences. 12 found.
# Use ignore_length=True to get a best-effort score with a warning instead
r.smog(ignore_length=True) # UserWarning + score computed on available sentences
# Use all_sentences=True to score the full text instead of the 30-sentence sample
r.smog(all_sentences=True)
  • 30-sentence minimum is a hard constraint for reliable results. Short documents, executive summaries, and web copy rarely have 30 sentences. For shorter texts, use Flesch-Kincaid or ARI.
  • SMOG scores higher than other metrics by design — this surprises users. A text that scores grade 8 on Flesch-Kincaid may score grade 11–12 on SMOG. Neither score is wrong; they measure different things (75% vs. 100% comprehension).
  • Polysyllabic word counting can be fooled. Proper nouns (“Philadelphia”, “Connecticut”), technical abbreviations read aloud (“API” → “A-P-I”), and common long words (“beautiful”, “interesting”) all count as polysyllabic even when readers find them perfectly easy.
  • Prose only. Like all formula-based metrics, SMOG assumes running sentences. It is not valid for tables, lists, or structured forms.
from readscore import Readability
# This text is long enough to meet the 30-sentence minimum
text = """
Adults with low health literacy are more likely to be hospitalized and less likely to
follow treatment plans. Plain language can help. When patients understand their
instructions, they take their medication correctly. They keep their follow-up
appointments. They recognize warning signs earlier.
Writing at a lower reading level does not mean writing less information. It means
organizing information clearly and using words that most people know. Short sentences
help, but they are not enough on their own. Choosing common words matters more.
A patient who reads at grade 6 can still understand complex ideas. What they need is
for those ideas to be expressed in words they recognize. The goal is not to simplify
the concept — it is to make the language match the reader.
Health writers often underestimate how hard their text is to read. They are experts
in their field, and expert language feels natural to them. Running a SMOG check is
a simple way to find out whether the text works for the intended audience. A target
of grade 6 to 8 is appropriate for most patient-facing health materials. Materials
above grade 10 should be revised before distribution to a general patient population.
Consent forms, discharge instructions, and medication guides are all high-stakes
documents where readability directly affects patient safety.
"""
r = Readability(text)
result = r.smog()
print(f"Score: {result.score:.1f}") # Score: ~9.2
print(f"Grade: {result.grade_levels}") # ['9']
  • Flesch-Kincaid Grade Level — targets 75% comprehension; scores lower than SMOG on the same text
  • Gunning Fog — also counts polysyllabic words but uses a different sample and weighting scheme
  • Choosing a Metric — includes an explanation of why SMOG and Flesch-Kincaid scores are not directly comparable