Live text analysis · Explicit counting rules · Optional device drafts

Word Counter – Words, Characters & Reading Time

Check a draft’s length, explore repeated words and estimate its reading time. Compare counting modes, prepare a separate text transformation, and keep your original within reach.

Your text workshop

0 / 200,000 UTF-16 input units. No silent truncation.

Text/Markdown files · UTF-8 · up to 1 MB.

01 · Counting preferences

Whitespace mode keeps punctuation inside tokens. Unicode mode uses your browser’s language segmentation and can produce different totals.

Goal progress follows the selected counting mode. Unique-token analysis normalizes case and edge punctuation.

02 · Prepare separate output

Input stays untouched. Duplicate removal flattens spacing and line breaks. Case conversion can change acronyms, names or locale-specific spelling; review the output.

03 · Time estimates & draft

Draft saving is off. Text stays in this open page unless you copy or download it.

Type or load an example to begin. Changes update the analysis after a short pause.

Transformed output

Run a transformation to create a separate output.

0 / 600,000 UTF-16 output units. Replacement must fit the input limit.

Input statistics

Waiting for text…

Words / tokens
0
Characters · graphemes when supported
0
Characters after whitespace removal
0
Estimated sentences
0
Blank-line paragraphs
0
Non-empty lines
0
Unique normalized tokens
0
Estimated reading time
0
Estimated speaking time
0
UTF-16 units
0
Unicode code points
0
Most repeated normalized token
0

Unique tokens · alphabetical preview

Up to 20 normalized tokens. Total unique count is shown above.

Repeated tokens · frequency preview

Up to 10 of 0 repeated token types.

This tool counts and transforms literal editor text locally. It does not send your text to a processing service. Device draft saving is optional; theme preference is saved separately. Browser spellcheck, extensions and other page scripts have their own behavior. Export important text before clearing browser data.

Count and revise your text

Type, replace the input from your clipboard, or import UTF-8 .txt/.md within 1 MB and 200,000 UTF-16 units. Whitespace mode counts non-empty tokens; Unicode mode uses browser word segmentation when supported.

Characters use grapheme clusters when available; UTF-16 units and Unicode code points are separate metrics. Sentences are estimates. Paragraphs use blank-line boundaries; non-empty lines are shown separately.

Transformations create separate output. Changing the source marks that output as earlier and disables Replace Input. Undo/Redo preserves pending edits within a bounded history. Duplicate removal rejoins retained whitespace tokens with single spaces.

Draft saving is optional. Deleting stored drafts keeps the current editor text and Undo history. Refreshing removes page-only state. Reports include input, counts, list previews and labelled output.

Know what each count measures

The counting rule is part of the result.

Words or tokens

Whitespace mode counts non-empty whitespace tokens. Unicode mode counts browser word-like segments. Choose a rule before comparing totals.

Characters

Grapheme clusters reflect many visible combined characters. UTF-16 units and code points are different measures and appear separately.

Sentences

Sentence counts are estimates that include trailing text. Abbreviations, punctuation and browser language data can affect them.

Paragraphs and lines

Blank lines separate paragraphs. A single line break creates a new line within the same paragraph. Empty lines are not counted as non-empty lines.

Unique and repeated tokens

NFC normalization, lowercase and edge-punctuation removal feed the frequency map. Internal punctuation remains in whitespace mode.

Time estimates

Divide the selected word/token total by an assumed words-per-minute rate. Change those assumptions to suit your own task.

Small examples that explain the totals

These examples use whitespace mode unless stated otherwise.

InputExpected interpretationWhy it matters
one,two1 tokenUnicode mode can split punctuation boundaries.
well-known1 tokenHyphens stay inside a whitespace token.
😀1 token; 2 UTF-16 unitsGrapheme and code-point totals are separate.
ગુજરાતી શબ્દો2 tokensUnique analysis supports Unicode letters and marks.
First line + single line break + second line1 paragraph; 2 non-empty linesA blank line is needed for another paragraph.

Use the count for a specific decision

A total becomes useful when its rule matches the task.

A draft with a word limit

Set a goal and use a consistent word mode. Check the destination platform’s counting rule before submitting.

A speech or presentation

Adjust speaking pace to a rehearsal-based assumption. The result does not include pauses, questions or audience response.

A repetitive paragraph

Review the normalized repeated-token preview. Frequency is a clue for revision, not a judgment of writing quality.

A text cleanup

Create output first. Review case changes and flattened spacing before choosing Replace Input.

What the counts can and cannot tell you

No grammar, originality or accuracy score is inferred from a word count.

Included in this counter

  • Local text analysis and optional browser Unicode segmentation.
  • Separate transformations with source-state labels and bounded Undo/Redo.
  • Optional device drafts and explicit UTF-8 text exports.

Outside its scope

  • Matching every word processor or platform’s count exactly.
  • Parsing PDF/Word structure, hidden content or rendered Markdown.
  • Verifying grammar, originality, readability quality or your actual reading speed.

Questions about counting, revisions and saved drafts

Rules and limits specific to this tool.

How does whitespace word counting work?

Whitespace mode counts each non-empty token separated by whitespace. Punctuation stays inside a token: one,two and well-known each count as one. Numbers, URLs, hashtags, emoji and punctuation-only tokens can also count as tokens. This mode does not split an unspaced Chinese or Thai passage into individual words.

What does Unicode word mode do?

Where Intl.Segmenter is available, Unicode mode counts the browser’s word-like segments. It can split punctuation-separated text and some unspaced scripts differently from whitespace mode. Segmentation can vary by browser and language data; it is not guaranteed to match a word processor. Whitespace mode remains available.

How are characters and emoji counted?

The character total uses grapheme clusters when supported, so many emoji sequences and combined characters count as one cluster. A separate total removes whitespace before counting. UTF-16 units and Unicode code points are shown separately. Browsers without grapheme segmentation use a clearly labelled code-point fallback. These metrics are different measures, not interchangeable character limits.

How are sentences, paragraphs and lines counted?

Sentences are estimates from browser sentence segmentation, or a punctuation-based fallback that includes trailing text. Segments need letters or numbers to count. Paragraphs are non-empty blocks separated by blank lines; non-empty lines are counted separately. CRLF and CR line endings are normalized for paragraph and line analysis.

How do unique and repeated tokens work?

Analysis follows the chosen word mode, normalizes tokens to NFC and lowercase, and strips leading and trailing characters other than Unicode letters, marks, numbers or underscores. Internal punctuation remains in whitespace mode. Empty normalized tokens are excluded. Up to 20 unique tokens and 10 repeated tokens are shown; full totals are separate. No accent folding or language-specific case equivalence is promised.

Does removing duplicates change my input?

No. Every transformation creates separate output. Duplicate removal compares whitespace tokens and rejoins survivors with single spaces, so layout is flattened. Exact comparison is the default; optional normalized comparison follows the unique-token rules. Replace Input is available only while the output matches the current source revision and fits the input limit.

How are reading and speaking times estimated?

Time is the current word or token count divided by your chosen words-per-minute rate, rounded up to a whole second. Defaults are 225 wpm for reading and 150 wpm for speaking. These are assumptions you can edit, not measurements of your personal speed.

Where is my text saved?

Counting, transformations and file decoding run in the browser. This tool does not send editor text to a processing service. Draft saving is off by default. Enable device saving to store a draft in this browser; turning it off or deleting the saved draft removes its stored copies. Theme preference is saved separately. Other scripts on the same origin may access browser storage. Export anything important before clearing browser data.

What input and file limits apply?

Input supports up to 200,000 UTF-16 units. Files must be UTF-8 .txt or .md, no larger than 1 MB, and their decoded text must fit the input limit. Unsupported or oversized imports are rejected without replacing existing text. Direct oversized typing or pasting remains visible but pauses analysis and draft saving until corrected. No input is silently truncated. Output supports up to 600,000 units because case conversion can expand text.

How does Undo work with restored drafts?

A restored device draft becomes the initial history state. Pending edits are committed before Undo, allowing Redo to restore them. History keeps up to 30 states within a two-million-unit text budget. Programmatic replacements, imports and clipboard paste also preserve the previous valid input when it remains in history.

Why can my count differ from another editor?

Tools use different tokenization, punctuation, Unicode and document-format rules. This page analyzes literal text in its editor, including pasted markup or Markdown syntax. It does not parse Word/PDF documents, hidden text, footnotes or document structure. Use the counting rules shown here when comparing results.

What happens if I change input after making output?

The earlier output stays available for copying or downloading and is marked as belonging to an earlier input revision. Replace Input is disabled until you create fresh output. Reports also label earlier output so it is not presented as a transformation of the current input.