Word & Character Counter

Live counting as you type

{{ __t('words') }}{{ stats.words.toLocaleString() }}
{{ __t('characters') }}{{ stats.chars.toLocaleString() }}
{{ __t('chars_no_spaces') }}{{ stats.charsNoSpaces.toLocaleString() }}
{{ __t('sentences') }}{{ stats.sentences.toLocaleString() }}
{{ __t('paragraphs') }}{{ stats.paragraphs.toLocaleString() }}
{{ __t('lines') }}{{ stats.lines.toLocaleString() }}
{{ __t('reading_time') }}{{ stats.readMin }} {{ __t('min') }}
{{ __t('speaking_time') }}{{ stats.speakMin }} {{ __t('min') }}
{{ __t('top_words') }}
{{ w.word }} ({{ w.count }})

Why use a word counter?

A word counter helps you meet length requirements — tweets (280 chars), meta descriptions (155-160 chars), academic abstracts (250 words), cover letters, essays. Reading and speaking time use 225 words/min (reading) and 140 words/min (speaking), the average for English-speaking adults.

Common length limits

  • Tweet/X post: 280 chars (Premium: 25,000)
  • Google meta description: 155-160 chars
  • SEO title: 50-60 chars
  • Academic abstract: typically 150-300 words

Characters vs. graphemes: why 1 emoji isn't 1 character

What humans perceive as a single "character" is often internally a sequence of multiple code points. The Unicode standard defines three levels in UAX #29 (Unicode Text Segmentation): bytes, code points and grapheme clusters. A simple letter like A is identical at all three levels (1 byte in ASCII, 1 code point, 1 cluster). A German umlaut like u takes two bytes in UTF-8, is one code point and one cluster. An emoji like (family) is seven code points (four person emojis plus three zero-width joiners) but rendered as a single cluster and thus perceived as one character.

This discrepancy is why different counters produce different numbers for the same text. Microsoft Word counts grapheme clusters ("family" = 1), JavaScript's String.length counts UTF-16 code units ("family" = 11), Python's len() counts code points ("family" = 7). Our tool uses JavaScript's native length, which is correct for plain Latin text but may differ slightly for emojis and CJK. Anyone strictly bound to SMS limits (160 chars GSM-7, 70 chars UCS-2) or Twitter limits (280 code points) should use a grapheme-aware counter.

Word counting has similar ambiguity. Is state-of-the-art one word, three or four? Microsoft Word counts three (each hyphen-separated block), our tool counts one (each whitespace-separated block). Chinese and Japanese lack the "word" concept entirely — the text has no spaces. Our tool returns the number of whitespace blocks, which for Chinese is often 1 or 2 (not meaningful). For Asian text use the character metric instead.

How to use the counter efficiently

Typical workflow for limit-driven text:

  1. Define the limit: SMS 160, Twitter 280, meta description 155, SEO title 60.
  2. Paste the text — the counter updates in real time, no button click needed.
  3. If over limit: identify filler words (e.g. very, actually, really) and cut them first — they usually add no value.
  4. Check reading time: 200-250 words per minute is the typical adult reading average for English.
  5. Top-word list shows keyword density: does your main keyword appear in the top 5? If not, revise the text.

Typical platform limits

These limits are worth memorizing when writing for the web:

  • Twitter/X post: 280 characters (Premium: up to 25,000) — images don't count.
  • Meta description: 155-160 chars desktop, 120 mobile — Google truncates beyond that.
  • SEO title tag: 50-60 chars — beyond that a pixel-based cut around ~600 pixels width.
  • LinkedIn post: 3000 characters — but only the first 140-210 are visible in the feed.
  • SMS: 160 chars (GSM-7) or 70 (UCS-2/Unicode) — umlauts and emojis trigger the encoding switch.

Counter limits: what counting cannot see

A counter measures quantity, not quality. 1000 words may be a valuable article or pure filler — the count alone doesn't tell you. The reading time estimate is also an average: 225 words/minute is the median for English adults (source: Brysbaert 2019), but beginners read 100-150 wpm, skilled readers up to 400 wpm, and technical texts (engineering, medicine) often take twice as long. Speaking speed varies even more: news anchors run at 150-180 wpm, conversational at 120-140, podcasts at 130-150. The top-words list carries no semantic meaning either — it just shows frequency. A high count of "you" is normal in marketing text; a high count of a keyword may be helpful or penalized as keyword stuffing. Use the counter as a tool, not as a verdict.

Frequently asked questions

Why does Microsoft Word show different values than this tool?
Word counts hyphenated words like state-of-the-art as three words, we count one. Word counts grapheme clusters as 1 character, we use JavaScript's length. For plain Latin text the differences are minimal.
How is reading time calculated?
We divide word count by 225 (average adult reading speed) and round up. 450 words gives 2 minutes. This is a rough estimate — technical texts can take twice as long.
Are HTML tags counted?
Yes, the tool counts every character — including <p> and </p>. To count plain text only, strip HTML first via a browser inspector or a small JS function.
Is the text stored anywhere?
No. Counting runs entirely in your browser via JavaScript. For texts under 1500 characters it's written into the URL as ?data=... so you can share the link. Nothing reaches our server.
What exactly are the top words?
Words longer than two letters are counted case-insensitively and sorted by descending frequency. The top 15 are shown. Useful for keyword density checks and style analysis.
Can I use the counter offline?
Yes, once the page has loaded. Since everything runs client-side, you no longer need an active connection. Close the browser or go offline — the counter keeps working.

Related tools