Logo

MonoCalc

/

Social Media Character Limit Checker

Social Media
Line endings are normalised to LF before counting, so a break costs one character whichever editor the text came from. Nothing is uploaded.
No text entered.

How long is this text?

Visible characters is the default and the mode every meter, trim and overflow marker follows unless you change it here.
ModeCountWhere it comes from

Visible characters

in use
0Grapheme clusters via Intl.Segmenter — one per character a reader sees. This is what the meters, the trim action and the overflow marker use.

JavaScript length (what naive counters report)

0UTF-16 code units, the value of String.length. An emoji counts 2, a family emoji 11, a flag 2.

Code points

0Unicode scalar values. Splits a surrogate pair back into one character but still counts each part of an emoji sequence separately.

UTF-8 bytes

0Bytes on the wire via TextEncoder. ASCII is 1 byte, most accented Latin 2, most CJK 3, most emoji 4.

Weighted count

0Your weighting rules applied per code point. No platform is claimed for these ranges — they are an editable starting point.

Words

0

Lines

0

Without whitespace

0

Web addresses

0

Fields

No platform limits ship with this tool. A character limit is a fact about somebody else’s product that changes without notice, so a number only appears here if it was read in that platform’s own documentation and recorded with a source and a date. None could be verified when this tool was built (limits table last reviewed 2026-09-14), so the honest table is the empty one.

Add the fields you write for and type each limit from the documentation in front of you. Every limit stays editable, and a missing row is always better than a confidently wrong one.

No fields yet. Add one above, or press Add starter fields for a named list of the usual suspects — post body, bio, display name, username, title, description, alt text and comment — each waiting for the limit you type.

About This Tool

Social Media Character Limit Checker – Measure Once, Fit Everywhere

Writing for more than one place means writing against more than one ceiling. The same announcement has to survive a short post field, a longer caption, a profile bio, a title, a description and an alt text, and each of those counts characters its own way. A character limit checker exists so you paste the text once and see, at a glance, which of those fields it fits and which it overflows — with the overflowing part marked in the text itself rather than described in a number.

Why counters disagree with each other

Almost every naive counter reports String.length, which is UTF-16 code units. By that measure a single emoji is two characters, the family emoji 👩‍👩‍👧‍👦 is eleven, and a flag is two — because that one glyph is four people joined by invisible zero-width joiners, or a pair of regional indicator letters. None of those numbers is what a reader counts, and none of them is necessarily what a field charges you.

This tool computes five figures for the same text and shows them together: visible characters (grapheme clusters via Intl.Segmenter), the JavaScript length, Unicode code points, UTF-8 bytes from TextEncoder, and a weighted count you configure yourself. Visible characters is the default, and it is what every meter, every trim and the overflow marker use. Segmentation is pinned to a single locale, so the same text counts the same on every machine rather than shifting with a browser setting.

What the meters show

Each field you add gets a row: the name, the count against the limit, the headroom left or the amount over, and a bar filled proportionally. Rows sort deterministically — over-limit first, then by least headroom — so the same text always produces the same order. Status is spelled out in words and marked with an icon as well as shown in the bar, because colour alone is not something every reader can use, and each bar carries an accessible label naming the field it belongs to.

Trimming without breaking anything

When something is over, trim to fit cuts at the last grapheme boundary inside the limit, so a skin-tone modifier, a keycap or a combining accent is kept whole or removed whole — never sliced into a lone surrogate. You can retreat further to the last word boundary, and an ellipsis is paid for out of the limit rather than added on top of it, which is the mistake that quietly puts a trimmed string back over the line.

Line endings are normalised to LF before counting, so a paragraph break costs one character whichever editor the text came from. Unicode normalisation is never applied silently: if composing the text would change the count, the tool says so and offers a button.

Limits are yours to enter

Every field limit is a fact about somebody else’s product, and those change without announcement. Rather than ship figures that may already be stale, this tool ships none: you add the fields you write for and type each limit from the documentation in front of you. Every value stays editable, custom fields can be named whatever you like, and the whole report exports as CSV with a formula-injection guard on every cell.

Everything here runs in your browser. There are no network requests, no uploads and no accounts, so a draft you have not published yet never leaves the machine you wrote it on. The tool reports fit against the limits you entered and nothing else — it makes no claim about what length suits a field better, because that is not something a character counter can know.

Frequently Asked Questions

Is the Social Media Character Limit Checker free?

Yes, Social Media Character Limit Checker is totally free :)

Can I use the Social Media Character Limit Checker offline?

Yes, you can install the webapp as PWA.

Is it safe to use Social Media Character Limit Checker?

Yes, any data related to Social Media Character Limit Checker only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does this character limit checker work?

You paste your text once and add the fields you write for, each with the limit that field allows. The tool measures the same text five different ways, scores it against every field you listed, and draws a meter per field showing how much room is left or how far over you are. Everything runs in your browser — the text is never uploaded and the tool makes no network requests at all.

Why do different counters give different numbers for the same text?

Because they are counting different things. A family emoji such as 👩‍👩‍👧‍👦 is one character to a reader, eleven UTF-16 code units to JavaScript's String.length, seven Unicode code points, and twenty-five UTF-8 bytes. This tool shows all five figures side by side so you can see which one a field is actually using. The meters, the trim action and the overflow marker all use visible characters, which is the grapheme-cluster count.

Why are no platform limits filled in for me?

A character limit is a fact about somebody else's product and it changes without notice, so the rule here is that a number only ships if someone read it in that platform's own documentation and recorded the source and the date. None could be verified when this tool was built, so rather than show you a figure that might be wrong, the table starts empty and every limit is a field you type. Adding the fields you write for takes a few seconds and the values are then yours, not a guess.

Will trimming to fit ever break an emoji?

No. Every cut is made on a grapheme-cluster boundary, so a skin-tone modifier, a flag, a keycap or a combining accent is either kept whole or removed whole — you can never end up with half a surrogate pair. If you turn on the word-boundary option the cut retreats further, to the last place a word ended, and an ellipsis you add is paid for out of the limit rather than added on top of it.

What does the Unicode normalisation notice mean?

The letter é can be stored as one code point or as an e followed by a combining accent. Both look identical and both count as one visible character, but the second form costs more code points and more UTF-8 bytes, so a field measuring either of those will charge you more for it. The tool tells you when composing the text would change the count and offers a one-click conversion — your text is never normalised unless you press that button.

What are the limits of this tool?

It reports how your text measures against the limits you entered and nothing more. It cannot check a limit for you, cannot tell you whether a platform will accept a post, and deliberately offers no view on what length works well — there is no authoritative source for that. If your browser lacks Intl.Segmenter the tool falls back to counting code points and says so on screen, which can differ from the visible-character count for emoji sequences.