Free online character counter. Paste or type your text and instantly see characters with and without spaces, words, sentences, emoji, SMS segments, and how you fit 16 platform limits. No signup. No upload. Your text never leaves your browser.
Your text never leaves your browser. Nothing is uploaded or stored.
Characters use raw character length — the figure platform limits enforce · Reading time at 238 WPM (Brysbaert 2019) · Speaking time at 130 WPM, presentation pace
Visible characters count what a human sees (one 👨👩👧👦 family emoji = 1) · X-count reproduces X/Twitter's official weighted counting: every emoji counts as 2, CJK characters count as 2, and every URL counts as exactly 23 characters (t.co), after NFC normalization · UTF-8 bytes measure storage size: é = 2 bytes, € = 3, most emoji = 4
Confirmed: media adds 0 characters. Photos, videos, GIFs, and polls attached through X's official apps never consume your 280-character budget — your text is the only thing metered. (Alt text is separate: up to 1,000 characters per image, and it does not count against the post either.)
Updates as you type. Dashed markers on the bars show the fold point — where the feed hides your text behind a "see more" button.
Platforms do not count characters the same way, so each row is metered with that platform's own rules. The two X rows use X's weighted count (every emoji and CJK character counts as 2, every URL counts as 23). The Bluesky row counts grapheme clusters — what a human sees — because that is what Bluesky's limit is enforced on. Every other row counts raw characters with spaces. The same text can therefore show three different totals in this panel, and all three are correct. Fold points: Instagram shows about 125 characters before "more", LinkedIn about 210 on desktop (140 on mobile), TikTok roughly the first 100. All limits were last verified in September 2026.
How your text splits into billable SMS segments — GSM-7 plain text or UCS-2 Unicode, with per-segment sizes and hidden costs.
Plain GSM-7 text — one segment holds up to 160 characters.
Paste your text or type directly into the box above. Your character count, word count, sentence count, paragraph count, reading time, speaking time, and live platform limits all update the moment you start typing. No account. No upload. No page reload. Everything runs in your browser.
This is the character counter built for professionals who need more than a number. You get the exact count that platforms actually enforce, the encoding that your SMS message is using, the fold point where Instagram and LinkedIn truncate your text, and a live comparison against 16 platform limits at once. One paste, every answer. Most character counters give you one number — this one gives you everything that number connects to.
| Metric | What it measures | Who needs it |
|---|---|---|
| Characters (with spaces) | The raw character count including every space and line break. This is the number social media platforms, SMS gateways, and SEO tools enforce. | Social media managers, SMS marketers, SEO writers, copywriters |
| Characters (without spaces) | Total characters after removing all spaces and whitespace. Used in translation agency pricing, academic submissions in some countries, and typesetting. | Translators, academic writers, localization professionals |
| Visible characters | Grapheme clusters per Unicode Standard Annex 29. A family emoji (11 raw code units) counts as 1 here. This is what a human reader perceives. | Anyone troubleshooting why two tools show different counts |
| X/Twitter weighted count | Applies the official X weighted system: emoji count as 2, CJK characters count as 2, every URL counts as 23, Latin letters count as 1. | Social media managers writing for X |
| Words | Standard word count. Hyphenated terms (well-known) count as one word. | Writers, editors, students, bloggers |
| Sentences | Count of sentences detected by terminal punctuation. | Editors, UX writers, content strategists |
| Paragraphs | Blocks separated by a blank line. | Long-form writers, journalists, academic writers |
| Letters only | Alphabetic characters, no digits or punctuation. | Password validation, certain academic requirements |
| Digits only | Numeric characters in the text. | Developers validating numeric input |
| Emoji count | Number of emoji detected by grapheme cluster analysis. | Social media managers budgeting platform limits |
| Invisible characters | Hidden Unicode detected live: zero-width spaces, byte-order marks, non-breaking spaces, soft hyphens, bidi controls, and stray control characters. | Developers, SEO specialists, anyone debugging “identical” strings that refuse to match |
| UTF-8 bytes | Storage size of the text when encoded in UTF-8 — the unit databases, APIs, and byte-based limits measure. é = 2 bytes, € = 3 bytes, most emoji = 4 bytes. | Developers checking VARCHAR limits, API payloads, and encoding costs |
| SMS segments | Number of billable message parts under GSM-7 or UCS-2 encoding, computed live. | SMS marketers, business messaging teams |
| Reading time | Estimated at 238 WPM (Brysbaert 2019 meta-analysis, 190 studies, 18,573 participants). | Bloggers, content marketers, UX writers, newsletter editors |
| Speaking time | Estimated at 130 WPM (standard formal presentation pace). | Public speakers, podcasters, educators, corporate trainers |
The reading time figure comes from Marc Brysbaert's 2019 meta-analysis published in the Journal of Memory and Language. Most tools still use 200 WPM (too slow) or 300 WPM (a speed-reading marketing number from the 1970s). The research-accurate figure for adults reading English non-fiction silently is 238 WPM — that is the number this tool uses, and the reading time calculator covers it in full depth. The speaking time figure is estimated at 130 WPM, the standard formal presentation pace — the speaking time calculator covers pace presets, rehearsal timing, and format-specific word targets in depth.
Every character counter shows two numbers. Almost none explains which one you actually need for a given task. Here is the clearest breakdown of when each one applies.
Platforms enforce characters with spaces. Every social media network, every SMS gateway, every ad platform, and every SEO character limit counts spaces as characters. When Twitter/X says you have 280 characters, spaces count toward that 280.
Some academic and professional workflows use characters without spaces. Translation agencies often price work per character without spaces. Some European universities specify abstract length in characters excluding spaces. Japanese and Chinese academic submissions sometimes use character counts that are inherently spaceless because CJK languages do not use word-separating spaces.
| Use case | Which count to use | Why |
|---|---|---|
| Twitter/X post | With spaces | Platform enforces character count including all spaces and line breaks |
| Instagram caption | With spaces | All 2,200 characters include spaces; feed shows first 125 before truncation |
| LinkedIn post | With spaces | All 3,000 characters include spaces; feed shows roughly the first 210 before the fold |
| SMS message | With spaces | GSM-7 segment limit of 160 characters counts every space |
| Meta description | With spaces | Google measures character width; spaces count toward the 150-160 display limit |
| Translation quote | Without spaces | Many agencies price per character without spaces (standard in the translation industry) |
| Academic abstract (many universities) | Check requirements | Some specify with spaces, some without; requirements vary by institution and country |
| Typesetting / print layout | Without spaces | Glyph count for visible characters, not whitespace |
Spaces and line breaks typically make up 15 to 20 percent of English text. That means a 160-character SMS draft that looks fine at 136 characters without spaces may already be over limit when you count the spaces. Always use the with-spaces number unless you have a specific reason not to.
The average English word is about 4.7 letters long. With its trailing space, a word averages roughly 6 characters in practice. Use this table for planning, not precision — paste your actual text above for the exact figure.
| Word count | Approx. characters (with spaces) | Platform context |
|---|---|---|
| 13 words | ~80 characters | TikTok bio limit |
| 25 words | ~150 characters | Instagram bio limit |
| 27 words | ~160 characters | One standard SMS segment |
| 47 words | ~280 characters | Twitter/X free post limit |
| 83 words | ~500 characters | Threads post limit |
| 100 words | ~600 characters | Planning benchmark |
| 35 words | ~210 characters | LinkedIn post fold — visible before "see more" on desktop |
| 250 words | ~1,500 characters | Planning benchmark |
| 367 words | ~2,200 characters | Instagram caption maximum |
| 500 words | ~3,000 characters | LinkedIn post maximum |
| 667 words | ~4,000 characters | TikTok caption limit (raised from 2,200 in 2023) |
| 1,000 words | ~6,000 characters | Planning benchmark |
| 2,000 words | ~12,000 characters | Planning benchmark |
These conversions use ~6 characters per word including spaces. Conversational text runs shorter (~4-5 chars/word). Technical and academic writing runs longer (~7-8 chars/word). Paste your real text for an exact count.
If you have ever pasted the same text into two different character counters and seen different totals, the disagreement is almost always about what "one character" means. Computers count text in three different ways, and every counter has to pick one. This is the clearest explanation you will find of all three.
JavaScript, Java, and virtually every social platform use UTF-16 code units internally when they enforce a character limit. For ordinary English text, one character equals one code unit, so the count matches what you see. The difference appears only for characters outside the basic multilingual plane.
A simple thumbs-up emoji (one visible character) is 2 code units. An emoji with a skin tone modifier is 4 code units. A flag emoji is 4 code units. A family emoji built with zero-width joiners is 11 code units. This is why emoji consume your Twitter/X budget so fast, and why your message can be "short" visually but over the platform limit technically.
A code point is a single entry in the Unicode character catalog. Every character that humans use in any language has at least one code point. The family emoji has 7 code points (four people plus three zero-width joiners). Code points matter most to developers building text processing systems.
A grapheme cluster is what a human perceives as one character, defined formally in Unicode Standard Annex 29. The family emoji, regardless of how many code points or code units it uses, is one grapheme cluster because a reader sees one thing. The "visible characters" metric in this tool counts grapheme clusters. This is the number that matches human intuition.
| Text | Code units (raw count) | Code points | Grapheme clusters (visible) |
|---|---|---|---|
| Hello | 5 | 5 | 5 |
| café (precomposed é) | 4 | 4 | 4 |
| café (e + combining accent, U+0301) | 5 | 5 | 4 |
| Thumbs-up emoji | 2 | 1 | 1 |
| Thumbs-up with skin tone modifier | 4 | 2 | 1 |
| US flag emoji | 4 | 2 | 1 |
| Family of four emoji (with ZWJ) | 11 | 7 | 1 |
The café row (combining accent) is the classic tripwire. The same visible word can be 4 or 5 characters depending on how the text was encoded before you pasted it. This is the most common reason two counters disagree about identical-looking text.
None of these units is wrong. They answer different questions. Raw code units tell you what a platform will enforce. Grapheme clusters tell you what a reader sees. Code points help programmers. A character counter that does not say which unit it uses is the root cause of most "why are these different?" confusion you will ever encounter with text tools.
This tool shows the raw count by default (because limits are enforced against raw code units), the visible count separately, and explains both. If you paste the same text into a tool that counts grapheme clusters and one that counts code units, you will see different numbers for text that contains emoji. Neither tool is wrong. They are measuring different things.
There is a fourth category of character that makes every counting question harder: the ones with no visible glyph at all. Text copied from websites, PDFs, and Word documents routinely carries hidden Unicode — a zero-width space (U+200B) inserted by a content management system, a byte-order mark (U+FEFF) left over from an exported file, a non-breaking space (U+00A0) from a web form, or a soft hyphen (U+00AD) buried mid-word. To every character counter they look like ordinary characters. To your code, your database, and your search index they are landmines: two strings that render identically can fail an exact-match comparison because one of them contains a character that cannot be seen.
The security dimension is real and documented. Bidi override characters (U+202A to U+202E) can reorder how source code displays versus how it compiles — the technique researchers named “Trojan Source” (CVE-2021-42574), which slipped malicious logic past human code review. At the everyday end, the most common casualties are database imports, CSV parsing, coupon codes, and string comparisons that fail for no visible reason. The Invisible Character Detector in the tool above counts each hidden character type live as you type, and the Strip Hidden Characters button removes the dangerous ones in one click.
The stripper is deliberately conservative. Zero-width joiners that hold multi-person emoji together are protected, because removing them would split 👨👩👧👦 into four separate people. Zero-width non-joiners are preserved too, because they carry real meaning in Arabic, Persian, and Devanagari script shaping. Everything else that is invisible and accidental — zero-width spaces, byte-order marks, soft hyphens, word joiners, bidi controls, and stray control characters — is removed, and non-breaking spaces are converted to the regular spaces they impersonate.
Twitter/X does not count characters the way most tools do. It uses a weighted system defined in the open-source twitter-text library, where different character types contribute different amounts to the 280-character limit. Understanding this system is the difference between crafting a post that fits and one that gets cut off.
| Character type | Weight | Maximum at this weight |
|---|---|---|
| Latin letters, digits, punctuation, common symbols (U+0000 to U+10FF) | 1 character | 280 of these fit |
| General punctuation including the zero-width joiner (U+2000 to U+200D) | 1 character | ZWJ sequences do not reduce the emoji count further |
| Hyphens, dashes, and curly quotation marks (U+2010 to U+201F) | 1 character | Standard dashes and typographic quotes |
| Prime marks (U+2032 to U+2037) | 1 character | Measurement marks |
| Emoji (all types, all skin tones, all ZWJ sequences) | 2 characters | Maximum 140 emoji per post |
| CJK characters (Chinese, Japanese, Korean, and related scripts) | 2 characters | Maximum 140 CJK characters per post |
| All other Unicode (default weight) | 2 characters | Currency symbols (₹ ₽ €), math and arrow symbols, Latin Extended Additional (Vietnamese), polytonic Greek |
Every URL in a post counts as exactly 23 characters, regardless of its actual length. A 200-character URL counts as 23. A 12-character URL also counts as 23. This is because X automatically shortens all URLs through its t.co link shortener. A counter that measures the raw character length of a URL in a post will always give you the wrong weighted count — the X-count on this page applies the 23-character rule automatically, and the Twitter character counter applies it too.
Images, videos, GIFs, and polls attached through official X apps count as 0 characters. Mentions that auto-populate at the beginning of a reply also count as 0. Only the body text you write counts against the limit — which is why the media checkbox above exists: attach four photos and your full 280-character budget is still yours.
X normalizes all text to Unicode NFC (Normalization Form Composed) before counting. This means a decomposed e-plus-accent sequence is collapsed to a single precomposed character before the limit is applied. The practical effect: X always measures the most compact form of your text, and so does the X-count in this tool.
| Field | Limit | Notes |
|---|---|---|
| Post (free account) | 280 weighted characters | Emoji and CJK count as 2; URLs always count as 23 |
| Post (X Premium) | 25,000 characters | First 280 displayed before "Show more" button |
| Bio | 160 characters | Standard weighted counting applies |
| Display name | 50 characters | Standard weighted counting |
| Username | 15 characters | Letters, numbers, and underscores only |
| Direct message | 10,000 characters | Standard weighted counting |
| Alt text for images | 1,000 characters | Standard weighted counting |
SMS character counting is the most technically complex and most practically consequential counting problem in everyday messaging. Getting it wrong does not just mean your message looks odd — it means your SMS marketing campaign bills three times what you budgeted for.
| Encoding | Single SMS limit | Per segment (long messages) | What one character costs | Triggered by |
|---|---|---|---|---|
| GSM-7 (standard) | 160 characters | 153 characters | 7 bits | Latin letters, digits, basic punctuation, common symbols |
| GSM-7 extension table | Fewer than 160 | Fewer than 153 | 14 bits (2 slots each) | { } [ ] \ | ~ ^ and the euro sign |
| UCS-2 / Unicode | 70 characters | 67 characters | 16 bits | Any emoji, curly quotes, non-Latin scripts, accented chars outside GSM-7 |
Source: 3GPP TS 23.038, the specification that defines SMS character encoding — used by every GSM carrier globally.
A 140-character plain-text message in GSM-7 is one segment and costs one SMS billing unit. Add a single emoji and the entire message switches to UCS-2 encoding. The per-segment limit drops from 160 to 70 characters. Your 140-character message, now in UCS-2, needs three segments of 67 characters each to transmit. You pay three billing units instead of one.
This is not hypothetical. A 160-character marketing message at scale, accidentally triggered into UCS-2 by a single emoji in the sign-off, triples the send cost for the entire campaign. The SMS Segment Analyzer in this tool shows encoding detection and segment count in real time before you hit send.
Word processors (Microsoft Word, Google Docs, Apple Pages) automatically replace straight quotation marks (") with typographic curly quotes ("). Curly quotes are not in the GSM-7 character set. If you draft a professional SMS in Word and paste it into your send platform, every curly quote silently forces UCS-2 encoding and shrinks your segment from 160 to 70 characters.
A 158-character SMS drafted in Word with one curly apostrophe in "don't" becomes three segments. Three billing units instead of one. This is the single most common invisible billing error in SMS marketing.
Ten characters sit in the GSM-7 extension table rather than the main table — nine visible characters plus the rarely used form-feed control character. Each one takes two character slots to encode, not one. The nine visible ones are: { } [ ] \ | ~ ^ and the euro sign (€). A message containing three euro signs effectively uses 6 character slots, not 3. Most character counters, including the most popular competitors, do not detect this — the analyzer above counts extension characters at their true 2-slot cost.
When a message is longer than one segment, each segment includes a 7-byte User Data Header (UDH) that carries reassembly instructions so the recipient's phone knows how to put the pieces back together in the right order. That header consumes space inside the segment, which is why long messages use 153 characters per segment (not 160) for GSM-7 and 67 per segment (not 70) for UCS-2.
| Message type | Segment limit | Header | Effective characters |
|---|---|---|---|
| Single GSM-7 message | 160 octets | No header needed | 160 characters |
| Multi-part GSM-7 message | 160 octets per part | 7-byte UDH per part | 153 characters per part |
| Single UCS-2 message | 140 octets | No header needed | 70 characters (16 bits each) |
| Multi-part UCS-2 message | 140 octets per part | 7-byte UDH per part | 67 characters per part |
Every limit below was verified against official platform documentation or help pages in September 2026. Platform limits change more often than most reference tables acknowledge — TikTok changed its caption limit three times between 2020 and 2023, and LinkedIn doubled its post limit from 1,300 to 3,000 in June 2023. Any limits table without a verification date should be treated as potentially outdated.
| Platform | Limit | Fold point (before "see more") | Notes |
|---|---|---|---|
| Twitter/X post (free) | 280 | Full post shown | Emoji and CJK count as 2; URLs always 23 |
| X Premium post | 25,000 | First 280 shown | Same weighted counting rules apply |
| X bio | 160 | N/A | Username: 15 chars; Display name: 50 chars |
| Instagram caption | 2,200 | ~125 characters | First 125 chars shown in feed before "more" button |
| Instagram bio | 150 | N/A | Username limit: 30 characters |
| LinkedIn post | 3,000 | ~210 characters | Doubled from 1,300 in June 2023; about 210 visible on desktop, 140 on mobile |
| LinkedIn headline | 220 | N/A | About section: 2,600; Comments: 1,250; Connection note: 200 (free) / 300 (Premium) |
| TikTok caption | 4,000 | ~100 characters | Raised from 2,200 in 2023; bio limit: 80 characters |
| Facebook post | 63,206 | N/A | Some sources cite 33,000 (API limit may differ from web interface) |
| Threads post | 500 | N/A | Text attachments added September 2025 allow up to 10,000 characters |
| Bluesky post | 300 | N/A | Counts grapheme clusters, not raw code units (different from X) |
| Discord message | 2,000 | N/A | Nitro subscribers can send up to 4,000 characters |
| Reddit post title | 300 | N/A | Text post body: 40,000 characters; Comments: 10,000 characters |
| Pinterest pin description | 500 | N/A | Pin title: 100 characters; ad descriptions can run to 800 |
| YouTube video title | 100 | N/A | Description: 5,000 characters; Tags combined: 500 characters |
| Snapchat caption | ~80 | N/A | Varies by feature; Chat messages: up to 500 characters |
| WhatsApp message | 65,536 | N/A | Status captions: approximately 700 characters |
Every platform has two limits: the hard limit (the maximum characters you can publish) and the fold point (the characters visible in the feed before a reader has to tap "more"). The fold point is strategically more important than the hard limit for virtually all social media content, because everything below the fold requires a deliberate tap most readers never make.
The gap between the two numbers is enormous. An Instagram caption can run to 2,200 characters, but the feed shows about 125 before the "more" button — the effective strategic limit for your hook is 125, not 2,200. A LinkedIn post can run to 3,000 characters, but roughly the first 210 are visible on desktop and about 140 on mobile, where most LinkedIn reading happens. A TikTok caption can run to 4,000 characters, but only the opening line or two — roughly the first 100 characters — appears before the caption is cut.
The practical rule: write your hook to fit inside the fold point, and treat everything after it as bonus material for the readers who tap. The limits panel above marks each platform's fold point with a dashed line on its meter, so you can watch your hook cross the fold in real time while you draft. No other character counter makes the distinction visible.
| Field | Recommended limit | Hard limit | Notes |
|---|---|---|---|
| Google title tag | 50-60 characters | ~70 characters (before pixel truncation) | Google truncates at ~600 pixels width, not fixed character count; 60 chars is safe for most titles |
| Google meta description | 150-155 characters | ~160 characters displayed | Google truncates at ~920 pixels (about 158 characters on average); put key message in first 100 for mobile truncation |
| Google Ads headline | 30 characters | 30 characters | Up to 15 headlines per responsive search ad; at least 3 recommended |
| Google Ads description | 90 characters | 90 characters | Up to 4 descriptions per responsive search ad |
| YouTube video title | 100 characters | 100 characters | First 60-70 characters show in search results |
| YouTube description (above fold) | ~150 characters | 5,000 characters total | First line shown before "Show more" in search; first 100-150 critical |
| Email subject line | 30-50 characters recommended | Varies by client | Mobile clients show roughly 33-43 characters; front-load the key words |
| Email preheader text | 85-100 characters | Varies by client | Shown as preview text after the subject line in inbox view |
| Push notification title | 40-60 characters | Varies by OS | iOS and Android clip titles at different lengths |
Title tags are truncated by pixel width, not character count. Narrow letters (l, i, 1, f) take less space than wide letters (W, M, m). A 60-character title made of wide letters may truncate; a 65-character title made mostly of narrow letters may display in full. The 60-character guideline is a safe rule for mixed text.
| Platform or field | Character limit | Notes |
|---|---|---|
| LinkedIn Direct Message | 8,000 characters | InMails under 400 characters earn 22% higher response rates (LinkedIn's own research) |
| Google Business Profile review response | 4,096 characters | Applies to owner responses on reviews |
| Yelp review | 5,000 characters | Minimum 85 characters required |
| Apple App Store description | 4,000 characters | First few lines visible before the "More" tap |
| Google Play Store description | 4,000 characters | Short description: 80 characters |
| APA abstract | 250 words (not characters) | Word limit, not character limit; verify current journal requirements |
| Common App personal statement | 650 words | Word limit, not character limit |
| LinkedIn connection request | 300 characters | 200 for free accounts; 300 for Premium and Sales Navigator |
Most word processors can show you a character count, but almost none show it live as you type. Here is how to find it in the most common tools, and why most writers end up here instead.
Open the Tools menu and select Word count. The dialog box shows characters with spaces and characters without spaces. This is a dialog, not a live counter — it does not update as you type without reopening it. The keyboard shortcut is Ctrl+Shift+C on Windows or Command+Shift+C on Mac. To check a selection only, highlight the text first and then open Word count; the dialog will show counts for the selected text.
Go to the Review tab in the ribbon and click Word Count. The dialog shows characters with and without spaces. Like Google Docs, this is not a live counter — it shows the count at the moment you open it. The status bar at the bottom of the Word window shows a live word count but not a live character count.
Excel has no native character count display. Use the LEN() function in a cell: =LEN(A1) returns the character count of the text in cell A1, including spaces. To exclude spaces, use =LEN(SUBSTITUTE(A1," ","")).
Most collaborative tools do not have a built-in character counter. The standard workflow is to paste your draft here, check the count, then paste the final version into the target application.
Character counters serve very different professionals for very different reasons. Here is the complete map of use cases and the specific limits that matter for each.
| Who | Primary use case | Key limits to watch |
|---|---|---|
| Social media managers | Drafting and checking posts across multiple platforms simultaneously | X: 280; Instagram caption: 2,200 (fold: 125); LinkedIn: 3,000 (fold: 210); TikTok: 4,000 (fold: 100) |
| SMS marketers | Ensuring campaigns stay in one segment and in GSM-7 encoding | GSM-7: 160 per segment; UCS-2: 70 per segment; watch for curly quotes and extension characters |
| SEO writers and strategists | Title tags and meta descriptions that display fully in search results | Title tag: 50-60 characters; Meta description: 150-155 characters |
| Copywriters | Ad headlines, taglines, CTAs, and promotional copy | Google Ads headline: 30 characters; description: 90 characters; Facebook ad headline: 40 characters |
| Students and academic writers | Essays, abstracts, application personal statements | Varies by institution; Common App: 650 words; APA abstract: 250 words |
| Translators and localization professionals | Pricing by character (often without spaces), fitting translated text into UI space | Characters without spaces for pricing; with spaces for UI character limits |
| Developers and engineers | Validating string lengths, database field constraints, API payload sizes, and debugging invisible characters that break exact-match comparisons | Varies by schema; VARCHAR field limits; API character limits; UTF-8 byte budgets |
| UX and UI designers | Checking that button labels, alert messages, and tooltips fit within design constraints | Varies by design system; typically 20-40 characters for button labels |
| Email marketers | Subject lines and preheader text that display completely on mobile | Subject line: 30-50 characters recommended; Preheader: 85-100 characters |
| Authors and bloggers | Bio fields, article metadata, platform profiles | Author bio on most platforms: 150-250 characters |
| Job seekers | LinkedIn profiles, cover letters, application forms | LinkedIn about section: 2,600 characters; connection request: 300 characters |
| Public speakers and educators | Script timing for presentations, talks, and lessons | Speaking time from word count at 130 WPM |
The clearest decision rule: platforms enforce characters; editors and institutions enforce words. Social media networks, SMS gateways, ad platforms, search snippet displays, and form validation all truncate and bill by character. Academic institutions, book publishers, magazine editors, and most content briefs specify length in words.
This tool shows both at once because most writing tasks have both a character constraint and a word constraint. A 3,000-character LinkedIn post is also about 500 words. A 650-word college application essay is also about 3,900 characters. Knowing both numbers simultaneously prevents the most common workflow mistake: drafting to one constraint and discovering the other only at publication time. If your work is primarily word-driven — essays, articles, manuscripts — the word counter puts that number first instead.
A character counter is a tool that counts the number of characters in a block of text, typically alongside related metrics like word count, sentence count, and paragraph count. You paste text or type directly, and the numbers update as you write. Character counters are essential whenever you are writing against a limit enforced in characters: a tweet, an SMS, a meta description, an ad headline, or a social media caption.
A character is any single unit of text: a letter, a digit, a space, a punctuation mark, a symbol, a line break, or an emoji. In technical terms, "character" usually means a UTF-16 code unit, which is what most platforms enforce. Emoji count as 2 or more code units each. The distinction between characters (raw count) and visible characters (grapheme clusters, what a human sees) is explained in detail in the counting section above.
Yes. Every major platform limit (Twitter/X, Instagram, LinkedIn, TikTok, SMS, and all SEO tools) is enforced on the character count including spaces. This tool shows both counts: characters with spaces (the number platforms enforce) and characters without spaces (used in some translation and academic workflows). Spaces typically account for 15 to 20 percent of English text.
Characters with spaces is the count including every space and line break. This is the number that social media platforms, SMS gateways, and SEO tools enforce. Characters without spaces removes all whitespace. This is used in translation agency pricing, some academic submissions, and typesetting workflows.
Yes, and they count as more than one character each. A simple emoji like a thumbs-up is 2 raw characters (2 UTF-16 code units). An emoji with a skin tone modifier is 4. A flag emoji is 4. A family emoji built with zero-width joiners is 11. On X/Twitter, every emoji counts as exactly 2 characters regardless of complexity (their weighted system). This tool shows both the raw count and the X-weighted count.
Since October 2018, X uses a weighted character counting system where every emoji counts as exactly 2 characters regardless of how many code points it uses, and CJK characters also count as 2. Before this change, a single family emoji could consume 11 of the 280 available characters. The weighted system is more equitable: complex emoji cost the same as simple ones. X normalizes text to NFC before counting, so precomposed characters always resolve to their compact form first.
A single SMS segment holds 160 characters in GSM-7 encoding (standard Latin character set). If the message contains any character outside GSM-7 (an emoji, a curly quote, a non-Latin script, or certain other characters), the network re-encodes it as UCS-2 and the segment limit drops to 70 characters. Long messages split into multiple segments: 153 characters per segment for GSM-7 and 67 per segment for UCS-2, because 7-byte headers take up the difference. Each segment is billed as a separate message.
One emoji forces the entire message into UCS-2 Unicode encoding, which cuts the per-segment limit from 160 characters to 70. A 160-character plain-text message is one segment. The same message with one emoji becomes three segments (each up to 67 characters), and each segment is billed separately. The same problem occurs with curly quotes (from Word), the euro sign, and nine GSM-7 extension characters that take 2 character slots each.
Your message contains at least one character outside the GSM-7 standard character set. The most common culprits: any emoji, curly or "smart" quotation marks (automatically inserted by Word and most word processors), the euro sign placed in certain contexts, or an accented character that falls outside the GSM-7 alphabet. The SMS Segment Analyzer in this tool highlights the exact characters triggering UCS-2 encoding, and the Convert to GSM-7 Safe button fixes the fixable ones in one click.
Ten characters sit in the GSM-7 extension table: the nine visible ones { } [ ] \ | ~ ^ and the euro sign, plus the rarely used form-feed control character. Each takes 2 character slots in a message (the escape character plus the character itself), not 1. A message containing three euro signs uses 6 character slots for those three characters, not 3. Most character counters do not detect this. This tool's SMS Segment Analyzer counts extension characters at their true 2-slot cost, matching the behavior defined in 3GPP TS 23.038, the specification every GSM carrier follows.
Free posts are limited to 280 weighted characters, where emoji and CJK characters count as 2 each and URLs always count as 23 (via the t.co shortener). X Premium subscribers can post up to 25,000 characters, with the first 280 shown before the expand button. X bios are limited to 160 characters, usernames to 15, display names to 50, and direct messages to 10,000.
All URLs are automatically shortened through X's t.co link shortener and counted as exactly 23 characters, regardless of the original URL length. A 200-character URL counts as 23. A 12-character URL counts as 23. This is a fixed rule in the twitter-text library, the open-source counter X publishes. A character counter that measures the raw character length of a URL in a tweet will give you an incorrect weighted count — the X-count on this page applies the 23-character rule automatically.
Instagram captions allow up to 2,200 characters, but only the first 125 characters are visible in the feed before the caption is truncated with a "more" button. The strategic character limit for the visible hook of any Instagram caption is 125 characters, not 2,200. Instagram bios are limited to 150 characters and usernames to 30.
LinkedIn posts allow up to 3,000 characters, with roughly the first 210 characters visible on desktop (about 140 on mobile) before the "see more" fold. The post limit was doubled from 1,300 to 3,000 in June 2023. The About section allows 2,600 characters, headlines 220, comments 1,250, and position descriptions 2,000. Connection request notes are limited to 200 characters for free accounts and 300 for Premium and Sales Navigator.
TikTok captions allow up to 4,000 characters. The limit was raised from 2,200 in 2023. Only the first 100 characters or so — the opening line or two — are visible in the feed before the caption is truncated. TikTok bios are limited to 80 characters. Many third-party tools and published guides still show the old 2,200 figure.
The safe planning figure is 150 to 155 characters. Google displays roughly 150 to 160 characters on most devices in 2026 (its snippet box is about 920 pixels wide, which averages 158 characters), though this varies by screen width and keyword bolding. Put the most important information in the first 100 characters because mobile snippets truncate earliest. Google rewrites a significant share of meta descriptions regardless of length, so write them to earn the click rather than to summarize the page.
The most common reasons: different counting units (code units vs grapheme clusters), different handling of emoji (some count by code points, some by code units, some by grapheme clusters), and text normalization (whether NFC or NFD form is used). A precomposed accent character and its decomposed equivalent look identical but have different code unit counts. A counter that does not state which unit it uses is the source of most disagreements.
A grapheme cluster is a unit of text that a human reader perceives as one character, defined in Unicode Standard Annex 29. A family emoji looks like one character to a reader but is 11 code units and 7 code points internally. Grapheme cluster counting is the "visible characters" metric in this tool. It is the right number to use when you are asking how long something looks, not how many characters a platform will enforce.
About 600 characters including spaces, based on the planning figure of 6 characters per word (average English word length of 4.7 letters plus a trailing space). Conversational text runs closer to 500 characters per 100 words; technical writing runs closer to 700. Paste your actual text for the exact figure.
The average typist produces about 40 words per minute, which is roughly 200 characters per minute using the 5-characters-per-word convention. Proficient typists reach 80 WPM (about 400 characters per minute). Professional transcriptionists typically sustain 300 to 400 characters per minute. The fastest certified typist on record peaked at approximately 212 WPM.
Yes. Every punctuation mark, digit, space, and symbol counts as a character on every major platform. This tool shows the full composition of your text: the exact count of letters, digits, punctuation marks, spaces, and emoji, which helps you identify what to trim when you need to fit within a limit.
A character counter counts every individual character including spaces, punctuation, and emoji. A word counter groups consecutive non-space characters into words. Social media platforms, SMS gateways, and ad platforms enforce character limits. Academic institutions and editorial style guides typically enforce word limits. This tool shows both simultaneously.
No. All counting runs entirely in your browser using JavaScript. Your text is never uploaded, transmitted, stored, or logged anywhere. Closing the tab removes it completely. You can verify this yourself by opening your browser developer tools (F12), going to the Network tab, and typing into the counter. You will see zero outbound requests containing your text.
Open the Tools menu and select Word count. The dialog shows both characters with spaces and without spaces. This is not a live counter; you need to reopen the dialog to see an updated count after editing. Use Ctrl+Shift+C (Windows) or Command+Shift+C (Mac) to open Word count directly.
Go to the Review tab in the ribbon and click Word Count. The dialog shows characters with and without spaces. The status bar at the bottom of the document window shows a live word count but not a live character count. For a live character count as you type, paste your text here and keep the tool open alongside your document.
Yes. This tool supports all Unicode text including CJK scripts, Arabic, Cyrillic, Thai, and all other languages. For CJK text on X/Twitter, each character counts as 2 under the weighted system (capping a post at 140 CJK characters). For SMS, CJK text forces UCS-2 encoding and reduces the per-segment limit from 160 to 70 characters.
Use the Invisible Character Detector built into this tool. It live-detects the hidden Unicode that ordinary counters never show: zero-width spaces (U+200B), zero-width non-joiners and joiners, byte-order marks (U+FEFF), non-breaking spaces (U+00A0), narrow no-break spaces, soft hyphens (U+00AD), word joiners (U+2060), left-to-right and right-to-left marks, bidi embedding and override controls, and stray C0/C1 control characters. These characters sneak into text copied from websites, PDFs, and Word documents, and they are a classic cause of failed string comparisons, corrupted CSV imports, and database mismatches. Bidi override characters are also a documented security risk — the Trojan Source technique (CVE-2021-42574) used them to disguise malicious code. The Strip Hidden Characters button removes the safe-to-delete ones in one click; zero-width joiners inside emoji and zero-width non-joiners used for Arabic, Persian, and Indic script shaping are deliberately preserved.
The UTF-8 bytes card in the composition grid shows this live. UTF-8 encodes characters with a variable width: ASCII letters, digits, and basic punctuation take 1 byte each; accented Latin characters like é take 2; most currency and math symbols like € take 3; and emoji take 4 bytes each. This matters because databases, APIs, and file systems measure limits in bytes, not characters — a VARCHAR field, an API payload cap, or a UTF-8 column index all consume bytes, and a text that is 500 characters can easily be 900 or more bytes. Multiply the byte figure by your per-byte costs when sizing storage or payloads.
More free counting tools from TextCountify