Instagram Character Counter

Paste a caption, bio, username or comment and see it counted three ways at once, against every Instagram limit, with the unit behind each number named.

Count every Instagram field at once

139
Grapheme clusters
What a reader sees as one character
147
Code points
The Unicode characters underneath
155
UTF-16 units
What most character counters return
Same text, three answers: 139 seen, 147 code points, 155 UTF-16 units.
Caption
155 of 2,200
2,045 left

What each character costs you

Meta gives the caption ceiling as 2200 characters, 30 hashtags and 20 @-mentions, and never says what a character is. Because of that the limits above use whichever count you pick, and the safe pick is the largest one. All three counts run in this tab and your text stays in it. Free, no sign-up.

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

  1. Paste your text. Any caption, bio, username or comment, counted in the tab and never sent anywhere.
  2. Read the three counts. Grapheme clusters, code points and UTF-16 units, measured on the same text, side by side.
  3. 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

One string, three units of measure

UTF-16 count = grapheme clusters + the extra units every compound character carries

Example:

The counter loads with a bio reading Coffee roaster in Dublin, a flag (U+1F1EE U+1F1EA), Small batch beans, roasted Tuesdays and shipped Wednesdays, a four person family (U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466), Family run since 1998, a thumbs up with a medium skin tone (U+1F44D U+1F3FD), and I pack every bag myself. A reader counts 139 characters. The flag adds 3 extra units, the family adds 10 and the skin tone adds 3, so 139 plus 16 is 155 UTF-16 units, with 147 code points in between. Against the 150 character bio limit that one text is 11 under, 3 under, or 5 over.

Each limit below, and who states it:

  • Caption 2,200, hashtags 30, @-mentions 20. Meta's Instagram Platform reference, caption parameter (August 2026). The caption generator works through what that ceiling costs you.
  • Bio 150. Instagram's consumer Help Center, not the developer docs. The bio generator shows where that number lives.
  • DM 1,000. Meta states 1,000 characters on one line and 1,000 bytes on another. The DM script generator counts both.
  • Username 30. Reported by every guide, never published by Instagram. The username tool shows what can and cannot be checked.
  • Comment 2,200. The twelve counters below all print it; Meta states it nowhere.
  • The three counts. Measured in your browser with Intl.Segmenter, Array.from and String.length.

Emoji do the damage: plain text counts the same three ways, and one family emoji moves the total by ten.

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.

CounterOur 8 character stringThe family emoji aloneUnit it matches
Publer2411UTF-16 units
CharacterCount.tools2411UTF-16 units
CharacterCounter.com2411UTF-16 units
Nuelink2411UTF-16 units
Postpone2411UTF-16 units
Rybbit2411UTF-16 units
TypeCount2411UTF-16 units
Sagi Shrieber2411UTF-16 units
Snaplytics2411UTF-16 units
TextCleaner2411UTF-16 units
Onlinetoolix2411UTF-16 units
SimpliConvert167Code points

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

  1. Leave headroom in the bio. Instagram never says how it counts, so land a few characters under 150 rather than exactly on it.
  2. 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).
  3. Watch what you paste. Text copied out of a design tool can carry variation selectors you cannot see, and each one spends a unit.
  4. 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.

Which count to write to

Creator

Creator

Your bio is where this bites. Count it with the emoji in place and stop a few characters short of 150.

Coach

Coach

You write long DMs, so watch the 1,000 row: accents and emoji spend more of it than the letters around them do.

E-commerce brand

E-commerce brand

Paste the launch caption with its hashtag block attached, since the tags spend the same 2,200 characters your sentences do.

Agency

Agency

Two people should never hand a client different numbers for the same bio: agree on one count across the team and record it.

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.

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 Maheshwari
Chief of Staff

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.

Last updated
August 2026
Category
Free

Join automations strategies and Instagram Insights weekly

Thank you! You have been susbcribed to our weekly insights!
Oops! Something went wrong while submitting the form.

By entering your email address above and clicking Subscribe, you consent to receive marketing communications (such as newsletters, blog posts, event invitations and new product updates), and targeted advertising from Inrō from time to time. You can unsubscribe from our marketing emails at anytime by clinking on the "Unsubscribe" link at the bottom of our emails. For more information about how we process personal information and what right you have on this respect, please see our Privacy Policy.

Try Inrō and put your Instagram DMs on autopilot

Attract more leads, reply in seconds, and turn engagement into sales, automatically.

Free plan available
Meta Tech Provider
Setup in 5 minutes