Word Counter
Paste or type your text to get instant word count, character count (with and without spaces), sentence count, paragraph count, and estimated reading time. Runs entirely in your browser.
Updated July 11, 2026
100% Private & Secure
This tool runs in your browser.
Your data is never uploaded or stored.
How to use
- 1
Paste or type your text into the input area.
- 2
View the statistics update in real time.
- 3
Use Copy or Clear as needed.
When to use it
Hitting a word limit for an essay or abstract
Most submission systems — grant abstracts, conference papers, college essays — cap text at a word count. Paste your draft to see the live count and trim precisely to fit.
Estimating reading time for a blog post
At an average of 200–250 words per minute, a 2,000-word article reads in roughly 8–10 minutes. Displaying the estimate up front sets reader expectations and improves engagement.
Writing SEO meta descriptions and titles
Google typically truncates meta descriptions around 155–160 characters and titles near 60. Counting characters (with and without spaces) before publishing prevents truncation in search results.
Checking character count for tweets and SMS
SMS segments at 160 characters and a single tweet caps at 280. A live counter shows where the break falls and whether your message fits in one segment.
How it works
What actually counts as a "word"
For English and most space-delimited scripts, a "word" is a run of non-whitespace characters — text.split(/\s+/).filter(Boolean).length in JavaScript. This handles "hello world" as 2 words and "word-count" as 1.
The picture gets harder for scripts that do not separate words with spaces. Chinese, Japanese, Thai, and Khmer run characters together; a naive whitespace split reports the whole paragraph as one word. The Unicode standard addresses this in UAX #29 — Text Segmentation, which defines word boundaries using per-character properties (ALetter, Numeric, MidLetter, and so on). UAX #29 treats each CJK ideograph as its own word by default; real linguistic segmentation needs a dictionary-based tokenizer like jieba or ICU BreakIterator.
- Whitespace split — fast, correct for Latin/Cyrillic/Greek scripts
- UAX #29 word boundaries — locale-aware, handles apostrophes and contractions like "don't"
- CJK — each character is one word under UAX #29; dictionary tokenizers go further
Characters vs bytes — why UTF-8 breaks naive counts
A "character count" usually means UTF-16 code units (JavaScript's string.length) or Unicode code points. A byte count, by contrast, is how many octets the text occupies when encoded — and UTF-8 is variable-width: ASCII is 1 byte, Latin-1 ranges 1–2, most CJK characters are 3, and emoji are 4.
The gap matters in practice. The string "café" is 4 characters and 5 UTF-8 bytes; "🚀" is 2 code units in JavaScript (a surrogate pair), 1 code point, and 4 bytes. Database column limits, URL length caps, and SMS billing all count bytes, not characters.
"café".length // 4 (code units)
Buffer.byteLength("café") // 5 (UTF-8 bytes)
"🚀".length // 2 (surrogate pair)
[..."🚀"].length // 1 (code point, via iterator) Reading-time estimates and their assumptions
The common estimate of 200–250 words per minute comes from reading-speed studies on English prose; 238 wpm is a frequently cited average for silent reading of non-technical text. For technical content dense with code or formulas, drop to 100–150 wpm.
The estimate is a rough projection, not a measurement. It assumes adult readers, familiar vocabulary, and continuous reading without re-skimming. It is useful for setting expectations on a blog index, but treat any single number as a range — most tools pick 200 (conservative) or 225 (middle).
Common mistakes & edge cases
A Chinese paragraph counts as 1 word
A whitespace split does not work for CJK. Use a UAX #29 word segmenter or a language-specific tokenizer (jieba, MeCab, ICU BreakIterator) to get an accurate count.
The count disagrees with Microsoft Word or Google Docs
Word and Docs apply slightly different rules — they count hyphenated words as one, sometimes split on em-dashes. Pick one definition (usually whitespace-split tokens) and document it.
Emoji or accented characters throw off the count
You are likely counting UTF-16 code units. For "characters" use code points ([...str].length); for storage size use UTF-8 bytes (new TextEncoder().encode(str).length).
The reading-time estimate feels off for technical content
The 200–250 wpm figure assumes prose. Code-heavy or academic text reads slower; lower the rate to 120–150 wpm for those audiences.
Frequently Asked Questions
How is the reading time calculated?
Does this tool count words in all languages?
Is my text stored or sent anywhere?
References & further reading
Related reading
Word count and reading time: why they matter for SEO and UX
There's no magic word count for ranking, but title length, description length, and reading time all shape clicks and dwell. Here's what to measure.
A Markdown reference for READMEs and docs
Headings, code blocks, tables, task lists, and the syntax that renders cleanly on GitHub — with examples you can paste.