| Word | Count | Copy |
|---|---|---|
| {{ item.word }} | {{ item.count }} |
| N-gram | Count | Copy |
|---|---|---|
| {{ g.token }} | {{ g.count }} |
Word count is often the first requirement a draft has to satisfy, but the raw total rarely tells the whole story. A cover letter can fit the limit and still repeat the same selling point in every paragraph. A short blog post can look tidy while hiding long, dense sentences. A list of bullets can look simple even though readability scores stop being useful the moment the text stops behaving like ordinary prose.
This page breaks that problem into several views at once. It counts words, unique words, characters, sentences, paragraphs, and lines. It also surfaces repeated words and short phrases, estimates reading and speaking time, calculates Flesch Reading Ease and Flesch-Kincaid Grade Level, and plots three quick charts so you can see where repetition or uneven structure is coming from instead of guessing.
You can paste text directly or drop a plain-text file, then move between the summary badges, tables, charts, and JSON export depending on what you need. That makes the page useful for assignment checks, editorial cleanup, resume trimming, headline review, keyword-heavy copy audits, or side-by-side draft comparisons where you want a stable numeric baseline before you revise again.
The calculations themselves run in the browser, which is good for speed and keeps the analysis on your device. There is still one privacy detail to keep in mind: the page is wired to keep the current text in the address bar parameters. That means sensitive passages can still leak through browser history, copied links, screenshots, or shared URLs even though the counting logic does not need a server round trip.
The page starts by turning your input into a token stream. Word tokens can include letters, accented characters, apostrophes, and internal hyphens. Numeric strings are included only when Include numbers is on. After that, the page can lowercase tokens, remove accents, drop common English stop-words, and ignore tokens shorter than the selected minimum length. Frequency tables, unique-word counts, and n-grams are all built from that processed token list, so the settings can change the totals in meaningful ways.
Structural counts follow simpler rules. Sentences are split whenever the text hits a period, exclamation mark, or question mark. Paragraphs are split on blank lines, and lines are split on newline characters. That makes the counts easy to reproduce, but it also explains why decimals, abbreviations, headlines, and bullet fragments can distort the sentence total and, by extension, the readability estimates that depend on it.
The headline metrics layer on top of those counts. Average Word Length is based on processed tokens. Average Sentence Length is words per detected sentence. Estimated reading and speaking time use fixed speeds of 200 and 125 words per minute. The field labeled Lexical Density is calculated here as Unique Words / Words. In language research, lexical density usually means the share of content words rather than this type-token style ratio, so the value on this page is best treated as a quick vocabulary-variety signal rather than a formal density measure.
Flesch Reading Ease and Flesch-Kincaid Grade Level both depend on average sentence length and estimated syllables per word. The page uses a simple syllable heuristic, so the scores work best on plain prose and become less trustworthy on lists, heavily abbreviated text, or punctuation that does not reflect full sentences.
| Setting | What it changes | When it helps |
|---|---|---|
Case sensitive |
Treats uppercase and lowercase forms as different tokens. | Useful when capitalization itself carries meaning, such as product names or acronyms. |
Include numbers |
Lets values such as years, quantities, and decimals enter the token stream. | Useful for reports, technical notes, and data-heavy copy. |
Remove stop-words |
Drops a fixed English stop-word list before frequency and n-gram counts. | Useful when you want recurring themes rather than grammar words. |
Normalize accents |
Folds accented letters to base forms, such as café becoming cafe. | Useful when you are comparing spelling variants across drafts or sources. |
Min word length |
Ignores tokens shorter than the selected length. | Useful for trimming one-letter noise and short fragments. |
N-gram size and N-grams across sentences |
Switches between single words, bigrams, and trigrams, and controls whether phrases can cross sentence boundaries. | Useful for repeated slogans, boilerplate phrasing, and template language. |
| Result view | What you get | Available exports |
|---|---|---|
Statistics |
Headline counts, averages, readability values, and time estimates. | Copy CSV, download CSV, export DOCX. |
Word Frequency |
Top repeated processed tokens. | Copy CSV, download CSV, export DOCX, copy individual rows. |
N-grams |
Top repeated 1-word, 2-word, or 3-word sequences. | Copy CSV, download CSV, export DOCX, copy individual rows. |
| Chart tabs | Top-word counts, word-length distribution, and sentence-length distribution. | Download PNG, WebP, JPEG, or CSV. |
JSON |
Inputs, summary stats, full frequency lists, top lists, and both histograms. | Copy JSON or download the full payload. |
The best way to use a word counter is to start with a baseline run before you change any filters. Paste the draft, leave case sensitivity off, keep the minimum length at 1, and look first at Words, Unique Words, Sentences, and the top rows in Word Frequency. That gives you a stable first picture of length and repetition.
Then move from the problem you are trying to solve instead of turning switches at random. If the draft feels repetitive, check Word Frequency and then move to N-grams. If it feels uneven, use the word-length and sentence-length charts. If the text includes dates, measurements, or catalog numbers, keep numbers included. If you are reviewing prose for clarity, turn numbers off only when they are noise. If your source mixes accented and unaccented spellings, normalize accents before you compare drafts.
Comparisons are only fair when the settings stay fixed. A revised paragraph may appear cleaner simply because you removed stop-words, changed the minimum length, or stopped counting numeric tokens. If you want version-to-version evidence, keep the same settings, punctuation style, and text type across both runs. Otherwise the differences can come from the counting rules rather than from the writing itself.
The Lexical Density row deserves extra caution. On this page it is a unique-word ratio, so short passages often look artificially high and long passages naturally drift lower as repetition accumulates. That does not make the number useless. It does mean you should read it beside the frequency table instead of treating it as a stand-alone quality score.
Statistics and check the structural counts first. If the sentence or paragraph totals already look wrong, fix punctuation or line breaks before you trust the later metrics.Word Frequency for the repeated terms that dominate the draft. Increase Show top N words only if the first screen is not enough.N-grams and raise N-gram size to 2 or 3 when the problem is repeated phrasing rather than repeated single words.The first question is usually not "Is the readability score good?" but "What changed in the writing?" Start with length and repetition. A lower word count with the same repeated vocabulary often means the draft got shorter without becoming clearer. A similar word count with a broader spread in the frequency table usually means the language became less repetitive. The chart tabs help confirm that by showing whether the text is dominated by a few common word lengths or a few unusually long sentences.
Readability figures are useful, but only in the right setting. Flesch Reading Ease is generally easier to understand when the score is higher, while Flesch-Kincaid Grade Level maps the text to an approximate U.S. school grade. Both are mechanical estimates built from word and sentence patterns. They can support revision, but they are not a substitute for audience knowledge, topic knowledge, or plain-language editing.
| Flesch Reading Ease | Common interpretation | How to use it here |
|---|---|---|
| 90 to 100 | Very easy | Often seen in very short, plain sentences. Verify that the sentence count is sensible before celebrating the number. |
| 60 to 70 | Standard plain prose | A useful target range for many general-audience passages, provided the text is genuine prose. |
| 30 to 50 | Fairly hard to difficult | Check for long sentences, dense noun phrases, or many multi-syllable terms. |
| 0 to 30 | Very difficult | Often worth revising, but first confirm that punctuation, abbreviations, or list formatting did not distort the sentence count. |
The same caution applies to the page's Lexical Density label. Because it is really a type-token style ratio, it drops as texts get longer and repeated vocabulary builds up. That makes it useful for quick within-tool comparison, but weak as an absolute "good writing" score. Compare it only across texts of similar length and genre, and always read it alongside the top repeated words.
When a result looks surprising, the fastest diagnosis is simple. Check sentence count, inspect the top repeated tokens, and then review the settings that shaped the token stream. Most odd outputs come from punctuation, very short inputs, or a filter that changed the token set more than you expected.
Start with the built-in example: The quick brown fox jumps over the lazy dog. The quick brown fox jumps again. With the default settings, the page returns Words = 15, Unique Words = 9, and Sentences = 2. That is enough to show the value of the frequency views. The total is small, but the repeated core vocabulary stands out immediately because the, quick, brown, fox, and jumps all recur.
Try Cafe café cafe 2025. Cafe prices rose 3.5 percent in 2025!. With the default settings, the page returns Words = 11, Unique Words = 8, and Sentences = 3. The third sentence appears because the decimal point in 3.5 acts like sentence punctuation for this page. Turn numbers off, remove stop-words, and normalize accents, and the same text drops to Words = 7 and Unique Words = 4. That is exactly why comparisons only make sense when the settings stay fixed.
Use the text Apply now. Apply now. Apply today. With N-gram size = 2 and N-grams across sentences turned on, the page can build cross-sentence bigrams such as now apply in addition to apply now. Turn that switch off and only within-sentence bigrams remain. That is helpful when you want to know whether the page is finding repeated phrasing inside sentences or creating phrase bridges across punctuation.
The counting, readability calculations, tables, and charts all run in the browser. The important caution is the address bar: the current text is tied to page parameters, so pasted content can still be exposed through browser history, copied links, or screenshots.
The sentence splitter treats periods, exclamation marks, and question marks as boundaries. A decimal such as 3.5 or abbreviation-heavy text can therefore raise the detected sentence count and shift the readability values with it.
Lexical Density?Here it means Unique Words / Words. That makes it a quick vocabulary-variety ratio inside this page, not a full linguistic analysis of content-word density.
The upload flow is built for plain-text input. If your source starts as a PDF or word-processing file, convert it to plain text before you load it here.
Keep the same settings, the same punctuation style, and the same kind of text in both runs. Then compare the headline counts, repeated terms, and chart shape together. If you change the filters mid-comparison, the results no longer describe only the writing.
Lexical Density value behaves like this kind of measure.