Character counter
Live character count with and without spaces, plus common platform limits.
Type or paste text to see the exact character count. Handy when a field has a hard limit and you need to trim to fit.
Common character limits
Runs entirely in your browser. Your text is never uploaded — open DevTools, Network tab, and you will see zero requests while you use this tool.
How to use it
- Paste your text into the box.
- Check Characters for the total and No spaces for the count without whitespace.
- Trim until you are inside the limit you need.
What this tool does
The counter reports two numbers that platforms care about: total characters including spaces, and characters with every space, tab and line break removed. Both update as you type, so you can trim a sentence and watch it drop under the limit instead of pasting into the target field and hoping.
A character is one Unicode code point: a letter, a digit, a punctuation mark, a space, or a line break. A line break counts as one character even though you cannot see it — which is why a text that looks like 158 characters can be rejected at 160.
Character limits worth remembering
These are the limits people hit most often. Where a platform truncates rather than blocks, the number is the point at which text starts disappearing.
| Field | Limit | What happens past it |
|---|---|---|
| Meta title (search snippet) | ~60 | Cut with an ellipsis. Google measures pixel width, so wide capitals run out sooner. |
| Meta description | ~160 | Truncated, or replaced entirely by text Google picks from the page. |
| One SMS segment | 160 | Split into multiple billed messages. Any non-GSM character drops the limit to 70. |
| Instagram bio | 150 | Hard stop — you cannot save more. |
| Post on X | 280 | Hard stop for standard accounts. Links count as a fixed 23. |
| LinkedIn post | 3000 | Hard stop. The feed collapses after ~140 behind see more. |
| YouTube description | 5000 | Hard stop. Only the first ~157 show above Show more. |
| YouTube title | 100 | Hard stop; search results cut around 60. |
| Alt text | ~125 | Screen readers keep going, but the text stops being useful. |
Two of these hide a trap. A URL in a post on X always costs 23 characters no matter how long it is, so shortening links there gains you nothing. And an SMS containing a single emoji or a curly quote switches the whole message from GSM-7 to UCS-2 encoding, cutting each segment from 160 characters to 70.
Emoji, accents and surrogate pairs
Not every visible character costs one unit. Text is stored as UTF-16 in browsers and in most APIs, and characters above the basic range take two units — a surrogate pair. Many platforms count those units rather than the symbols you see.
| Text | Symbols you see | Typical counted length |
|---|---|---|
hello | 5 | 5 |
café typed with an accented e | 4 | 4 |
cafe plus a combining accent | 4 | 5 |
| A single smiling emoji | 1 | 2 |
| A flag emoji | 1 | 4 |
| A family emoji joined with zero-width joiners | 1 | up to 11 |
The practical rule: if your text is within five characters of a hard limit and contains emoji, test it in the real field. If it is comfortably under, ignore the whole issue.
The same applies to invisible characters. A zero-width space, a non-breaking space pasted from Word, or a trailing newline all consume length while showing nothing. Run the text through the text cleaner first if the count looks higher than it should.
When you need it
- Writing meta tags. Titles and descriptions are the classic case: too long and the snippet is cut mid-word, too short and you waste space.
- Bios and profiles. Instagram, X and LinkedIn all cap the bio, and the editor usually will not tell you by how much you are over.
- Bulk SMS. Every 160 characters is a separate billable segment, so a 165-character message costs double.
- Database fields and forms. A
VARCHAR(255)column truncates silently. Checking the length beforehand is faster than debugging why the last words vanished. - Ad copy. Search and display ad headlines and descriptions are all character-capped, and the ad platform rejects the whole asset if one field is over.
- Subtitles. Around 42 characters per line, two lines maximum, is the usual broadcast convention.
Doing it without this tool
- Microsoft Word: Review → Word Count lists characters with and without spaces in the same dialog.
- Google Docs: Tools → Word count shows a character total; there is no without-spaces figure, so subtract the spaces yourself.
- Excel or Google Sheets:
=LEN(A1)for the total and=LEN(SUBSTITUTE(A1," ",""))for the count without spaces. - Notepad++: View → Summary, which also counts a selection.
- Command line:
wc -m file.txtcounts characters,wc -ccounts bytes — they differ the moment the file is not pure ASCII. - Browser console:
"your text".lengthgives the UTF-16 length, which is exactly what most platform limits measure.
Privacy: your text never leaves your browser
Counting happens in JavaScript on the page. Nothing is uploaded, logged or stored, and there is no account to create. Reload the page and the box is empty.
That is worth checking for a character counter specifically, because the text people measure is often a bio, a customer message or an unreleased product description. You can verify it in the Network tab of your browser developer tools: type into the box and no request appears.
Related tools
Frequently asked questions
Usually yes. Most platforms count spaces, so use the Characters number; the No spaces figure is there for the rare system that ignores whitespace.
Rarely. Most emoji are stored as surrogate pairs and count as two, and flags or family emoji can count as four or more. Test in the real field if you are within a few characters of a limit.
About 160 characters is the safe target. Google truncates by pixel width rather than character count, so a description full of wide capitals gets cut sooner.
One segment is 160 characters in GSM-7 encoding, but a single emoji or curly quote switches the message to UCS-2, which allows only 70 characters per segment.
Yes, one character each, and Windows-style breaks count as two. That is why a text that looks short can still be rejected by a strict field.
No practical limit. The counter handles long documents without slowing down, and everything stays in your browser.