Skip to main content

Writing and text

Word count or character count? Check emoji, spaces, and CJK text

Choose the right text measurement, reproduce an emoji example, and understand why word counts and character limits can differ between applications.

Published by qwertywelch.com

A 500-word assignment and a 500-character form need different checks. Even two character counters can disagree when the text contains emoji or accented letters. Start with the measurement requested by the destination, then use the counter to inspect the same text you intend to submit.

The Text Counter reports words and characters with and without whitespace. In browsers with Intl.Segmenter, its character total counts grapheme clusters: groups intended to approximate the characters a reader sees. That total is different from JavaScript string length.

Match the count to the requirement

Use Words for a brief or assignment that sets a word limit. Use Characters when the destination specifies a character limit, and find out whether spaces count. A requirement about bytes or a technical string length cannot be checked by substituting the visible character total.

The Characters without spaces result excludes whitespace segments, including tabs and line breaks, rather than only ordinary spaces. Compare it with the total to spot hidden formatting. Do not remove whitespace merely to make a number smaller if it changes the copy you will submit.

  • Writing brief: check word count and whether headings, captions, or references belong in the submitted scope.
  • Form or caption: check the destination's own counter after pasting the final text.
  • Database or API: use the documented unit, which may be bytes, code points, or UTF-16 code units.

Reproduce an emoji count

Paste the following line without an extra newline. In a browser with Intl.Segmenter, the displayed result is five characters, four without whitespace, and one word. The emoji is one grapheme cluster even though it combines multiple Unicode code points.

The five clusters are H, i, the space, the complete emoji, and the exclamation mark. JavaScript's string length for the same line is nine UTF-16 code units. The counter's character card is therefore unsuitable for predicting a limit specifically defined in those code units.

  1. Paste the example into an empty Text Counter input.
  2. Compare the three displayed counts with the expected results.
  3. Delete the space: the character total becomes four while the count without whitespace stays four.
  4. Paste your actual text into its destination and check that application's limit before submitting.
Visible characters and a programming-language length measure

Input

Hi 👩‍💻!

Expected result

Characters: 5
Characters without spaces: 4
Words: 1
JavaScript UTF-16 length, for comparison: 9

Treat accented letters and emoji sequences carefully

An accented letter can be represented as a single code point or as a base letter followed by a combining mark. For example, Cafe followed by a combining acute accent contains four grapheme clusters but five UTF-16 code units. A screenshot cannot tell you which representation the underlying text uses.

This matters when investigating a limit mismatch. Compare the exact copied text, including trailing newlines, instead of retyping something that merely looks the same. Keep the original until you know which measure the destination uses; deleting combining marks or part of an emoji can damage the content.

Check the language when counting words

Splitting at spaces is not a dependable word-count method for Chinese or Japanese. The tool uses locale-aware word segmentation when Intl.Segmenter is available. The Unicode segmentation guidance explains why reliable boundaries in these languages need language-specific treatment.

Do not treat CJK as one uniform counting rule: Korean commonly uses spaces, while Chinese and Japanese text often places multiple words together without them. A character count can be useful for a specification explicitly written in characters, but it does not become a word count simply because spaces are absent.

For mixed-language copy, use the language version that matches the main text and compare any required total with the destination's rules. Segmentation can vary with the browser's language data. Record the method when delivering a count to someone else rather than implying every application must produce the same total.

Resolve a mismatch before cutting useful text

First compare identical input and the same inclusion rules. Then check whether the mismatch is words versus characters, whitespace inclusion, or visible characters versus a storage unit. In browsers without Intl.Segmenter, this tool falls back to code-point character counting and a simpler word method; complex emoji and words without spaces may differ.

Reading and speaking times are estimates, not another way to enforce a word limit. This tool uses 225 words per minute for reading and 155 for speaking, rounded up to a tenth of a minute. Rehearse aloud when a delivery time matters, especially with pauses, unfamiliar terms, or multilingual passages.

Try the tools

Start with the sample above. Keep an unchanged copy of your own data before converting it.

References and corrections

Found a result that differs from this guide? Send a correction with a small, non-sensitive example and your expected result.

More practical guides

Data conversion

CSV to JSON: check types, IDs, and quoted fields

Convert a small CSV example, check quoted commas and inferred types, and recognize when IDs or multiline fields need a different import method.

Worked examples · Common mistakes · Result checks