TEXT TOOL
Character counter
Count characters, lines, and words as you type.
Your text stays in your browser. It is never sent or saved.
Counting is unavailable in this browser. Please use a newer browser with Intl.Segmenter support.
- Characters
- 0
- No whitespace
- 0
- Fullwidth
- 0
- Halfwidth
- 0
- Width (2 / 1)
- 0
- Lines
- 0
- Words (approx.)
- 0
- Whitespace total
- 0
- Halfwidth spaces
- 0
- Fullwidth spaces
- 0
- Tabs
- 0
Character preview
Read-only. Blue means halfwidth; green means fullwidth. · marks a halfwidth space, □ a fullwidth space, → a tab, and ↵ a line break. Tooltips also identify character types. Preview markers are never included when copying the original text with the button.
- Halfwidth characters
- Fullwidth characters
- · Halfwidth space
- □ Fullwidth space
- → Tab
- ↵ Line break
Type some text to see a highlighted preview.
For long text, only the first 3,000 graphemes (up to 20,000 UTF-16 code units, without splitting a grapheme) are previewed. Counts and the copy button still use the entire text.
How counting works
Characters are grapheme clusters counted with Intl.Segmenter. Combined letters and emoji sequences such as families generally count as one character. The whitespace-free count excludes clusters made entirely of spaces, tabs, line breaks, or other whitespace. A line break counts as one character, including CRLF.
Empty text has 0 lines. Otherwise, lines are separated by line breaks, including a final empty line after a trailing break. CRLF, LF, CR, and Unicode line/paragraph separators are supported.
Words use Intl.Segmenter with the page language and include only word-like segments, not punctuation or emoji alone. Japanese word counts can vary between browsers and dictionaries.
Fullwidth and halfwidth classify the same grapheme clusters as Characters. After NFC normalization, a cluster with a non-mark, non-default-ignorable base in East Asian Width W/F is fullwidth; all others (including ambiguous A, H, Na, and N) are halfwidth. ASCII, halfwidth spaces and kana are halfwidth; Japanese, fullwidth letters and spaces are fullwidth. CRLF, LF, and CR each count as one halfwidth character; a tab also counts as one. Combining marks stay with their base: accented e is halfwidth, voiced hiragana is fullwidth, and halfwidth kana with a voicing mark is one halfwidth cluster. Standalone marks or invisible-only clusters count as one halfwidth character. Emoji-presentation, flag, keycap, skin-tone and family sequences count as one fullwidth cluster. VS15 text presentation uses normal width classification. Fullwidth + Halfwidth = Characters; Width (2 / 1) = Fullwidth × 2 + Halfwidth. For example, A猫 has 2 characters: 1 fullwidth, 1 halfwidth, and a weighted count of 3. This weighted count is neither a grapheme count, UTF-8 byte count, nor actual font width. Width data is a fixed snapshot from get-east-asian-width 1.7.0; character classification and segmentation may vary by environment.
Whitespace total is the sum of U+0020 spaces, U+3000 fullwidth spaces, and U+0009 tabs only. Line breaks and other Unicode whitespace are excluded. No whitespace continues to exclude all previously supported whitespace, including line breaks. Halfwidth spaces and tabs are halfwidth; fullwidth spaces are fullwidth. These are supplementary counts already included in Characters and its width breakdown, so do not add them to the character total.