Words, characters, bytes and reading time — and why they differ.
What it's for
Count the words and characters in an essay, a caption, an application answer or anything else with a length limit, and see roughly how long it takes to read or to say aloud.
Before you start
Have the text ready to paste, and know the limit you must meet and whether it counts words, characters or bytes. Nothing you paste leaves your browser.
Put in your text
Type or paste it into the Text box, replacing the sample sentences.
Press Count
Press Count to bring the answer into view. The figures also change as you type, so you can trim the text in the box and watch the count fall.
Check the figure your limit uses
Look under How long, exactly for Characters without spaces, UTF-8 bytes, Unique words, Lines and more. Use the one that matches how your limit is counted: Characters includes the spaces, and Characters without spaces leaves them out.
Reading the result
If it goes wrong
“How many characters” has three answers, and they only agree on plain English.
Characters are what a person counts. Code units are what JavaScript’s .length returns. Bytes are what a database column limit counts.
The peso sign is one character, one code unit and three bytes. An emoji is one character, two code units and four bytes.
So a form validating length with .length against a byte-limited column accepts text the database then refuses — and the failure lands nowhere near the form. That is why all three are shown.
Because “how many characters” has three answers and they only agree on plain English. Characters are what a person counts. Code units are what JavaScript’s .length returns. Bytes are what a database column limit counts. The peso sign is one character, one code unit and three bytes; an emoji is one character, two code units and four bytes.
Because a form that validates length in code units against a byte-limited database column will accept text the database then refuses — and the failure appears nowhere near the form. If you are checking against a limit, check which unit the limit is in.
At 200 words a minute, which is a common estimate for an adult reading silently. Speaking time is shown separately at 130, because reading aloud is slower and it is a different question. Both are rough — the rate varies enormously with the material and the reader.
By counting runs ending in a full stop, question mark or exclamation mark, plus a final run with no terminator. It is an estimate: an abbreviation ending in a full stop is counted as a sentence ending, and getting that exactly right needs a dictionary. It is reported as an estimate rather than presented as a fact.
A run of text separated by a blank line. A single line break is a wrapped line, not a new paragraph, and treating every newline as a paragraph break gives a wildly inflated count on any text that was hard-wrapped.
No. Everything is counted in your browser and nothing is transmitted or stored.
Counting by code point is still not counting by character: it splits a family emoji into six. Intl.Segmenter is the right tool.
A paragraph is separated by a blank line, not by any line break. A wrapped line is not a new paragraph, and treating it as one gives a wildly inflated count on hard-wrapped text.
Important
Counted in your browser; nothing is transmitted. Sentence counts are an estimate — an abbreviation ending in a full stop is read as a sentence ending. Reading and speaking times are rough averages. Nothing you type here is sent to our servers — the calculation runs entirely in your browser.