Give it an EPUB or a text file and it reports a Flesch-Kincaid grade, a
reading-ease score, vocabulary richness, the most frequent words, and a coverage
curve: how many distinct words you need to know to follow most of the book. The
browser's own DecompressionStream unzips the EPUB, so the file never
leaves your device.
On the bundled Alice's Adventures in Wonderland it returns grade 5.9 and
reading ease 82, and shows that 1,397 of the book's 2,637 distinct words cover 95%
of its 26,715 words.
No automated test suite. This page reruns the tool's scoring code on the sample each time it loads and draws the coverage curve from that run.
Limits
English only; Flesch-Kincaid sees only sentence and word length; coverage counts word forms, not families.
The tool's own formula and syllable heuristic, copied from index.html:
grade = 0.39 × (words per sentence) + 11.8 × (syllables per word) − 15.59. The
opening of Alice is two sentences of 113 words between them, which scores
grade 22.3 against the whole book's 5.9. Split them up and watch it fall.
The coverage curve
1,397 words cover 95% of Alice
A grade level squeezes a book into one figure that a learner can't do much with.
The coverage curve asks how much vocabulary you need before the book stops being a
slog, and gives a word count you can work toward.
For the bundled Alice's Adventures in Wonderland, 58 distinct words
already cover half the text and the top 100 carry 59%.
Loading the sample…
Computed in your browser when the page loads: the tool's
analyze() run on sample-alice-in-wonderland.txt from the repo.
Word forms, not families, so "said" and "say" count separately.
58words cover 50%
385cover 80%
1,397cover 95%
2,103cover 98%
I measured the same steep-then-flat shape across a season of television in the
Love Island lexical analysis.
That study needed a Python pipeline; this tool puts the measurement in a web page
that works on any book.
How it works
An EPUB is a ZIP, and browsers can unzip
Every EPUB is a ZIP archive of XHTML files. Reading one in a web page usually
means bundling a JavaScript unzip library, and analyzing a book usually means
sending it to a server. This tool does neither.
A ZIP reader of about 30 lines finds the central directory, then inflates each
chapter with
DecompressionStream('deflate-raw').
The browser's DOMParser extracts the text, and the scoring runs in the
same page. The only network call loads the bundled sample, so the privacy claim
can be checked by reading the source.
The tool's result for the sample, captured 2026-10-28.
Index of frequent words, Alice's Adventures in Wonderland
The tool's top-20 list for the sample after stopwords, in rank order, with counts.
On a phone
It works at 390 pixels
The drop zone doubles as a file picker on touch devices, and the bundled sample
lets someone try the tool in one tap without finding an EPUB first. The charts
take their colors from the page, so they follow the phone's light or dark mode.
The sample result at 390px wide.
Limitations
Readability formulas are crude
Flesch-Kincaid uses sentence length and syllables per word, nothing else. It
can't tell whether the ideas are hard or the vocabulary archaic, so a book of
short sentences about difficult things scores as easy. The syllable count is a
vowel-group heuristic, and it miscounts some words.
Type-token ratio falls as texts get longer, which makes a comparison between a
novella and a long novel unfair, and the tool does not correct for length.
The coverage curve counts word forms, so "run", "running" and "ran" are three
words, and its counts come out higher than the word-family figures used in
language-teaching research. Only English is handled; the tokenizer keeps the
letters a to z.
Built on
One HTML file, no dependencies
Unzipping
A hand-written ZIP central-directory reader and native DecompressionStream
Text
The browser's DOMParser over the archive's XHTML files, in filename order
Charts
Drawn on <canvas> without a charting library, colored from the page's CSS variables
Accepts
.epub and plain text
Sample
Alice's Adventures in Wonderland, Project Gutenberg, public domain
Privacy
Everything runs on your device; there is no server, upload or analytics