TSToolSeta
Text Tools · Ready

Character Frequency Counter

Count character and letter frequency, percentages, and Unicode code points.

Workbench online
Loading tool controls…

Character and Letter Frequency Counter guide

Count visible characters as Unicode grapheme clusters and inspect their frequency, share, and code points.

What this tool does

Character Frequency Counter segments text into user-perceived characters with the browser's Intl.Segmenter grapheme mode. This is more useful than simply counting UTF-16 code units: many emoji, accented sequences, skin-tone modifiers, and joined symbols contain several Unicode code points but appear as one character.

For each unique grapheme, the table shows its count, percentage of all included characters, and the code points that compose it. Results are ordered from most frequent to least frequent, with a stable character comparison for ties. Optional case folding combines uppercase and lowercase forms according to the browser's locale-aware rules. Whitespace is excluded by default but can be included; ordinary spaces, line breaks, and tabs receive readable labels.

The percentage denominator is the number of included grapheme clusters, not bytes, words, or code points. Unicode can represent visually similar text in different normalized forms, such as one precomposed accented character or a base letter followed by a combining mark. The tool does not normalize those forms before counting.

How to use it

  1. Paste or type the text to analyze.
  2. Choose whether uppercase and lowercase characters should remain separate.
  3. Enable whitespace when spaces, tabs, and line breaks matter.
  4. Review the table from the most frequent grapheme downward.
  5. Use the Unicode column to investigate visually confusing or multi-code-point characters.

When comparing two sources, use the same options and normalization process. Counts can differ because of hidden whitespace, smart punctuation, decomposed accents, or characters from another script that resemble Latin letters.

Letter frequency example

Enter Letter and enable case-insensitive counting. The result combines L with l, producing e: 2, t: 2, l: 1, and r: 1. With case sensitivity enabled, uppercase L and lowercase l appear as separate rows. Whitespace does not affect this example unless the input contains spaces and Include whitespace is enabled.

If unexplained characters appear, inspect the source with the Invisible Character Detector. For totals by words rather than graphemes, use the Word Counter.

Benefits

  • Counts user-perceived Unicode grapheme clusters
  • Identifies multi-code-point characters
  • Offers case-sensitive and whitespace controls
  • Calculates a precise frequency share
  • Updates locally without sending text elsewhere

Uses and limitations

Frequency tables can help inspect data quality, keyboard exercises, encoded identifiers, simple substitution puzzles, or unexpected text characters. They do not determine language, authorship, readability, meaning, or whether text was generated by a person or model.

Locale-aware case folding can have language-specific behavior. Fonts can also render distinct characters similarly, while unsupported characters may appear as replacement boxes. For forensic, security, or formal linguistic work, preserve the original bytes and use specialized Unicode analysis tools.

FAQ

It is a sequence of one or more Unicode code points that a reader typically perceives as one displayed character.

The browser segmenter keeps many joined and modified emoji together as one grapheme, while the table still shows their component code points.

Unicode can encode similar text in precomposed or combining forms. This tool preserves rather than normalizes those source forms.

It is the character's count divided by all grapheme clusters included under the current case and whitespace options.

No. Segmentation, counting, sorting, and table display occur locally in the browser.

Keep working

Related tools

View all Text Tools