A character is not always one code point
A dependable character counter should answer the question behind the count. For an editor, one family emoji looks like one character; for a browser field, it can occupy several UTF-16 units; for storage, it becomes a larger group of UTF-8 bytes. This page keeps those measurements separate, labels whitespace clearly, and lets you inspect the characters that actually make up a draft.
How to count characters online
Use the online character counter as a workbench rather than a single unexplained number. Paste the exact text you intend to inspect, choose the primary measurement, and set a minimum or maximum only when a real brief gives you one. The live panel shows the inclusive total, a count without whitespace, words, lines, and UTF-8 size without reloading the page.
Visible characters are the clearest default for editing. They follow extended grapheme cluster boundaries, which are designed to stay close to the units a reader perceives. Code points are useful for Unicode inspection. UTF-16 units matter when a browser form or JavaScript API uses string length, while UTF-8 bytes answer a storage or payload question.
If the draft crosses your maximum, Copy within maximum and Trim overflow stop only at a complete visible cluster. That avoids slicing a combining accent away from its base letter or breaking a joined emoji sequence. The minimum and maximum are working boundaries chosen by you, not invented platform rules.
- 01Paste the final text
Include its spaces, punctuation, emoji, and real line breaks.
- 02Choose the relevant unit
Use visible, code-point, UTF-16, or byte counting deliberately.
- 03Inspect before trimming
Read composition and frequency, then adjust the real draft.
What counts as a character, letter, or space?
A character count with spaces includes everything a reader or receiving field can encounter: letters, digits, punctuation, symbols, ordinary spaces, tabs, and line breaks. A character count without spaces removes Unicode whitespace first. Because the phrase “without spaces” is sometimes used loosely, this counter also exposes the individual space, tab, and line-break totals.
A letter counter answers a narrower question. Letters are only one Unicode category, so the word Café contains four letters, while its punctuation or surrounding spaces belong elsewhere. Scripts such as Urdu and Arabic use letters that do not have uppercase and lowercase forms; those appear under uncased letters. This is why “count letters” and “count characters” are related but not interchangeable tasks.
- With spaces
- Every visible cluster, including whitespace and punctuation.
- Without whitespace
- Visible clusters left after spaces, tabs, and breaks are removed.
- Letters only
- Unicode letters across scripts, separate from digits and marks.
Visible characters, code points, code units, and bytes
Unicode separates the symbol a person perceives from the values and encodings a computer stores. The Unicode Text Segmentation standard defines grapheme cluster boundaries for user-perceived characters. A precomposed é is one visible character and one code point, while an e followed by a combining acute accent is still one visible character but two code points.
JavaScript String.length reports UTF-16 code units rather than grapheme clusters. That distinction matters for supplementary characters such as many emoji. HTML maxlengthis also defined in UTF-16 code units, so the number in a browser field can disagree with an editor's visible count without either implementation being defective.
A UTF-8 byte counter answers another question: how much encoded space the text requires. Basic Latin characters use one byte, écommonly uses two, and many emoji use four bytes per code point. Database columns, APIs, imports, and message-size limits may specify bytes, which is why substituting a visible count can be risky.
| Text | Visible | Code points | UTF-16 | UTF-8 bytes |
|---|---|---|---|---|
| A | 1 | 1 | 1 | 1 |
| é | 1 | 1 | 1 | 2 |
| e + combining accent | 1 | 2 | 2 | 3 |
| 👨👩👧👦 | 1 | 7 | 11 | 25 |
What character frequency can reveal
Character frequency ranks visible grapheme clusters, not raw UTF-16 fragments. Ordinary spaces, tabs, line breaks, and non-breaking spaces receive names so the report remains legible. This helps when copy contains doubled spaces, repeated separators, unexpected line breaks, or a punctuation mark that appears more often than expected.
Frequency is evidence, not a writing score. Repeated letters are normal, and a high space percentage says little about quality. Treat the list as a quality-control view: investigate a surprising glyph, compare similar-looking punctuation, or confirm that a pasted data column contains the separator you expected.
- Spot ordinary and non-breaking spaces that look alike.
- Confirm tabs or line breaks survived a copy-and-paste.
- Find repeated punctuation before publishing interface copy.
- Read every result as a count, never as an automatic quality grade.
Where a precise count is useful
Editors can check application responses, abstracts, listings, form labels, interface copy, and database fields against a supplied boundary. Translators can compare expansion without assuming every script has case. Developers can move between a Unicode character counter and UTF-8 byte counter while debugging validation. Teachers and students can distinguish an assignment's character requirement from its word requirement.
When a social network, ad product, or search field supplies its own published rule, use the separate Character Limit Checker. This page intentionally does not pretend that one maximum fits every destination. Its job is inspection: show what the draft contains, explain why totals differ, and let you copy or trim against a boundary you understand.
Method and primary references
The main visible total uses Intl.Segmenter when available and follows extended grapheme clusters; a conservative fallback is used in older browsers. Category totals use Unicode properties, UTF-16 uses native string length, and UTF-8 size usesTextEncoder.
- Unicode Standard Annex #29Text segmentation and grapheme boundariesOpen source
- MDN: String.lengthWhy JavaScript reports UTF-16 code unitsOpen source
- MDN: HTML maxlengthHow browser field length is definedOpen source
Character counter questions
Short answers to the details that most often cause two counters to disagree.
Does the character count include spaces?
Yes. The visible-character total includes ordinary spaces, line breaks, tabs, punctuation, and symbols because they are part of the text. The Overview also gives a separate count without whitespace when you need to compare the two.
What is the difference between a character and a letter?
A letter is one category of character. A complete character count can also include numbers, punctuation, spaces, emoji, and symbols. The letter counter in the Overview isolates Unicode letters from those other categories.
Why can one emoji produce several technical counts?
Many emoji are sequences. A family emoji, for example, can join several people with zero-width joiners while appearing as one symbol. It can therefore be one visible grapheme cluster but several code points, UTF-16 units, and UTF-8 bytes.
What does character count without spaces mean?
It removes every Unicode whitespace character, including ordinary spaces, tabs, and line breaks, then counts the visible characters that remain. It is useful for a brief that explicitly excludes whitespace, but it should not replace an inclusive count by default.
What are Unicode code points, UTF-16 units, and UTF-8 bytes?
Code points identify the abstract values assigned by Unicode. UTF-16 code units describe the string length used by JavaScript and many browser interfaces. UTF-8 bytes describe encoded storage or payload size. The same text can legitimately have a different total in each column.
Why does another online character counter show a different result?
Some counters use JavaScript string length, some count Unicode code points, and others count user-perceived grapheme clusters. Differences usually appear around emoji, combining accents, flags, and line endings. Compare the stated method before deciding which result matches your destination.
Are line breaks and tabs counted as characters?
Yes. Each tab and each logical line break contributes to the visible count, while a Windows CRLF line ending is treated as one line-break cluster. The Case and spacing report lists spaces, line breaks, and tabs separately so hidden formatting is easier to spot.
Can this counter handle Urdu, Arabic, Hindi, and other scripts?
Yes. Counting is Unicode-aware, the editor follows the text direction automatically, and uncased letters are reported separately instead of being forced into uppercase or lowercase categories. Grapheme segmentation depends on the browser's current Unicode implementation.
Is my text uploaded or stored?
Counting runs locally in your browser and does not send the draft to our server. Session recovery stays in the current tab. Long-term storage on the device is used only if you explicitly enable Remember this draft.