← Back to all tools

TEXT TOOL

Character counter

Count characters, lines, and words as you type.

Your text stays in your browser. It is never sent or saved.

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

Display options

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.

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.