Character Counter
Count characters, words, sentences, lines, and UTF-8 bytes live, with an optional character limit.
- Free, no account
- No watermark
- No usage limit
About the Character Counter
Most character counters hand you a single number and assume you have every platform's limit memorized, which you do not, and neither do I. So this one checks them all at the same time. Paste your caption and the platform panel shows you live whether it clears X at 280, fits one SMS segment, sits under an Instagram caption, or blows past a meta description, each tile green when it fits and red with the exact overage when it does not. You never type the limit in or hunt for it in another tab, it is right there while you write.
Click any platform tile and the big count above locks onto it, so the character card turns red the second you cross that specific line. All of it recalculates on every keystroke, so there is no count button and no reload.
You still get the counts a good counter owes you without asking: characters with spaces, characters without, words, sentences, lines, and the UTF-8 byte size. That last one saves you more often than it looks, and there is a section on it below.
And it all runs in your browser. Nothing you type is uploaded or stored, so a private draft or a half-finished message stays on your own machine. Close the tab and it is gone. It works with your wifi off, because no server is doing the counting.
How to use
- Type or paste your text into the box. You can also drop a .txt file straight onto it, or use Choose a text file to pick one. The counts appear right away and refresh on every keystroke.
- Look at the platform panel. Every tile shows how much room is left in green, or how far over you are in red, for that platform's limit.
- Click the platform you are actually writing for. The big count above starts tracking it and turns red once you go over, so you can shape the text to fit as you go.
- Writing to an odd cap some form handed you, like 500 or 1,000. Type it into the custom limit box instead and it tracks that number the same way.
- Hit Copy text when the count lands where you want it, then paste it wherever it is headed. Clear wipes the box for the next one.
- Want to hand someone the same setup. Use Share to copy a link that reopens the counter locked to the platform you picked, or Embed to drop the live tool on your own site.
The platform panel is the whole point
Free counters make you do the arithmetic yourself. You write a caption, you read "247", and then you have to remember that X is 280, that an SMS turns into a second message at 160, that Google clips a meta description near 160, and run all that subtraction in your head while you are also trying to write well. Every edit, you redo the math for every platform you care about.
This panel handles all of that. It holds fifteen real limits, from X, Threads, Bluesky, Instagram, TikTok, LinkedIn, Facebook, YouTube, and Pinterest, through both SMS segment sizes, the meta description and title tag limits, and the Instagram and X bio caps. Each one is checking your text at the same moment, live. Green means it fits and tells you how much room is left. Red means you are over and tells you by exactly how much. You see, in one look, that your caption is fine for Instagram but nine characters too long for a tweet, without touching a single setting.
Then click the one you are writing for. That tile locks the countdown above onto its limit, which is the number you actually care about turned into "33 remaining" instead of a raw "247". Go past it and the count goes red, and that red is doing real work, your eye catches it in the corner of your vision before you have finished the sentence that pushed you over.
Platforms do move these numbers around, and a few enforce them their own way, so treat the platform's own composer as the final referee at the very edge. For everything up to that last character or two, the panel gets you there without the guessing.
Bytes, and why one emoji breaks a limit
The byte count is the feature most counters skip, and it is the one that saves you when a field measures storage instead of visible characters.
Plain English is the easy case. A letter, a digit, a space, each is one byte in UTF-8, so your character count and byte count match and you never think about it. Add an accented letter, a non-Latin character, or an emoji, and the two numbers split. An é is two bytes. Many Asian characters are three. A single emoji is usually four, and some, a family or a skin-tone version, are stitched from several pieces and cost even more.
A plain character count walks you into one nasty trap. A caption sitting comfortably under a 500-character cap can go well past a 500-byte cap when it is loaded with emoji or non-Latin text, because each of those takes two to four times the room it appears to. Database fields, some file formats, and plenty of older systems cap by bytes, not characters, and they reject text that looks perfectly fine to you. SMS does its own version of this, which is why the panel lists two sizes. A basic message fits 160 characters in one segment. Add one emoji or an accented letter and the whole thing shifts to a heavier encoding that drops the limit to 70, so a single smiley can quietly turn a one-part text into three.
That split shows up in the character count too, and this one takes your side. An emoji counts as one character here, a flag counts as one, and so does a family emoji, because that is what you see and what a caption box charges you for. The Code units (UTF-16) tile is the other view, counting text the way JavaScript itself does, so that same family emoji reads as 11. A few database columns and older form validators cap on exactly that number, which is how a caption your character count calls short still comes back rejected.
If you are anywhere near a byte limit, watch the byte number and let the character one go. That is the entire reason it sits up there next to the rest.
Frequently asked questions
Which count do platforms actually enforce?
Characters with spaces, on nearly all of them, because a space takes up room like any letter. Two wrinkles are worth holding onto. X counts every link as 23 characters no matter the real URL length, and most emoji as two, so its own box can read a little differently from a straight count when your text is heavy on links or emoji. The panel uses the plain character total, the one that matches what you see, and the platform settles the final character.
Why does the panel show SMS at both 160 and 70?
Because the encoding decides it. A message built from basic Latin letters, digits, and common punctuation fits 160 characters in one segment. The moment you add an emoji, an accented letter, or many non-Latin scripts, the carrier switches to a two-byte encoding and the single-segment limit drops to 70. Go past either and the message splits into parts that each get billed. Watch the 70 line whenever your text has anything fancier than plain English.
Are the platform limits kept current?
They are the commonly enforced numbers as of writing, and most have held for years. Some platforms do change a limit or run a test on a slice of accounts, so if you are right on the edge and it matters, paste into the real composer and let it confirm. The panel is built to get you to the line fast, not to replace the platform's own count on the last character.
Do you store or send my text anywhere?
No. The counting runs on your device and none of it leaves, which is exactly why the tool keeps working with your connection switched off. That makes it safe for an unpublished draft, a message you are still choosing words for, or anything you would rather not hand to a server. A shared link carries only the platform you picked, never a word of the text.
Do trailing spaces and blank lines count?
They do, and it catches people out. A space after your last word is still a character, and a stray blank line at the bottom of a paste adds to both the character count and the line count. If your total reads one or two higher than you expected, check the end of the text for whitespace you cannot see. Read the no-spaces count when you want only the visible marks.
How do words map to characters, roughly?
English runs about five characters a word plus a space, so 100 words lands near 600 characters, and 250 characters comes out around 40 to 50 words. Treat those as planning numbers, not conversions, since a paragraph full of "a" and one full of "extraordinary" pull the average opposite ways.
Can I paste in a whole document?
Nothing you type or paste is capped, and files are accepted up to 8 MB, which is far longer than a full manuscript. Nothing is trimmed or sampled either way. A genuinely huge paste, hundreds of thousands of characters, might hang for a fraction of a second while it recounts, but you get the true total, not an estimate.