Skip to main content

Character Counter

Count characters, code points, graphemes and UTF-8 bytes as you type, and check the text against X, SMS, meta description and caption limits.

0
Characters
Unicode code points
0
As you see it
Graphemes
0
No spaces
Excluding whitespace
0
UTF-8 bytes
What a database counts
0
UTF-16 units
JavaScript's length
0
Words
Whitespace separated

Fits within

    SMS

    Nothing typed yet.

    All Text tools →

    This tool runs entirely in your browser. Nothing you enter is sent to our servers, so there is nothing for us to store or see.

    About the Character Counter

    Count characters as you type, and see immediately whether the text fits an X post, a meta description, a page title, an SMS or a social caption. Each limit is checked in the unit that platform actually enforces, not a single number reused everywhere.

    That distinction is the reason most character counters disagree with the platform they claim to measure. "How many characters" has four correct answers: UTF-16 code units — what JavaScript's length returns, where an emoji is 2 and a flag is 4; code points, where an emoji is 1; graphemes, what a person sees, where 👍🏽 is one character rather than two; and UTF-8 bytes, which is what a database column and an HTTP header measure. All four are shown.

    The SMS figure goes further and works out the encoding. A message of plain Latin text sends as GSM-7 at 160 characters per segment; a single curly quote pasted from a word processor forces the whole message to UCS-2 and drops it to 70, which is how a "short" message quietly becomes three billable ones. The tool names the character responsible.

    How to use the Character Counter

    1. Type or paste your text

      Counting starts immediately and updates on every keystroke. You can also drop a text file onto the box.

    2. Read the four counts

      Code points is the everyday answer. Graphemes is what a reader sees. Bytes is what a database column limits. UTF-16 units is what a naive counter would have told you.

    3. Check it against a limit

      The panel below lists common platform limits with how many characters you have left, turning red the moment you go over.

    4. Watch the SMS encoding

      If the text drops to UCS-2, the tool names the character that caused it — usually a curly quote, an em dash or an emoji — so you can replace it and get back to 160.

    Frequently asked questions

    Why does this count differ from another character counter?

    Almost always because of emoji or accented characters. Most counters report JavaScript string length, where a single emoji counts as two and a flag emoji as four. This tool shows that number alongside the code point and grapheme counts, so you can see exactly where the disagreement comes from and which one your platform uses.

    Which count does X use for the 280 limit?

    X counts Unicode code points, with the exception that CJK characters — Chinese, Japanese and Korean — count as two. A URL is always counted as 23 characters regardless of its real length. The figure here is the code point count, which is correct for Latin text and slightly generous for CJK.

    Why does my SMS suddenly cost three messages?

    Because one character forced the encoding to change. Plain Latin text sends as GSM-7 at 160 characters per segment. A single character outside that set — a curly quote, an em dash, an emoji, an accented letter not in the GSM table — switches the entire message to UCS-2 at 70 characters per segment. The tool names the offending character.

    How long should a meta description be?

    Around 150 to 160 characters. Google measures the rendered width in pixels rather than counting characters, so the real cut-off varies with the letters you use, but 155 is a safe target. Anything beyond that is usually truncated with an ellipsis on desktop and cut shorter still on mobile.

    Does the text leave my browser?

    No. Counting happens entirely in the page and nothing is transmitted or stored, which is why this is safe for a draft you have not published, a customer message or anything else confidential.