Character Counter
Live character count, with and without spaces, byte size, and how close you are to common platform limits like tweets and meta descriptions.
Common limits
How it works
On every keystroke the page recomputes three numbers. The character count is JavaScript's
.length, which counts UTF-16 code units. The no-spaces count strips all
whitespace (spaces, tabs, line breaks) with a regex first. The byte size runs your text
through the browser's TextEncoder API, which produces the actual UTF-8 bytes
the text would occupy in a file, a database column, or an HTTP request body. The platform
limits list is then just subtraction against each limit, flipping to "over" styling the
moment you cross one.
The gap between those numbers is where people get burned. An emoji like a smiley is one visible symbol but two UTF-16 code units (so it counts as 2 characters here, and on many platforms) and four bytes of UTF-8. For SMS specifically, the 160-character limit assumes the message stays within the old GSM-7 alphabet: include a single emoji or curly "smart quote" and the carrier silently switches the whole message to UCS-2 encoding, dropping the per-segment limit to 70 characters. If a one-character edit suddenly split your text into two SMS segments, that's why.
Counting happens entirely in this page's JavaScript. Open DevTools' Network tab while you type: you'll see zero requests, because your text never leaves the browser.
Common questions
Why does byte size differ from character count?
Character count is the number of Unicode characters. Byte size (UTF-8) is how many bytes those characters actually take up when encoded, plain English letters are 1 byte each, but emoji and many non-Latin scripts can take 2-4 bytes per character.
Are the platform limits always accurate?
They're the commonly cited limits as of when this tool was built. Platforms change their limits occasionally, treat these as a helpful reference rather than a guarantee.
Is my text sent anywhere?
No, counting happens live in your browser as you type. Nothing is uploaded.