Count every Instagram field at once
What counts as one character on Instagram?
A character is not one thing. The same emoji can be one character, two, or eleven, depending on which unit is being measured: grapheme clusters, which are what a reader sees, Unicode code points, or UTF-16 units, which is what a JavaScript string reports. Meta documents a caption ceiling of 2200 characters and nowhere defines the word character.
In August 2026 we pasted one test string into the twelve most popular Instagram character counters. Eleven returned 24. One returned 16. To a reader the string is 8 characters long. Not one of the twelve names the unit it counts.
How this counter works
- Paste your text. Any caption, bio, username or comment, counted in the tab and never sent anywhere.
- Read the three counts. Grapheme clusters, code points and UTF-16 units, measured on the same text, side by side.
- Pick a definition. Every limit row recounts against your choice, and the largest of the three is the safe one.
How the three counts are measured
What this counter does that the others do not
- It names its unit. Three counts sit side by side, each labelled. Not one of the twelve counters we tested names the unit behind its number.
- It prices each character. Every compound character in your text gets a row: one seen, so many code points, so many UTF-16 units, with its code points listed.
- It counts seven fields at once. Caption, comment, DM, bio, username, hashtags and @-mentions all recount from one paste.
- Your text stays put. Everything runs in the tab, with no account, no upload and nothing stored.
What twelve counters return for one string
One string, twelve counters, August 2026. The string is the word Hi, a space, a flag (U+1F1EE U+1F1F3), a thumbs up with a medium skin tone (U+1F44D U+1F3FD) and a four person family (U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466), single spaces between them. A reader counts 8 characters. Unicode counts 16 code points. A JavaScript string counts 24.
Eleven of the twelve returned 24, the UTF-16 length a JavaScript string reports. One returned 16, the code point count. None returned 8, and none of the twelve pages names the unit its number is in.
Handling DMs by hand vs automating with Inrō
Manual DM management
Just answering as fast as you can
Warmest leads go cold before you reply
Miss everything while you're offline
No lead capture or CRM tagging
Engagement rarely turns into sales
Inrō automation
Instant replies + lead capture
Auto-reply to every comment in seconds
Works 24/7, never miss a follower
Every lead tagged in Smart Inbox & CRM
Turns engagement into booked revenue
Start free with Inrō
Before you hit a limit
- Leave headroom in the bio. Instagram never says how it counts, so land a few characters under 150 rather than exactly on it.
- Treat one number as an approximation. Unicode's UAX #29 names counting for text size limits as a context where the unit differs (17 August 2025).
- Watch what you paste. Text copied out of a design tool can carry variation selectors you cannot see, and each one spends a unit.
- Count the field you are writing. A caption holds 2,200 characters and a username holds 30; one paste passes one and fails the other.
Where a character count misleads you
Trusting a single number
A counter showing one figure has already picked a definition for you, and eleven of twelve do not say which.
Landing exactly on the limit
Instagram never defines its count, so a bio measured at precisely 150 can still come back refused by the app.
Missing the invisible characters
Variation selectors, zero width joiners and skin tone modifiers draw nothing and spend a unit each, every time.
Instagram gives your bio 150 characters and never says what a character is. Count your text three ways, write to the largest number, and stop a few characters short, because the definition you are measured against is the one you can't see.
Turn comments into DMs
A caption that fits still needs an ask. When someone comments your keyword, Inrō sends the DM on Meta's official API. The free plan covers 100 active contacts a month.
Start for free
Trusted by 10,000+ creators and brands
, including Walmart & Yoyomatch

Frequently asked questions
What is the Instagram caption character limit?
Two thousand two hundred characters, and this one is documented. Meta's Instagram Platform reference gives the caption parameter as a "Maximum 2200 characters, 30 hashtags, and 20 @ tags" (August 2026). What that page never does is say what a character is, which matters the moment your caption carries emoji. The same caption can measure 2,190 or 2,240 depending on whether the counter reads grapheme clusters, code points or UTF-16 units, and Meta publishes no rule that picks between them. The counter above shows all three at once so you can see the spread rather than one number. How much of that caption actually gets read before the more link is a separate question, and the caption generator works through it.
How many characters can an Instagram bio hold?
One hundred and fifty. The figure lives in Instagram's consumer Help Center rather than the developer documentation, which is why so few pages quote it directly; the bio generator traced where it sits. One hundred and fifty is also tight enough that the counting definition changes the answer. The default text in the counter above is one bio with three emoji in it. A reader sees 139 characters. Unicode counts 147 code points. A JavaScript string counts 155 UTF-16 units. Against a 150 limit that is 11 under, 3 under, or 5 over, from one piece of text that never changed. Since Instagram publishes no counting rule, write to the largest of the three and leave yourself a few characters spare.
Do emoji count as more than one character on Instagram?
Often yes, and the amount depends on which unit is counting. A plain smiling face is one code point and two UTF-16 units. A flag is two code points and four UTF-16 units, because flags are built from two regional indicator letters. A skin tone thumbs up has the same shape: a base emoji plus a modifier. A four person family is seven code points and eleven UTF-16 units, four people joined by three invisible zero width joiners. To a reader every one of those is a single character. Paste any of them above and the cost list prints all three numbers plus the code points involved.
Why do character counters give different numbers?
Because they measure different units and none of them says so. In August 2026 we pasted one string into the twelve most popular Instagram character counters: the word Hi, a flag, a skin tone thumbs up and a four person family. Eleven returned 24, the UTF-16 length a JavaScript string reports. One, SimpliConvert, returned 16, the Unicode code point count. To a reader the string is 8 characters, and none returned 8. Three of the twelve describe emoji cost in their own FAQ copy: Nuelink says one emoji counts as two, Postpone lists emoji as counting as one, TypeCount says most count as two. All three of their counters returned 11 for the family emoji.
What is a grapheme cluster?
It is the technical name for what you would call a character if nobody had asked you to be precise. Unicode's Standard Annex 29, version 17.0.0 dated 17 August 2025, puts it this way: the notion of user-perceived characters corresponds to the concept of grapheme clusters, and they are a best-effort approximation that can be determined programmatically and unambiguously. The same document names character counting for text size limits as one of the contexts where the basic unit may be defined differently, which is this page's problem in one line. Browsers expose grapheme clusters through Intl.Segmenter, available across current browsers since April 2024. This counter uses it, with a hand written fallback that groups flags, skin tones, joined sequences and combining accents the same way.
Which of the three counts should I use?
Use the largest, which is always the UTF-16 one. The three are ordered by definition: a grapheme cluster is made of one or more code points, and a code point is one or two UTF-16 units, so the UTF-16 number can never be smaller than the other two. Writing to it means your text fits whichever definition Instagram turns out to use, and Instagram has never published which that is. Being careful costs little: for plain text all three counts are identical, and the gap only opens where you add emoji or accented letters. Switch to grapheme clusters to see what a decorative character actually costs you, then switch back.
Do spaces, line breaks and hashtags count?
Yes, all three. A space is a character, a line break is a character, and a hashtag spends its letters plus the hash symbol out of the same allowance as your sentences. The counter above includes all of them, which is why a caption with thirty tags at the bottom runs a hundred characters longer than it looks. Hashtags and at tags get their own rows, counted as items against the 30 and the 20 Meta documents, because those limits are about how many you use rather than how long they are. Invisible characters count too: a variation selector or a zero width joiner draws nothing and still spends a unit.
Does this counter use AI, and is anything stored?
No AI and nothing stored. The counting is arithmetic, not a judgement: Intl.Segmenter for grapheme clusters, Array.from for code points, String.length for UTF-16 units, and a regular expression for hashtags and @-mentions. The same text always returns the same three numbers, and you can check any of them yourself in a browser console. Nothing is sent anywhere, because there is nowhere for it to go: the page makes no network requests once it has loaded, so your draft caption never leaves the tab. There is no account, no email gate and no cap on how much you paste. Close the tab and there is no trace of the text here.
Why does my text fit in a counter and get cut on Instagram?
Two different things get confused here, and only one of them is a limit. A limit is a hard refusal: over 150 characters and a bio will not save. Truncation is cosmetic: a caption within the 2,200 ceiling still gets folded behind a more link after roughly the first line and a bit, which Instagram documents nowhere and every guide reports as 125 characters. If your text saved but looks cut, that is truncation and this counter is not the tool for it; the caption generator draws the fold. If your text was refused outright, the likely cause is the counting unit: something measured at 149 by one definition can be 155 by another.
Kshitij runs the growth experiments and looks after client success from first trial to enterprise rollout at Inrō. The advice in these tools comes from funnels he has tested on real accounts, and from the support tickets that follow when a setup goes wrong.