Character Counter
How it works
Type or paste your text into the input area. The tool counts characters (with and without spaces), words, sentences, paragraphs, and lines, plus estimated reading time at the standard 200 words-per-minute rate. The counter updates on every keystroke: no button to click and no page reload.
Beyond the raw count, the tool cross-checks your text against the character limits of the platforms most people actually need to fit into. If you're writing a tweet, an SMS, or a meta description, a coloured badge turns orange as you approach the platform's cap and red when you're over, so you know you will be truncated before you paste.
Platforms count code units rather than glyphs, and they count whitespace. That has two practical consequences:
• Spaces count. Every platform's "280 character" or "160 SMS" limit includes spaces, punctuation, and line breaks. If you see "250" under "No spaces" but "295" under "Characters", Twitter rejects the latter.
• Emoji and non-Latin characters don't count as one. A 🚀 emoji counts as 2 characters on most platforms (UTF-16 surrogate pair). An SMS with any emoji switches encoding from GSM-7 to UCS-2, which halves the limit from 160 to 70. This is why your "149-character" SMS with emoji suddenly costs two messages.
Frequently Asked Questions
How is reading time calculated?
- At 200 words per minute, the average adult silent-reading speed. For technical material you can halve that (100 wpm); for light fiction you can roughly double it (400 wpm). The figure shown always uses 200 wpm, so tune your expectation to your content.
Does it count spaces as characters?
- Yes. The Characters stat includes spaces, punctuation and line breaks, which is how Twitter, SMS and every CMS count them. The No Spaces stat is there when you want a pure letter-and-digit count, for typing-speed tests or for a platform that documents its limit as "characters excluding whitespace".
Why does my SMS count more than 160 characters with an emoji?
- SMS has two encoding modes. GSM-7 (basic Latin letters, digits, common punctuation) gives you 160 characters per message. As soon as you include an emoji, an accented character, or any non-GSM-7 symbol, the phone switches to UCS-2 encoding, which supports every Unicode character but cuts the per-message limit to 70. This is why a single emoji turns a short SMS into two messages.
What counts as a word?
- Any sequence of non-whitespace characters, split by any Unicode whitespace (spaces, tabs, line breaks). Punctuation attached to a word ("don't", "U.S.A.") counts as one word; numbers count as words; a lone punctuation mark (".") does not. This matches the Word / Google Docs word-count convention.
Is my text stored anywhere?
- No. The tool is a client-only JavaScript app, so the text you paste is processed locally and discarded when you leave the tab. There is no backend, no logging, and no analytics tied to your content. Your browser's DevTools Network tab will show no outbound request for the text you enter.
Character limits by platform
Quick reference for the character caps you're most likely to hit. All limits include spaces and punctuation.
| Platform | Limit | Notes |
|---|---|---|
| Twitter / X post | 280 | 140 on some legacy API endpoints; long-form posts up to 25,000 for verified accounts |
| SMS (GSM-7) | 160 | Plain Latin text only; 7 characters used for multi-part headers on concatenated SMS |
| SMS (UCS-2, with emoji / accents) | 70 | Switches automatically when any non-GSM-7 character is present |
| Meta description (Google SERP) | 155–160 | Truncated with "…" past this; ~120 on mobile |
| Meta title (Google SERP) | 50–60 | ~35 on mobile; Google may rewrite if too long |
| Open Graph / Facebook post | 63206 | ~400 visible before the "See more" fold |
| Open Graph title | 95 | Beyond this, Facebook truncates in the link preview |
| Open Graph description | 200 | Twitter and LinkedIn similar; past this, truncation across platforms |
| Instagram caption | 2200 | Only first ~125 visible without tapping "more" |
| Instagram bio | 150 | |
| Instagram username | 30 | |
| LinkedIn post | 3000 | |
| LinkedIn article title | 150 | |
| LinkedIn headline (profile) | 220 | |
| LinkedIn about / summary | 2600 | |
| YouTube video title | 100 | Best engagement under 70 |
| YouTube video description | 5000 | First ~150 shown above the fold |
| TikTok caption | 2200 | Hashtags count toward the total |
| Discord message | 2000 | 4000 with Nitro; server webhook messages up to 2000 content + 6000 embed |
| Reddit title | 300 | |
| Reddit comment / self-post | 40000 | |
| Slack message | 40000 | Markdown syntax counts toward the limit |
| Pinterest pin title | 100 | |
| Pinterest pin description | 500 | |
| WhatsApp status text | 700 | |
| WhatsApp message | 65536 | ~4096 for a single bubble |
| Amazon product title | 200 | Category-dependent; often enforced at 80 for mobile |
| Amazon bullet point | 500 | Per bullet, 5 bullets max |
| Google Ads headline | 30 | Per headline; up to 3 headlines |
| Google Ads description | 90 | Per description; up to 2 descriptions |
Limits verified 2026. Some platforms silently enforce different caps per region or API tier. Always test before publishing a campaign.