Character Counter_

A words and character counter that counts what a reader actually sees: emoji, accents, and Chinese characters each count as one. Live tiles for characters with and without spaces, words, sentences, paragraphs, lines, and reading time — plus remaining-space meters for X, SMS, meta descriptions, Instagram, LinkedIn, YouTube, and email subjects.

Everything is counted in your browser as you type. Drafts, cover letters, confidential text — nothing you paste here is uploaded or stored anywhere.

toolkit.codes/character-counter
0
Characters
0
Without spaces
0
Words
0
Sentences
0
Paragraphs
0
Lines
0
Reading time
0
Speaking time
Graphemes (shown above): 0UTF-16 units (JS .length): 0Code points: 0UTF-8 bytes: 0
Platform_Limits
X post (weighted)0 / 280
SMS (segment-aware)0 / 160
Meta title0 / 60
Meta description0 / 160
Instagram caption0 / 2200
Instagram bio0 / 150
LinkedIn post0 / 3000
YouTube title0 / 100
YouTube description0 / 5000
Email subject (display)0 / 60
UTF-8
Ready
100% LOCAL
Input
Anything you type or paste — a tweet, an essay, a meta description, a CJK or emoji-heavy string. Nothing is uploaded and nothing is stored.
Output
Characters with and without spaces, words, sentences, paragraphs and lines, plus reading and speaking time — and, when you need them, graphemes, UTF-16 units, code points and UTF-8 bytes.
Processing
Counted in this tab on every keystroke, grapheme-aware through Intl.Segmenter so a family emoji counts as one character rather than seven.
Limits
No length cap and no rate limit. Very long pastes count in yielding passes so the page keeps responding.
Platform meters
Live limits for X, SMS segments, meta title and description, Instagram caption and bio, LinkedIn and YouTube — each using that platform’s own counting rule, not a generic character count.

What a character counter counts, and why tools disagree

Four different numbers, all correct

Take the family emoji 👨‍👩‍👧‍👦. You see one character. This character counter tool reports it as one, because it counts graphemes — user-perceived characters, the way your browser's Unicode segmenter groups them. But underneath, that emoji is 7 code points joined by invisible zero-width joiners, 11 UTF-16 code units (what JavaScript's .length and Excel's LEN report), and 25 bytes of UTF-8 (what databases and APIs usually limit). Every counter that shows you a different number has simply picked a different one of those four systems — usually without saying so. The strip under the tiles shows all four, labelled, so the number you need is always there.

Chinese, emoji, and accents

As a Chinese character counter: 你好 is two characters here, exactly as a reader would say — though X weighs each CJK character as 2 toward its 280 limit, and UTF-8 stores each in 3 bytes, which is why the same text "fits" in one system and overflows another. Accented letters are one character whether they arrive precomposed (é) or as a letter plus combining accent (e + ´) — the grapheme count is the same even though the code-point count differs, which is precisely the kind of disagreement that makes people think a counter is broken.

Why Microsoft Word gives a different number

Looking for the character counter in Word? It's under Review → Word Count, or the word count in the status bar (click it for the character figures). Word's numbers can legitimately differ from this page's: Word lets you include or exclude footnotes and text boxes, counts fields after they're evaluated, and treats some joined punctuation differently when splitting words. In Excel, =LEN(A1) counts UTF-16 code units — so one emoji adds 2 to LEN — and =SUMPRODUCT(LEN(A1:A10)) totals a range. If a submission portal disagrees with everything else, it is almost always counting code units or bytes rather than visible characters.

What counts as a word, and where word counters disagree

This word and character counter uses the browser's locale-aware segmenter for words and sentences: "don't" is one word, "3.5" is one word, and CJK text is segmented without needing spaces. Sentence counting follows terminal punctuation. Reading time assumes 238 words per minute of silent reading and speaking time 130 wpm — averages, useful for talks and video scripts rather than precise promises.

If the word count is the number you came for rather than one figure among ten, the word counter leads with it and adds the things a writer working to a limit needs: pages at both spacing conventions, and a target you set yourself that counts down as you write. This page stays the right one when the ceiling is measured in characters — a post, a bio, a meta description, an application field.

Paste your text and read the number that matters

  1. 01Paste or type — this free online character counter updates every count live, no button to press.
  2. 02Read the tiles for the writer numbers: characters with and without spaces, words, sentences, paragraphs, lines, reading and speaking time.
  3. 03Check the encoding strip when a system disagrees with you — graphemes, UTF-16 units, code points, and UTF-8 bytes are all shown, labelled.
  4. 04Watch the platform meters fill as you write: X uses its real weighted counting, SMS shows the encoding and segment count, and the rest track their platform limits. Red means over.

Four limits people actually write against

An X post that actually fits

280 weighted characters — most Latin text counts 1, every emoji and CJK character counts 2, and any link counts 23 flat. The meter uses the real weighting.

Draft
Shipping day 🎉 new tool is live
Meter
X post: 32 / 280 (emoji weighs 2)

Meta title and description that don't get cut

Google truncates titles around 60 characters and descriptions around 155–160. Draft both here and stop guessing what survives the snippet.

Draft
Free Online Character Counter — Live & Emoji-Accurate
Meter
Meta title: 53 / 60 ✓

SMS campaign cost check

160 GSM characters per message — until one emoji or curly quote flips the whole text to 70-character UCS-2 segments and doubles the bill.

Draft
Flash sale today! Show this text for 20% off 🎁
Meter
SMS: UCS-2 · 47 units · 1 segment (would be GSM-7 without the emoji)

Essay and application limits

A 4,000-character personal statement or a 650-word essay: watch characters and words at once, and paragraphs to keep structure honest.

Draft
(your draft)
Tiles
3,996 characters · 612 words · 5 paragraphs

Platform character limits (bookmark this)

Platform / fieldLimitCounted howNotes
X (Twitter) post280Weighted: Latin 1, CJK/emoji 2Any URL counts as 23 regardless of length
SMS — GSM-7160 / segment (153 concatenated)Septets; ^ { } [ ] \ | ~ € cost 2Plain-alphabet messages
SMS — UCS-270 / segment (67 concatenated)UTF-16 units; emoji = 2One emoji or smart quote flips the whole message
Meta title~60Rendered pixels ≈ charactersGoogle truncates by pixel width, ~600 px
Meta description~155–160Rendered pixels ≈ charactersLonger text is cut with an ellipsis
Instagram caption2,200CharactersLine breaks count; truncated after ~125 in feed
Instagram bio150Characters
LinkedIn post3,000Characters"See more" fold after ~210
LinkedIn headline220Characters
YouTube title100CharactersSearch results show ~70
YouTube description5,000CharactersFirst ~157 show above the fold
Email subject~60 shownCharactersRFC allows 78+; mobile clients show 30–40
Facebook post63,206CharactersFeed truncates far earlier

Display truncation numbers are approximations — platforms cut by pixels and UI context, not exact character counts. Hard limits (280, 2,200, 3,000…) are exact.

One string, four numbers

Counting system👨‍👩‍👧‍👦 café 你好Who counts this way
Graphemes (this page)9Humans; this counter; most modern form fields
Code points15Unicode-aware APIs; Instagram; Python len()
UTF-16 code units19JavaScript .length, Excel LEN, Java, old databases — where “emoji count as 2” comes from
UTF-8 bytes31Databases (VARCHAR), HTTP APIs, file sizes

The string is one family emoji (ZWJ sequence), a space, café, a space, and two CJK characters. Every row is a correct answer to “how long is it?” — to a different question.

Matching the count the box is actually enforcing

  • Draft X posts to ~250 weighted characters — replies and edits always need room, and trims hurt less with slack.
  • Meta descriptions: front-load the value proposition in the first ~120 characters; the tail is what gets cut on mobile.
  • Sending SMS at scale? One emoji converts every segment of the whole campaign from 160 to 70 characters. Check the encoding line before you send, not after the bill.
  • Paste from Word before publishing: smart quotes (‘ ’ “ ”) and em dashes are not GSM characters and can silently flip SMS encoding or inflate byte counts.
  • Instagram counts line breaks toward the 2,200 — a heavily formatted caption is shorter than it looks.
  • Trailing spaces and newlines count. If a portal says 4,001/4,000, check the end of your paste first.

Where a character count misleads

Every counter gives a different number

Four counting systems exist (graphemes, code points, UTF-16 units, bytes) and most tools pick one without telling you. Neither tool is “wrong” — they answer different questions. Compare like with like: this page labels all four.

“One emoji counted as 2 characters”

Any system counting UTF-16 code units — Excel LEN, JavaScript .length, X’s weighting, older databases — sees astral-plane emoji as two units (a surrogate pair). A skin-tone family emoji can be 11 units while reading as one character.

The SMS 160 → 70 cliff

SMS has two encodings, not one limit. Pure GSM-7 text packs 160 per message; a single character outside that set (emoji, curly quote, non-breaking space, — dash) re-encodes the entire message as UCS-2 at 70. Multi-segment messages drop to 153/67 per segment for stitching headers.

Invisible characters inflate counts

Trailing newlines, double spaces, non-breaking spaces pasted from web pages, and zero-width joiners all count in most systems while being invisible on screen. The with/without-spaces pair and the bytes tile make them findable.

Word counts differently — by design

Word’s Review → Word Count can include or exclude footnotes and text boxes, evaluates fields first, and joins some hyphenated forms into one word. When a teacher’s Word count and a web counter disagree by a few words, that’s configuration, not a bug.

How each number is computed

Character counting
Grapheme clusters via Intl.Segmenter; without it, code points are counted and ZWJ sequences over-count (documented fallback)
Words & sentences
Locale-aware Intl.Segmenter word/sentence granularity — contractions are one word, CJK segments without spaces
Encodings shown
Graphemes · UTF-16 code units · Unicode code points · UTF-8 bytes, all labelled
SMS math
GSM 03.38 basic + extension tables (extension chars cost 2 septets); 160/153 GSM-7, 70/67 UCS-2 segment packing
X weighting
twitter-text v3 ranges — Latin/European code points weigh 1, CJK and emoji weigh 2; URLs count 23 on the real platform (not rewritten here)
Reading / speaking
238 wpm silent reading · 130 wpm speaking, rounded — averages worth planning against rather than promises.
Large pastes
Inputs past ~100k units are counted asynchronously in yielding passes — the page never freezes on a book-length paste
Network
None from tool code. A test sweep calls every function this page uses with fetch and XMLHttpRequest replaced by stubs that throw, so a stray request fails the build instead of shipping. Disconnect from the network and the page still works.

Questions about counting characters and words

Why does another character counter show a different number?

Because it is counting a different unit — UTF-16 code units, code points, or bytes instead of visible characters. Emoji and CJK text make the difference obvious: one family emoji is 1 grapheme, 7 code points, 11 UTF-16 units, and 25 bytes. All four numbers are shown here, labelled, so you can match whatever system the other tool or portal uses.

How are emoji counted?

As one character each, including multi-person emoji with skin tones — that is how grapheme segmentation groups them and how readers perceive them. The UTF-16 line shows the “emoji counts as 2 (or 11)” number that other systems report.

Is my text uploaded anywhere?

No. Counting runs as JavaScript on this page; there are no processing servers and your text never leaves the browser tab. Close the tab and it is gone — nothing is auto-saved.

How do I count characters in Microsoft Word?

Review → Word Count shows characters with and without spaces, or click the word count in the status bar. Check the “include footnotes and endnotes” toggle if numbers differ between people looking at the same document.

How do I count characters in Excel or Google Sheets?

Use =LEN(A1) for one cell or =SUMPRODUCT(LEN(A1:A10)) for a range. LEN counts UTF-16 code units, so an emoji adds 2 — paste the same text here and read the UTF-16 line to reconcile.

What are the character limits on X, Instagram, and SMS?

X: 280 weighted (CJK/emoji count double, links count 23). Instagram: 2,200 caption, 150 bio. SMS: 160 per message in GSM-7, dropping to 153 per segment when concatenated — or 70/67 the moment any non-GSM character appears. The full table above covers meta tags, LinkedIn, YouTube, and email subjects.