Analyze text complexity, readability, and detailed statistics
Get a detailed statistical breakdown of any text: character frequencies, letter distribution, whitespace ratios, and more. Goes deeper than a basic word counter by analyzing the composition of your text at the character level.
Initializing in your browser…
Extract text from images using advanced OCR. Supports 18+ languages, page segmentation modes, confidence scores, and multi-format export.
Count words, characters, paragraphs, sentences with reading time, speaking time, readability scores (Flesch, Gunning Fog), and word frequency analysis
Convert text between 12 cases: UPPERCASE, lowercase, Title Case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, Sentence, and Alternating
You are editing copy for a general audience and want to know if the reading level is too high.
Text
A 600-word product explainer draft
Analysis
Flesch Reading Ease: 52 (fairly difficult) Grade level: 10.4 Avg sentence: 22 words Passive voice: 18% Longest sentence flagged for splitting
Readability formulas estimate effort from sentence length and syllable counts; a grade level of 10+ is a warning for general audiences. Surfacing passive-voice ratio and the worst offending sentence turns "this feels dense" into specific, actionable edits.
Get a detailed statistical breakdown of any text: character frequencies, letter distribution, whitespace ratios, and more. Goes deeper than a basic word counter by analyzing the composition of your text at the character level.
The Text Statistics Analyzer computes its core metrics with plain regex splitting rather than any NLP library: words are split on whitespace (/\s+/), sentences on the terminator class /[.!?]+/, paragraphs on blank-line gaps (/\n\n+/), and lines on /\n/ - each list is filtered to drop empty/whitespace-only entries, so trailing newlines and stray spaces never inflate the counts. From those it derives average word length (total characters across words ÷ word count, shown to two decimals), average sentence length in words (words ÷ sentences, one decimal), and the single longest word via a reduce. Characters are reported both raw (text.length, which includes spaces and newlines) and with all whitespace stripped (replace(/\s/g,'')). Note the consequences of these simple rules: an abbreviation like 'Dr.' or a decimal like '3.14' splits as if it ended a sentence, and a bulleted or single-line list with no period registers as one long sentence - worth knowing before reading the readability number too literally.
Readability uses the standard Flesch Reading Ease formula, 206.835 - 1.015 × (words/sentences) - 84.6 × (syllables/word), displayed to one decimal on a 0-100 scale where higher means easier. Syllables come from an in-tool heuristic, not a dictionary: each word is lowercased and stripped to a-z, words of 3 letters or fewer are assigned exactly 1 syllable, otherwise it counts groups of consecutive vowels (the vowel set is 'aeiouy', so y always counts), subtracts one for a silent trailing 'e', and clamps the result to a minimum of 1. This means 'the' and 'cat' each score 1, a word like 'queue' is undercounted, and any text with zero detected sentences yields a score of 0. The numeric score maps to labelled grade bands: ≥90 Very Easy (5th grade), ≥80 Easy (6th), ≥70 Fairly Easy (7th), ≥60 Standard (8th-9th), ≥50 Fairly Difficult (10th-12th), ≥30 Difficult (College), ≥0 Very Difficult (Professional), and below 0 Extremely Difficult.
Two timing estimates are derived directly from the word count using fixed rates: reading time at 200 words per minute and speaking time at the slower 130 wpm, formatted as whole seconds under one minute or as 'Xm Ys' above it. Everything runs in a single useMemo over the textarea contents, so results update live as you type with no upload, no API call, and no persistence - the only built-in content is the 'Load Sample' button, which inserts a fixed three-paragraph passage built around the 'quick brown fox' pangram for trying the metrics out. The tool deliberately stops at counts, averages, timing, and Flesch readability; it does not perform letter-frequency analysis, keyword density, or word-frequency ranking, so for word-level frequency work the separate word-counter tool is the better fit.
The Load Sample button fills the box with a fixed three-paragraph passage opening 'The quick brown fox jumps over the lazy dog...', letting you immediately see counts, averages, the Flesch score and its grade band populate.
Paste five bullet lines with no periods and the sentence splitter (/[.!?]+/) finds one sentence, so words/sentences becomes large and the Flesch Reading Ease drops sharply - illustrating that the readability metric depends entirely on punctuation being present.
The word counter focuses on word-level metrics and readability scores. Text statistics dives into character-level analysis, letter frequencies, punctuation ratios, and composition breakdowns.
Character frequency analysis is a classic first step in breaking simple ciphers. This tool gives you the frequency distribution you would need for that kind of analysis.
Your text is processed locally in the browser. Nothing you paste or open is transmitted or logged.