Character Counter

Count graphemes, spaces, bytes, and X weighted length locally in your browser.

Paste text to count grapheme clusters (what people usually see as characters), Unicode code points, UTF-16 units, words, sentences, lines, paragraphs and UTF-8 bytes. The X ordinary-post figure uses official twitter-text 3.1.0 with v3 weighting, so a URL or emoji need not cost the same as one plain letter. Shift_JIS, strict EUC-KR and CP949 counts are shown only if every character is encodable. The Japanese 400-cell and Korean 200-cell manuscript figures are arithmetic estimates, not publisher or job-board acceptance rules. Text is processed on your device.

Drop text files hereProcess many files at once
No upload · processed on this device

Which character definition?

A combining accent can share one grapheme with its base letter, while an emoji can use several code points and UTF-16 units. The main number uses Unicode grapheme segmentation. The detail panel exposes the other definitions so a form limit can be matched to its own specification.

UTF-8 encodes all valid Unicode text. Legacy encodings cover different character sets: CP949 can encode some Korean syllables that strict EUC-KR cannot. An unencodable character makes that encoding’s byte total unavailable rather than silently replacing it.

Whitespace and line breaks are included in the full UTF-8 byte total. Some competing counters omit them; compare numbers only when the input and whitespace rule match.

Grapheme
A user-perceived character under Unicode text segmentation.
Code point
One Unicode scalar value; a visible symbol may contain several.
UTF-16 unit
One 16-bit storage unit; a supplementary code point needs two.

A multilingual example

For A 한 😀 the spaces count in the full UTF-8 total.

Input: A 한 😀
Graphemes: 5
Code points: 5
UTF-16 units: 6
Full UTF-8 bytes: 10

The emoji cannot be encoded in Shift_JIS, strict EUC-KR or CP949, so those three byte totals are unavailable for this whole input.

Check the result

  • Paste a short test such as A 한 😀 and compare its displayed UTF-8 bytes with a UTF-8 encoded file: the full text uses 10 bytes.
  • For X, test a URL and emoji against the official twitter-text v3 fixture set; this tool reports that precise rule and version.

Troubleshooting

SymptomLikely causeHow to checkFix
Another site shows fewer UTF-8 bytesIt may omit spaces and line breaks before encodingTry A B: this tool reports 3 full UTF-8 bytesSelect the same whitespace definition before comparing
EUC-KR has no total but CP949 doesThe input contains a CP949 extension characterRemove the marked unsupported characters one at a timeUse the destination’s specified encoding
One emoji seems to count as several unitsThe destination likely counts code points or UTF-16Compare the detailed grapheme, code-point and UTF-16 rowsUse the row named by the destination
The X result differs from a post composerAccount privileges or platform-side rules may differConfirm this tool says twitter-text 3.1.0 / config v3Check the live composer before publishing

Other ways to do it

OptionWhen it is the better choice
The destination form itselfUse its live limit when it publishes an exact rule or applies account-specific privileges.
A text editor with encoding selectionUse it to inspect the actual saved file bytes, including line-ending conversion.

What this page does not cover

  • Manuscript pages are a simple division of non-whitespace graphemes; punctuation and line placement are not modelled.
  • No Saramin or JobKorea compatibility claim is made because an official universal count rule was not verified.
  • The tool accepts UTF-8 text files; it does not auto-detect an uploaded legacy encoding.

Versions and sources

Unicode grapheme segmentation follows the browser’s Intl.Segmenter. X uses the vendored official twitter-text 3.1.0 parser and its version-3 configuration. Legacy tables are generated from strict Python codecs and checked against GNU iconv.

Official documentation used

Character Counter

Count graphemes, spaces, bytes, and X weighted length locally in your browser.

How it works

  1. Type or paste text, or choose a UTF-8 file
  2. Choose the visible-character or no-space count
  3. Open details for bytes, X and manuscript estimates

Supported formats

UTF-8 text (.txt, .md, .text) → on-screen counts. No file export.

What this tool does

Counts grapheme clusters locally and also shows code points, UTF-16 units, UTF-8 and strictly encodable legacy bytes. The X meter uses twitter-text 3.1.0 config v3.

Implementation and verified quality

advanced · local Web Worker; Intl.Segmenter; verified legacy encoding tables; official twitter-text 3.1.0. Quality qualification is in progress. Pro/Flagship quality has not been established.

Before you export

Paper figures are arithmetic estimates, not exact manuscript layout. An unencodable character makes that legacy byte result unavailable. Saramin and JobKorea compatibility is not claimed.

Frequently asked questions

Is this the same as a job application form?

Check the form’s own definition of spaces, line breaks and bytes. Use the custom limit; the employer’s counter is authoritative.

Are my files uploaded?

This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.

Will my work be saved automatically?

No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.