# Reading Level Calculator

> Counts the words, sentences, syllables and letters of an English text and computes five readability scores (Flesch Reading Ease, Flesch–Kincaid grade, Gunning fog index, Coleman–Liau index, Automated Readability Index) plus their average US grade level.

- Calculator id: `reading-level` · Category: Everyday Life (`everyday`) · Tool name: `estimate_reading_level`
- Canonical page: https://tttkmbb.com/everyday/reading-level · This document: https://tttkmbb.com/everyday/reading-level.md · JSON definition: https://tttkmbb.com/everyday/reading-level.json

## Purpose

Counts the words, sentences, syllables and letters of an English text and computes five readability scores (Flesch Reading Ease, Flesch–Kincaid grade, Gunning fog index, Coleman–Liau index, Automated Readability Index) plus their average US grade level.

**Use when:** You want to know how hard a passage is to read, which school grade it targets, or need to compare drafts for plain-language editing.

**Do not use when:** The text is not English (syllable and formula constants are English-specific), is under about 100 words (scores are unstable), or you only need reading time (use reading-time).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `text` | string |  | required | The passage to analyse (up to 20,000 characters). Sentences end at . ! or ? followed by a space. |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `word_count` | integer |  | Whitespace-separated tokens containing a letter or digit. |
| `sentence_count` | integer |  | Segments ending in . ! or ? (minimum 1). |
| `syllable_count` | integer |  | Estimated with a vowel-group heuristic. |
| `complex_word_count` | integer |  | Words with three or more syllables (Gunning fog). |
| `words_per_sentence` | number |  | word_count / sentence_count. |
| `syllables_per_word` | number |  | syllable_count / word_count. |
| `flesch_reading_ease` | number |  | 0–100 scale; higher is easier (60–70 is plain English). |
| `flesch_reading_ease_label` | string |  | Flesch's descriptive band for the score. |
| `flesch_kincaid_grade` | number |  | US school grade level. |
| `gunning_fog` | number |  | Years of formal education needed. |
| `coleman_liau` | number |  | Grade level from letters and sentences per 100 words. |
| `ari` | number |  | Grade level from characters per word and words per sentence. |
| `average_grade` | number |  | Mean of the four grade-level indices. |
| `audience` | string |  | Schooling band for the average grade. |

## Formula

`FRE = 206.835 − 1.015 × (words / sentences) − 84.6 × (syllables / words); FK grade = 0.39 × (words / sentences) + 11.8 × (syllables / words) − 15.59; Fog = 0.4 × [(words / sentences) + 100 × (complex_words / words)]; Coleman–Liau = 0.0588 × L − 0.296 × S − 15.8 with L = letters per 100 words and S = sentences per 100 words; ARI = 4.71 × (letters + digits) / words + 0.5 × words / sentences − 21.43; average_grade = mean(FK, Fog, Coleman–Liau, ARI)`

Syllables are estimated by counting vowel groups (a, e, i, o, u, y) and subtracting a silent final -e, -ed or -es under common spelling rules; complex words are simply those with three or more estimated syllables (the strict fog definition also excludes proper nouns and compound words). Expect ±1 grade versus manual counts.

## Data Sources

- Flesch–Kincaid readability tests (Wikipedia) — https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests (reference, retrieved 2026-09-24)
- Gunning fog index (Wikipedia) — https://en.wikipedia.org/wiki/Gunning_fog_index (reference, retrieved 2026-09-24)
- Coleman–Liau index and Automated readability index (Wikipedia) — https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index (reference, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/reading-level?text=…`
- `POST https://tttkmbb.com/api/v1/calculate/reading-level` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/reading-level · OpenAPI operationId `estimate_reading_level` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "reading-level", "inputs": {…}}`

## Example

- Two simple sentences (18 words, 23 syllables): inputs `{"text":"The cat sat on the mat. It was a sunny day and the children played outside until dinner."}` → `{"word_count":18,"sentence_count":2,"syllable_count":23,"complex_word_count":0,"words_per_sentence":9,"syllables_per_word":1.278,"flesch_reading_ease":89.6,"flesch_reading_ease_label":"Easy","flesch_kincaid_grade":3,"gunning_fog":3.6,"coleman_liau":3.45,"ari":1.13,"average_grade":2.79,"audience":"Elementary school"}`
- Two technical sentences (22 words, 45 syllables): inputs `{"text":"Readability formulas estimate the education level needed to understand a document. They rely on sentence length and syllable counts rather than meaning."}` → `{"word_count":22,"sentence_count":2,"syllable_count":45,"complex_word_count":7,"flesch_reading_ease":22.62,"flesch_reading_ease_label":"Very difficult","flesch_kincaid_grade":12.84,"gunning_fog":17.13,"coleman_liau":15.99,"ari":11.69,"average_grade":14.41,"audience":"College"}`

```
GET https://tttkmbb.com/api/v1/calculate/reading-level?text=The+cat+sat+on+the+mat.+It+was+a+sunny+day+and+the+children+played+outside+until+dinner.
```

## Limitations

The text is not English (syllable and formula constants are English-specific), is under about 100 words (scores are unstable), or you only need reading time (use reading-time). Syllables are estimated by counting vowel groups (a, e, i, o, u, y) and subtracting a silent final -e, -ed or -es under common spelling rules; complex words are simply those with three or more estimated syllables (the strict fog definition also excludes proper nouns and compound words). Expect ±1 grade versus manual counts. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why do the indices disagree?**

They weight different proxies: Flesch–Kincaid and fog use syllables, Coleman–Liau and ARI use letters per word. Differences of 2–3 grades on short texts are normal; the average is a fairer single figure.

**What score should I aim for?**

Plain-language guidance for the general public is Flesch Reading Ease 60 or higher and grade 8 or below; legal and academic texts often score 30–50 (college level).

**Do abbreviations break sentence counting?**

Yes: 'e.g. ' or 'Dr. ' followed by a space ends a sentence. Remove the periods from abbreviations for an accurate count.

## Related

- [Reading Time Calculator](https://tttkmbb.com/everyday/reading-time.md) — How long the same text takes to read.
- [Typing Speed Calculator](https://tttkmbb.com/everyday/typing-speed.md) — Words per minute for typing.
