One line, checked against twelve real field limits at once. Every count is live, so you can see which platforms your text fits before you paste it anywhere.
Type into the box and every row in this social media character counter recounts on the keystroke. The number reported is code points: the string is spread with the array spread operator, which follows JavaScript's own string iterator, so a character stored as a surrogate pair is counted once rather than twice.
That choice matters because there are three plausible units and they disagree exactly where user text gets interesting. UTF-16 code units are what `.length` returns; anything outside the Basic Multilingual Plane (emoji, the mathematical alphanumerics this site generates) occupies two of them, so a naive counter charges you double for a single visible character. Code points fix that. A grapheme cluster goes further: it is the unit a cursor key moves over, so a flag (two regional indicators), a skin-toned hand (two code points) and a family emoji (seven joined by zero-width joiners) each count as one.
Platforms pick different units and rarely document which. Code points sit in the middle and match what most fields do for ordinary Latin text, which is why this counter uses them.
None of these caps are round numbers by accident. X's 280 is the old 140 doubled in November 2017, and 140 itself came from SMS: the GSM standard carries 160 characters per message, and the original service reserved twenty for the sender's username so a post plus its author fitted one text. Japanese, Korean and Chinese never got the increase, because those scripts carry roughly twice the meaning per character; the same asymmetry survives today as X's rule that CJK ranges count double.
Instagram's 150-character bio and 30-character display name have not moved in over a decade, which is why third-party guidance about them is unusually reliable. WhatsApp's 139-character About is inherited from the old status line and has stayed put through several redesigns. Facebook's 101 is the oddest of the set: it reads as an off-by-one rather than a designed limit, and it is the tightest bio cap of the four major networks.
The lesson is that these numbers track interface constraints and legacy formats, not anything principled, so they change independently and without notice.
Twelve rows update at once, grouped by where you will paste. Instagram: bio 150, display name 30, caption 2,200. X: bio 160, post 280, display name 50. WhatsApp: About 139, profile name 25. Then single fields for the platforms where one cap dominates day to day, Facebook bio 101, TikTok bio 80, LinkedIn headline 220, YouTube description 5,000.
The spread is the point. A line that fits a YouTube description with 4,900 characters to spare can be 21 characters over a Facebook bio, and there is no single social media length to write to. Each row shows characters left or characters over, so one glance tells you which destination is the binding constraint.
Two caps deserve a caveat. LinkedIn's headline has been 120 characters for some accounts and 220 for others depending on how the profile was created, so treat 220 as the optimistic figure. X's post limit rises to 25,000 for paying accounts, which makes 280 the number to write to only if you want the text readable in full by everyone.
Fitting the cap is not the same as being read. Most of these fields truncate for display long before the stored limit: YouTube shows roughly the first 157 characters of a description above the fold, LinkedIn cuts a headline in the feed and in search results at far fewer than 220, and an Instagram bio is clipped in search previews. Your first line is doing most of the work.
The worse failure is at input. Several apps accept a paste that is over the cap and cut it at the boundary without saying anything, no error appears, and you may not notice until you view your own profile on another device. Mobile apps are the usual offenders, because the native input control enforces the cap by clipping rather than by refusing the keystroke. Others reject the entire paste, which is at least visible.
Silent truncation is also why the cut point matters. A cap counted in one unit and applied by slicing in another can sever a zero-width joiner sequence, leaving a family emoji as a single figure or a letter stripped of its combining marks.
The efficient order is to write long, then fit. Draft the version you actually want to say, paste it here once, and read down the column for the row with the least headroom, that is the destination doing the constraining, and it is the only one you need to edit against. Cutting to Facebook's 101 first and then wondering why the X bio reads thin is the wasteful order.
Leave headroom rather than landing on zero. Five to ten characters covers the cases this page cannot see: a full stop you add later, an emoji the platform counts as two, a line break that some systems store as two characters, and the possibility that a cap moved since this was written.
If the line is going through one of the style generators on this site, count the styled version rather than the plain one. Decorative frames add a fixed number of characters regardless of input length, and a wrapper costing ten characters is an eighth of a TikTok bio before you have written a word.
The counter treats every character as one, but platforms and their readers do not treat them equally.
Screen readers are the clearest cost. The Mathematical Alphanumeric Symbols block that produces bold and italic-looking letters carries no letter semantics, so a bio written in it is announced as a run of character descriptions, "mathematical bold small a" repeated, or skipped entirely, depending on the reader and its verbosity setting. A 101-character Facebook bio becomes several minutes of speech, or nothing at all.
Search is the second cost. Platform search matches the characters you typed, not the letters they resemble. A bio written in fullwidth or script forms will not be found by someone searching your name or your trade, and hashtags in styled characters do not join the plain hashtag's feed.
Identifier fields are the hard stop. Handles, usernames and Facebook's name field accept a restricted Latin set and reject anything else outright, no message about unicode, just a form that will not submit. Style the display name, never the handle.
Treat the figures here as a close floor rather than a guarantee, because two platforms apply arithmetic this page cannot replicate.
X is the extreme case. Every URL is rewritten through t.co and charged a flat 23 characters no matter its real length, so a short link and a 180-character tracking URL cost the same, and a post measuring 250 here can be over 280 the moment a link is in it. X also applies weighted character ranges: Latin, Greek, Cyrillic and most punctuation count one, while CJK, Hangul, Hiragana and Katakana count two. A 140-character Japanese post is a full 280 by X's arithmetic and 140 by this page's.
Emoji are the other divergence. A counter working in UTF-16 code units charges two for any emoji, four or more for a flag or a skin-toned variant, and eleven for the family sequence this page counts as seven. If your text carries emoji, assume the platform's figure is higher than the one shown here. Instagram and TikTok count closer to code points, so those rows need less slack.
It counts one line against twelve caps. It does not count bytes, words, lines or grapheme clusters. The string length tool on this site does all four, and bytes are the number to check when a database rejects text the character count said would fit.
It does not simulate a platform's arithmetic. There is no link substitution, no CJK weighting and no emoji re-weighting, because faking those per platform would produce twelve confidently wrong numbers instead of one honestly plain one.
It does not trim for you. Nothing is truncated, reflowed or word-wrapped; the count changes and the decision stays yours, which matters because a cut made on the wrong unit does the damage described above.
It does not check whether a field will accept your characters, only how many there are. And it sends nothing anywhere. The whole count runs in your browser, with no request made and no text stored, so a draft you have not published yet never leaves the machine you wrote it on.
TikTok's 80-character bio, then Facebook's 101 and WhatsApp's 139 About. Clear 80 and you clear every bio and post row on the page. The display-name fields at 25, 30 and 50 are a separate problem, since they hold a name rather than a sentence.
Almost always a link. Every URL is rewritten through t.co and charged a flat 23 characters, whatever its real length. The other cause is script weighting: X counts CJK, Hangul and kana as two characters each, so Japanese text costs double.
This page counts code points, so a plain emoji is one, a flag is two, a skin-toned hand is two and the family sequence is seven. Platforms counting UTF-16 code units charge roughly double those figures, so leave room for the difference.
No. Handles, usernames and Facebook's name field accept a restricted Latin set and reject everything else, usually without explaining why. Style the display name instead, Instagram's 30-character name field and X's 50-character one both accept unicode. That is where decoration is safe.
Yes, both. A space is one character and a line break is one here, though some systems store a newline as a carriage return plus a line feed and charge two. A five-line Instagram bio spends four characters on the breaks alone.
It depends on the app, and neither behaviour is announced. Some cut the text at the cap and discard the rest without a warning; others refuse the whole paste. The first is worse, because a half-sentence can sit live on a profile for weeks.
No. Leave five to ten characters of headroom. It absorbs an emoji the platform weights higher than this page does, a full stop added later, and the chance that a cap has moved since these figures were checked. Display truncation usually bites before the cap does anyway.
Because it is measuring bytes. UTF-8 spends one byte on ASCII, two on accented Latin, three on most CJK and four on emoji or mathematical alphanumerics, so 150 characters of styled text can be 600 bytes. The string length tool reports that figure.