utilime

Small tools that finish the job.

Count words and characters

Words, characters, sentences and reading time, redrawn as you type. Set the limit you are writing to and the page reports the room you have left.

Drop a file hereor click to choose · it stays on your device

How it works

Almost nobody wants a total. They want to know whether the thing they wrote fits. A course sets 500 words, a form stops accepting input at 2,600 characters, a message has to survive as one SMS segment, and the count is only useful as the distance to that ceiling. The limit box above turns every figure on this page into a budget, and the caps that real platforms enforce are listed together further down so you can see all of them at once.

Four numbers are all called the character count

The interesting question is not what a character is. It is which count the box you are pasting into keeps. A database column declared to hold 255 is usually counting bytes. An HTML maxlength attribute counts UTF-16 code units, which is what the browser gives it. A grapheme is what your cursor steps over. And a code point is the unit a specification is written in. All four are reported here under their own names, because a page that prints one of them beside the word Characters is guessing which one you need.

The four agree on plain English and only on plain English. Type the three-person family emoji, which is built by gluing three separate people together with a zero-width joiner, and this page reports 1, 5, 8 and 18 for the same single thing on your screen: one grapheme, five code points, eight UTF-16 units, eighteen bytes. Add a fourth person and those figures become 1, 7, 11 and 25. A letter typed with a separate accent mark reads 1, 2, 2 and 3.

Two of those cases are worth knowing about before you trust any counter, this one included. Japanese gives the identical number for graphemes, code points and UTF-16 units while costing three bytes a character, so a Japanese sample cannot tell those three rows apart at all. It is a fixture that looks thoroughly foreign and separates almost nothing.

Windows line endings are the other one, and this page is unable to show it to you. A carriage return and a line feed do form a single grapheme between them, but a browser rewrites both to a plain newline as text enters a box, so the counter never meets a carriage return at all. The practical consequence is worth carrying: every figure here is one byte per line smaller than the same document sitting on a Windows disk.

Where a word count and a dictionary disagree

A word here is a run of letters or digits with hyphens and apostrophes allowed inside it, so a compound counts once and a contraction counts once. Dashes split. Whitespace splits, and runs of it are collapsed, so a stray double space or a trailing return adds nothing. Chinese, Japanese and Korean have no spaces between words at all, so each character counts as one word, which is the convention Microsoft Word and Google Docs both follow.

The browser ships a second opinion and this page was checked against it. Unicode word segmentation, reached through Intl.Segmenter, agrees on apostrophes, on dashes and on stray whitespace. It differs in two places. It cuts a four-part hyphenated compound into four words, where a word processor and this page say one. And it groups Japanese by dictionary lookup, scoring a five-character phrase as three. Where the two disagree the word-processor answer wins here, on the grounds that the person with a word limit is being marked against one.

Reading time is an assumption, so it is written down

Reading speed is not a property of text. The default here is 238 words per minute, which is the mean for silent reading of English non-fiction in Brysbaert's 2019 meta-analysis of 190 studies. The same review puts reading aloud at 183, which drives the second row. Both are averages across a wide spread, and the slider exists so you can replace the assumption with your own measured pace rather than inheriting a number from a stranger.

The readability scores name their formulas

Two scores, both published and both checkable by hand. Flesch reading ease is 206.835 minus 1.015 times the average sentence length minus 84.6 times the average syllables per word, and runs from roughly 0 to 100 with higher meaning easier. Flesch-Kincaid grade level is 0.39 times the average sentence length plus 11.8 times the average syllables per word minus 15.59, and reports a US school grade. Both were fitted to English, so they are withheld rather than guessed at when the text is mostly not written in Latin script.

Syllables are the soft part of both. Getting them exactly right needs a pronouncing dictionary, so this counts vowel groups with rules for a silent final e, a syllabic final le, past-tense endings and the vowel pairs that are pronounced apart. Measured against 277 hand-checked words it is right 94.2 percent of the time, and 95.6 percent on the list written last and never used for tuning. The published rule set most implementations copy scored 78.1 percent on the same words.

Character caps a platform really enforces

SMS is the one with a trap in it. A message drawn entirely from the GSM 03.38 alphabet is packed seven bits to a character and fits 160 in a segment. One character outside that alphabet switches the whole message to UCS-2 and the segment drops to 70, so a single curly apostrophe pasted from a word processor can turn one message into two. This page reports which encoding your text falls into and how many segments it will be billed as.

X is the other one that does not count what it looks like it counts. Its published configuration weighs most Latin, Greek, Cyrillic, Hebrew and Arabic code points as one and everything else as two, so 280 becomes 140 for a post written in Japanese. An emoji sequence counts as a single emoji at weight two however many code points it holds. The one thing not modelled here is link shortening: X rewrites every URL to a fixed 23 characters, and this page counts the address as you typed it.

Questions

Why does your character count differ from the one in my editor?

Because there are four of them and most tools print one without saying which. An editor's status bar is usually showing UTF-16 code units, since that is what the string length gives it for free. Your database is counting bytes. Your eyes are counting graphemes. On plain English all four are the same number, so the disagreement only appears once you paste an emoji, an accented letter typed as two key presses, or anything at all in a non-Latin script.

Is the word count the same one Microsoft Word gives?

It follows the same conventions and agrees on ordinary prose. Hyphenated compounds count once, contractions count once, dashes and whitespace split, and CJK characters count individually. Word does have its own quirks around footnotes, text boxes and fields that no web page can see, so treat a difference of one or two on a complex document as normal rather than as an error in either.

Can I trust the reading time?

Trust it as an average, not as a measurement of you. It divides the word count by a published mean reading rate, and individual speeds range from roughly 175 to 300 words per minute for the same material. Technical text with figures and code runs slower than that whoever is reading it. Change the rate to your own if you know it, and the row updates.

Why is there no page title or meta description limit?

Because a search result is cut on how wide the text renders rather than on how many characters it holds, and the two are not related by any fixed ratio. The meta tags page on this site measures the same 54-character title at 240 pixels in one string and 1,080 in another. A character target for it would be a wrong answer wearing a precise-looking number, so the limits offered here are only the ones a platform enforces on the string itself.

How large a document can I paste?

Larger than you are likely to have, and nothing is truncated at any size. A megabyte of plain text, which came to just under 175,000 words when measured, took about a third of a second on the machine this was built on. The counting runs in a background thread, so the page keeps responding while it works. If a figure ever did cover less than the whole input the note under the results would say so, because a total that quietly describes part of a document is worse than no total at all.