Rankato

Free Character Counter

Live character, byte, and grapheme counts with real platform limits — SEO, social, SMS, and Google Ads — updated as you type.

Empty

0
Characters
0
No spaces
0
Spaces
0
Words
0
Sentences
0
Paragraphs
0
Lines
0
Graphemes (visual)
0
UTF-8 bytes
0
UTF-16 bytes
0s
Read @ 225 wpm

Platform limits

Title tag
Google truncates ~50–60 chars
0 / 6060 left
Meta description
Truncated in SERP snippets
0 / 160160 left
URL slug
Long slugs get cut in SERPs
0 / 7575 left

Counted in your browser · never sent to any server

Character Counter is a live text analyser built for people who write against character limits. Type or paste any text and the tool instantly shows characters (with and without spaces), space count, word/sentence/paragraph counts, UTF-8 and UTF-16 byte sizes, and grapheme count (what a human sees as one character — a family emoji is 1 grapheme but 4+ code points). It then measures your text against real platform limits: SEO title tags and meta descriptions, X/Bluesky/Threads/LinkedIn/Instagram/YouTube/TikTok posts, GSM-7 vs UCS-2 SMS segments, and Google Ads headline/description limits. A top-character frequency chart, adjustable reading and speaking time estimates, and Unicode-aware counting round it out. Everything runs in your browser — nothing is uploaded.

What Character Counter measures

The tool gives you three layers of counts. The primary counts — characters, characters without spaces, spaces, words, sentences, paragraphs, lines — cover the everyday case. The encoding counts — UTF-8 bytes, UTF-16 bytes, and graphemes — cover technical use cases: fitting text into database columns, JSON payloads, or SMS segments. The platform limits panel then measures your text against real-world caps: SEO title tags and meta descriptions, every major social network, SMS (both GSM-7 and UCS-2), and Google Ads copy. A top-character frequency chart and reading/speaking time estimates round it out. Everything updates on every keystroke and runs entirely in your browser.

Characters, code units, code points, and graphemes

The characters count in this tool matches what most word processors show — the length of the string in JavaScript, which is the number of UTF-16 code units. This is what SMS providers count, what database VARCHAR limits count, and what X/Twitter counts (with weight adjustments).

The graphemes count matches what a human sees. A family emoji like 👨‍👩‍👧 is a single visual character, but it's actually eight code points glued together with zero-width joiners. If you want to know 'how many characters will my user see', use the grapheme count. Character Counter uses Intl.Segmenter to compute it, which follows the official Unicode grapheme cluster algorithm.

UTF-8 bytes tells you the wire size in the encoding used by almost all modern web APIs. A plain ASCII letter is 1 byte, most Latin-with-accents characters are 2 bytes, Chinese/Japanese/Korean characters are 3 bytes, and most emoji are 4 bytes.

SEO character limits

  • Title tag: 50–60 characters before Google truncates in SERPs. The exact cutoff is measured in pixels (~580px on desktop), so wide characters like W and M can push a 55-character title over. Use 60 as a safe cap.
  • Meta description: 155–160 characters on desktop, ~120 on mobile. Google rewrites descriptions ~70% of the time, but a well-crafted description still influences click-through when it's kept.
  • URL slug: 75 characters before it's likely to be truncated in SERP snippets. Shorter is better for readability and shareability.

Character Counter shows all three limits with green/amber/red status bars so you can see at a glance whether your copy is safe, close to the edge, or over.

Social media character limits (2026)

Current limits at time of writing:

  • X / Twitter: 280 characters for non-verified accounts. Premium subscribers can post up to 25,000, but 280 is the visible-in-feed cap.
  • Bluesky: 300 characters.
  • Threads: 500 characters.
  • Instagram bio: 150 characters. Instagram caption: 2,200 characters (only the first 125 show without a 'more' click).
  • LinkedIn post: 3,000 characters (only the first ~140 show above the fold).
  • YouTube title: 100 characters (first 60 show in most surfaces). YouTube description: 5,000 characters.
  • TikTok caption: 2,200 characters.
  • Facebook post: 63,206 characters — practically unlimited but engagement drops sharply past ~80 characters.

SMS: GSM-7 vs UCS-2 and segment counting

SMS is more complicated than a simple character limit because messages are encoded in one of two ways:

  • GSM-7 is a 7-bit encoding that fits 160 characters per segment. It supports the basic Latin alphabet, digits, common punctuation, and a handful of European accented characters. A few extra characters ({, }, [, ], |, ~, \, ^, ) each count as 2 characters in GSM-7.
  • UCS-2 is a 16-bit encoding that fits 70 characters per segment. If your message contains even one character outside GSM-7 (an emoji, a curly quote, a Chinese character, an é in a way that breaks GSM), the whole message switches to UCS-2 and your per-segment budget drops from 160 to 70.

Messages longer than one segment use concatenation, which reserves 7 characters per segment for a header — that's why the per-segment cap drops from 160 to 153 (GSM-7) or 70 to 67 (UCS-2) once you go multi-part. Character Counter auto-detects encoding, shows current segment fill, and tells you exactly how many segments will be sent.

Google Ads character limits

  • Headline: 30 characters. Search ads have up to 15 headlines; Performance Max campaigns need 3–15.
  • Long headline: 90 characters (Performance Max only, shown in wide placements).
  • Description: 90 characters. Search ads have up to 4 descriptions; PMax needs 1–5.

These are hard limits — Google will reject asset uploads that exceed them. Character Counter shows each limit as its own progress bar so you can write against all three at once.

Character frequency and why it matters

The character frequency chart shows the twelve most-used characters in your text with counts and percentages. It's most useful for spotting overused characters in ad copy, checking letter distribution when localising into a new language, or as a quick sanity check when you suspect your text is skewed towards a particular symbol (a spike in # means you've probably over-hashtagged). Toggle between 'Letters & digits' (case-insensitive, ignores punctuation) and 'All characters' (counts every code point including spaces, punctuation, and emoji).

Privacy and offline use

Every count runs in your browser. Nothing is uploaded, no request goes to a server, and the tool works with your network disconnected. That means it's safe for unpublished drafts, client-confidential material, and anything else you'd rather not paste into a third-party service. Open your browser's Network tab and type — you'll see zero requests fire.

Tool FAQs

Everything you need to know about using Character Counter.

Why does the character count differ from Twitter's counter?+

X/Twitter uses a weighted count where CJK (Chinese, Japanese, Korean) characters count as 2 and most other characters count as 1. It's a policy decision on their side, not the true character length. This tool shows the actual code-unit length — which is what SMS gateways, database columns, and most other systems care about. For tweets specifically, the 280 limit in the platform panel matches what X shows, but the top 'Characters' stat is the raw length.

What's the difference between characters and graphemes?+

A character in this tool is a UTF-16 code unit — the same thing string.length returns in JavaScript. A grapheme is what a human sees as one character. A basic Latin letter is 1 code unit and 1 grapheme. An emoji like 👍 is 2 code units and 1 grapheme. A family emoji like 👨‍👩‍👧 is 8 code units and 1 grapheme. When you're measuring 'how big will this look to a reader?' use graphemes; when you're measuring 'will this fit in a database column?' use characters or bytes.

Why do emojis take 4 bytes in UTF-8 but appear as 1 character?+

Most emoji live in Unicode 'supplementary planes' (code points above U+FFFF), which UTF-8 encodes as 4-byte sequences and JavaScript stores as a UTF-16 surrogate pair (2 code units of 2 bytes each). So a single 😀 is 4 UTF-8 bytes, 4 UTF-16 bytes, 2 code units — and 1 grapheme. The 'Graphemes' number is usually what a non-technical stakeholder means by 'characters'.

What happens when my SMS switches from GSM-7 to UCS-2?+

Your per-segment budget drops from 160 characters to 70. A single emoji, curly quote, or non-Latin character is enough to force the switch — even in an otherwise ASCII message. That's why a 100-character message with one emoji becomes a 2-segment SMS while a 100-character all-ASCII message stays 1 segment. Most SMS providers charge per segment, so the emoji effectively doubles your cost. The counter highlights the encoding at the top of the SMS panel so you can spot the switch immediately.

Do search engines actually count characters or pixels?+

Pixels. Google truncates title tags at roughly 580 pixels on desktop, which works out to 50–60 characters for most text — but a title of all Ws and Ms will truncate sooner, while a title of all is and ls will fit more. This tool uses 60 as a practical safe cap because it's what almost every rank tracker, CMS, and SEO plugin uses. If you want pixel-accurate truncation previews, use the SERP Snippet Preview tool.

How is reading time calculated?+

Reading time is words / wpm × 60 seconds. The default is 225 words per minute — the average for adult readers on English prose, established across a meta-analysis of 190 studies (Brysbaert 2019). Adjust the slider between 100 and 400 wpm to match your audience: slower for technical or academic content, faster for skimming, list-heavy, or well-known material.

Does the tool work offline?+

Yes. Once the page has loaded, every count is computed in your browser using standard JavaScript APIs (String.length, TextEncoder, Intl.Segmenter). Disconnect from the network and it still works. Nothing is logged, stored, or uploaded.

Does it handle non-English text?+

Yes, in every way that matters: word matching uses Unicode letter and digit classes (so Chinese, Japanese, Arabic, Cyrillic, Greek, Devanagari, and every other script counts), grapheme counting follows the Unicode grapheme cluster algorithm, and UTF-8 byte counting is exact. Note that SMS auto-switches to UCS-2 for any script outside GSM-7's ~130-character alphabet, so an all-Arabic message will use 70 chars/segment.