Word and character counter

Drop a text file here

or just start typing — .txt, .md, .csv, .srt

The basics

0Wordswhitespace rule
0Wordssplitting hyphens
0Characterswith spaces
0Characterswithout spaces
0Sentences
0Paragraphs
0Lines
0:00Reading time200 wpm silent

Where is it going?

The same text, counted the way the destination counts it.

X weighted, max 280 0 / 280

SMS GSM-7 0 / 160

Plain limits

WhereLimitLeft

Type or drop a file in and the counts update as you go: words under both of the rules that tools disagree about, characters with and without spaces, sentences, paragraphs and reading time. Underneath, the same text is counted the way the destination counts it — X's weighted 280, where an emoji costs two and any link costs twenty-three, and SMS, where a single character outside the GSM-7 set drops your message from 160 characters to 70. Nothing is uploaded.

How to use it

  1. Type or paste your text into the box, or drop a .txt, .md or .srt file onto it.
  2. Read the basic counts at the top — two word counts, characters with and without spaces, sentences, paragraphs and reading time.
  3. Look at Where is it going? for the count your destination will actually apply.
  4. Check the report at the bottom for characters you cannot see.

There is no single answer to “how many characters”

A character count feels like it should be a fact, the way the number of pages in a book is a fact. It is not. It is the answer to a question, and different systems are asking different questions: one wants to know how much storage this takes, another how much room it needs on a screen, a third how much it costs to send. Those are three different numbers for the same sentence, and the only one that matters is the one belonging to whatever is about to reject your text.

This is the same problem as an upload form that refuses a file which is exactly the size it says it allows — a mismatch between the number you were shown and the number being checked. We wrote that one up in why a 500 KB file fails a 500 KB limit. Text has the same flaw and hides it better, because nobody expects counting words to be contentious.

Why two word counts

Word counters disagree, and they disagree in a boring, specific place: hyphens and symbols. Google Docs generally treats well-being as one word, because there is no space in it. Other tools split it into two. The same argument applies to slash-joined terms, to strings with digits in them, and to anything separated by a symbol rather than a space.

For most writing the gap is under one percent and nobody notices. It starts to matter at exactly the moment you cannot afford it: a 2,000 word cap on an assignment, a journal's submission limit, a tender with a stated maximum. Hyphen-heavy academic and medical writing is where the gap is widest, which is also where the limits tend to be enforced most strictly.

Rather than pick one rule and present it as the truth, this page shows both and names the rule behind each. When they differ it tells you by how much. Which rule your destination uses is usually undocumented, so the honest answer is to know your exposure and leave yourself margin.

What X actually counts

X, still widely searched for as Twitter, does not count characters. It counts weight, against a maximum weighted length of 280. Its published rules give Latin letters, punctuation and common symbols a weight of one, and give emoji, CJK characters and most other Unicode a weight of two. A post in Chinese hits the limit at around 140 visible characters. A line of emoji hits it at 140 too.

The part that surprises people is links. Every URL is wrapped by the t.co shortener and counts as 23 characters regardless of its real length. A three-character link and a two-hundred-character link with tracking parameters cost exactly the same. That cuts both ways: there is no point shortening a URL before posting, and there is also no hiding a link's cost by making it look small.

X also normalises text to Unicode Normalization Form C before counting. An accented letter can be stored either as a single character or as a plain letter followed by a combining mark; normalisation collapses the second form into the first, so text pasted out of certain editors counts differently there than it does in a naive counter. The X row on this page applies all three rules.

URL detection here is approximate. X runs its own parser over your post to decide what is a link. This page uses a simpler pattern, which is enough to show you the 23-character cost but can differ on unusual text. Treat the X row as a close estimate, not as a guarantee from X.

How one emoji costs you ninety characters of SMS

An SMS is sent in one of two encodings, and it cannot mix them. GSM-7 spends seven bits per character, which is where the familiar 160 comes from. Anything outside the GSM-7 character set forces the entire message into UCS-2, which spends sixteen bits per character and fits 70.

The consequence is abrupt. A 158-character message sends as one SMS. Add a single emoji, a curly quote pasted from a word processor, or an em dash, and every other character in the message is re-encoded as well — the message is now 159 characters in a 70-character format, so it sends as three segments and is billed as three. Nothing warned you, because the character count barely moved.

Longer messages are split into segments that each carry a small header, which is why the per-segment allowance drops from 160 to 153, and from 70 to 67. The page shows which encoding your text falls into, how many segments it will become, and which character pushed it over when one did.

The characters you cannot see

Text copied out of a word processor, a PDF or a web page arrives carrying passengers: non-breaking spaces that look identical to ordinary ones, zero-width characters, a byte order mark at the very front, trailing spaces at the ends of lines, Windows-style line endings that are two characters rather than one.

None of them are visible and all of them count. They inflate character totals, break exact-match lookups, and a single non-breaking space is enough to knock an SMS into the expensive encoding. This page lists what it finds and how many of each, rather than silently cleaning your text up — the point is to tell you what is there, so you can decide.

What it does not claim

It does not claim to match Microsoft Word exactly. Word's counting rules are not fully published, and a tool that asserts a match it cannot demonstrate is just guessing with confidence. What this page does instead is name the rule behind every number it shows, so you can compare like with like and see where a difference is coming from.

Frequently asked questions

Why does this show two different word counts?

Because word counters genuinely disagree, and the disagreement is about hyphens and symbols rather than about anything mysterious. Google Docs usually treats a hyphenated term as one word, since there is no space in it; other tools split it in two. The gap is normally under one percent, which is invisible until you are up against a hard limit — a 2,000 word essay cap, a journal submission, a tender document. Rather than pick a winner and hide the choice, this page shows both counts and names the rule that produced each, so you can see how much room the difference is costing you.

Why does X say my post is longer than the character count here?

X does not count characters, it counts weight. Its published rules give Latin letters, punctuation and common symbols a weight of one, while emoji, CJK characters and most other Unicode weigh two, against a maximum weighted length of 280. On top of that every link is wrapped by the t.co shortener and counts as 23 characters no matter how long or short the original URL was — so three links cost you 69 whatever they look like. The X row on this page applies those rules, which is why it can read higher than the plain character count.

How does one emoji turn a 160 character text into a 70 character one?

An SMS is sent in one of two encodings. GSM-7 spends seven bits per character, which is where the familiar 160 comes from. Anything outside that character set forces the message into UCS-2, which spends sixteen bits per character and leaves room for 70. A message cannot mix the two, so a single emoji, curly quote or em dash re-encodes every other character in the message as well. The page shows which encoding your text currently falls into, how many segments it will be split into, and — when you have tripped it — which character did it.

What is the difference between characters and code points here?

For ordinary text, nothing. For emoji and accented letters it matters a great deal. A single emoji can be several code points joined together, and an accented letter can be stored either as one character or as a plain letter plus a combining mark. JavaScript's own length counts the underlying storage units, which is why some tools report a family emoji as 11 characters. This page counts what a reader would call characters, and reports the storage figure separately when the two differ, so you can tell which number a given system is likely to be using.

What are the invisible characters it warns about?

Text pasted out of a word processor, a PDF or a web page often carries things you cannot see: non-breaking spaces instead of ordinary ones, zero-width characters, a byte order mark at the very front, trailing spaces at the end of lines, and Windows-style line endings. They change byte counts, break exact-match searches and lookups, and can silently push a message into the more expensive SMS encoding. The page lists what it found and where, rather than quietly cleaning it up behind your back.

Does it count text in Chinese, Japanese or Korean correctly?

Yes, and this is where counters most often mislead. CJK text is not separated by spaces, so any counter that splits on whitespace will report a paragraph of Chinese as one or two words. The word figure here falls back to counting characters for CJK runs, and — more usefully — the X row already knows that each CJK character carries a weight of two, which is why a post that looks short in Chinese can still hit the 280 limit.

How is reading time worked out?

From the word count at 200 words per minute for silent reading, and 130 for reading aloud, which is the usual range for prepared speech. Both are averages and neither is a promise: dense technical writing runs slower, dialogue faster. Treat the number as a planning figure for a talk or a blog post, not as a measurement of your particular reader.

Is my text uploaded anywhere?

No. The counting happens inside your browser tab, so drafts, client copy, contracts and anything else you paste in never travel to a server. You can confirm it the same way you would confirm any such claim: open the page, disconnect from the network, and keep typing — the counts carry on updating.