Instagram character counter, plus 8 more networks in one view
Paste the post text once and see, in one go, which networks take it, which ones reject it and what each one hides behind the "see more". Free, no signup, and nothing leaves your computer.
It fits the limit, but it is past the cut-off point: someone scrolling the feed only reads the beginning before deciding whether to tap "see more". Put the main idea before the cut.
What shows before the "see more"
Your pricing page converts at 2%. The version you have not tested yet might convert at 3%. This is not a matter of taste: it is a matter of numbers. Run both versions at the same time, split the traffic and let the result decide. Save this post for the next time your team gets stuck arguing about layout. 👇 #abtesting #cro #growth #conversionrate
The text from the inside
- 64 words
- 284 without spaces
- 7 lines
- 4 paragraphs
- 1 emoji
- 4 hashtags
- 0 mentions
- 0 links
- 351 on the X ruler
- 351 UTF-16 units
The same text in every field of every network
| Field | Used | Limit | Left |
|---|---|---|---|
| Post or Reels caption | 350 | 2,200 | 1,850 |
| Profile bio | 350 | 150 | 200 over |
| Image alt text | 350 | 100 | 250 over |
| Comment | 350 | 2,200 | 1,850 |
| X (Twitter) | |||
| Post (free account) | 351 | 280 | 71 over |
| Profile bio | 350 | 160 | 190 over |
| Display name | 350 | 50 | 300 over |
| Feed post | 350 | 3,000 | 2,650 |
| Profile headline | 350 | 220 | 130 over |
| About section | 350 | 2,600 | 2,250 |
| Comment | 350 | 1,250 | 900 |
| TikTok | |||
| Video caption | 350 | 2,200 | 1,850 |
| Profile bio | 350 | 80 | 270 over |
| YouTube | |||
| Video title | 350 | 100 | 250 over |
| Video description | 350 | 5,000 | 4,650 |
| Page post | 350 | 63,206 | 62,856 |
| Comment | 350 | 8,000 | 7,650 |
| Threads | |||
| Post | 350 | 500 | 150 |
| Profile bio | 350 | 150 | 200 over |
| Bluesky | |||
| Post | 350 | 300 | 50 over |
| Profile bio | 350 | 256 | 94 over |
| Pin title | 350 | 100 | 250 over |
| Pin description | 350 | 500 | 150 |
Nothing leaves your browser: the count runs in JavaScript on your machine, with no network call at all. Limits were checked in August 2026; use the custom limit if a network has changed its own.
Who this page is for: anyone writing organic posts who needs the same text to work on more than one network. If the text is going to become a paid ad, with headlines, descriptions and an asset set the platform combines on its own, the right page is the ad character counter, which checks every asset against the Google and Meta limits and flags what review usually rejects. If your question is not about network limits but about the size and rhythm of the text itself, use the word counter, which returns sentences, paragraphs, reading time and term density. Here the subject is one thing only: does the text fit where you are about to publish, and how much of it does a person read before deciding to tap.
The limit is not your problem. The cut is.
Almost every social media counter answers the wrong question. It tells you how many characters are left before Instagram's 2,200, as if the problem with a caption were running out of room. It is not. Nobody writes 2,200 characters by accident. What actually happens is different: you write 400 reasonable characters, publish, and the feed shows 125 of them followed by "more". The sentence that justified the whole post sat at character 200, and nobody ever read it.
There are two numbers per field and they do different jobs. The hard limit is a lock: go over and the network refuses to publish, so you fix it immediately, because the failure is visible. The cut-off point is invisible: the text goes up whole, sits there whole, and still almost nobody reads past the first third. The second number decides whether the post works, and it is exactly the one ordinary counters do not show.
That is why this tool greys out the hidden stretch instead of just returning a total. What is in full colour shows in the feed with no click at all. What is faded depends on somebody deciding to open it. If your main idea landed in the faded part, the fix is not cutting text: it is changing the order.
The second thing this page does and most do not is check the text against every network at the same time. People publishing organically rarely write for a single network: they write once and adapt. The table shows, at a glance, which adaptations are mandatory, which are optional and where the text passes untouched.
How to use it
- Pick the main field under where this text goes: Instagram caption, X post, LinkedIn post, YouTube description and so on. The three big numbers now describe that field.
- Paste or write the text. Everything recalculates on every keystroke, with nothing to click.
- Look at what shows before the "see more". The faded stretch is what the feed hides. If your best sentence is in there, move it up.
- Scroll to the table to see the same text checked against every field of every network. A red row is a field that refuses this text.
- Use custom limit for any field that is not on the list, or when a network has moved its limit since August 2026.
How it works: three different rulers
Counting characters looks trivial until you compare two counters and get two numbers. The gap is almost never a bug: it is a different ruler. These are the three that show up here, and what each one measures:
The default ruler, used by practically every network, is the perceived character. It groups accents, emoji and composed sequences into a single symbol, which is how a human counts. The family emoji is the extreme case: it is one symbol on screen, it occupies eleven UTF-16 units, and it counts as a single character on Instagram. A counter that returns eleven is not lying, it is counting something else, and that is why both numbers appear together in the detail panel.
The X ruler is the exception that confuses people most. It weighs each character: basic Latin and common punctuation count 1, everything else counts 2. Common Western accents still count 1, because they sit inside the light range, but Cyrillic, Arabic, Japanese and emoji count 2. That is why a post in Japanese blows past 280 with roughly 140 visible characters. And links have their own rule: any URL counts 23, short or enormous, because the network shortens everything internally.
Worked example (reproduces the default output)
The sample text already loaded is an Instagram caption with four paragraphs, one emoji at the end and four hashtags. Checking what the tool shows, number by number:
- Basic count: 350 perceived characters, 284 without spaces, across 64 words, 7 lines and 4 paragraphs.
- Chosen field: Instagram caption, limit 2,200. The panel reads 350/2,200 with 1,850 left. Room is not the problem here, and it never is.
- Cut: Instagram shows 125 characters. The visible part ends mid phrase at "a matter of taste: it", and the remaining 225 characters sit faded in the preview panel. The whole explanation and the call to save the post are on the hidden side.
- Units: 351 UTF-16 units against 350 perceived characters. The difference of exactly 1 is the emoji at the end, which takes two units and counts as a single symbol.
- X ruler: 351. The text is all Latin characters worth 1 each, plus the emoji worth 2: 349 plus 2 gives 351. Since the X limit is 280, that field shows in red in the table.
- Hashtags: 4, inside Instagram's cap of 30. Mentions and links: 0.
- Networks that accept the text: 7 of 9. The two that refuse are X, which stops at 280, and Bluesky, which stops at 300.
- Verdict: it fits the limit but went past the cut-off point. That is exactly the diagnosis most posts deserve and never get.
Now run the test that shows the X ruler at work. Replace the text with New on the blog: https://donnuab.com/blog/en/tools/instagram-character-counter/ and pick the "X (Twitter): Post" field. That is 79 perceived characters, but the X ruler reads 40: 17 for the text before the link, plus a flat 23 for the whole URL. Shortening that URL would not buy a single character.
The limits the table uses
All of them were checked in August 2026. The ones most likely to drift are called out as approximate in the text, and the custom limit field exists for when a network moves again:
- Instagram: caption and comment 2,200, cut at 125, cap of 30 hashtags; bio 150; image alt text 100.
- X: post 280 on a free account, counted on the weighted ruler; bio 160; display name 50.
- LinkedIn: post 3,000 with the cut near 140; profile headline 220; About section 2,600; comment 1,250.
- TikTok: caption 2,200; bio 80. The caption limit has already moved more than once and is the first one to double check at the source.
- YouTube: title 100; description 5,000, cut at 157 before the "show more".
- Facebook: post 63,206, with the cut near 477; comment 8,000.
- Threads: post 500; bio 150. Bluesky: post 300; bio 256. Pinterest: Pin title 100; description 500.
How to read each number
The remaining count only matters when it goes negative. A large surplus is neither a virtue nor a flaw: a good Instagram caption is as long as the idea needs, and excellent 90 character posts exist. Once it goes negative, though, there is no debate: the network does not trim the excess, it rejects the whole post and the text never runs.
The cut-off point is the number that changes outcomes. Treat the characters before it like ad copy: they have to work alone, without context and without the rest of the text. A rule of thumb that holds up well: the first line promises something concrete, the second delivers half of it, and the "see more" charges for the other half. Ending the visible part in the middle of an explanation is the most common way to lose the reader.
Networks that accept answers an operational question: can I repost this without rewriting? When that number drops to six or fewer out of nine, it is almost always because the text went past 280, and the practical move is to write the short version first. Text that starts short stretches well; long text rarely shrinks without losing the argument.
The X ruler only matters if you publish on X. It always appears in the detail panel because it is the one count that diverges from the others in a big and silent way. If it sits far above the plain character total, the text has too many emoji or is written in an alphabet that weighs 2 per character.
Known limits
The cut-off point is the roughest number on this page. No network publishes the official value, it moves with screen width, with the device font size and with the post format, and networks adjust the interface without notice. Use the table values as an order of magnitude, not as a measurement: the difference between 125 and 140 characters does not change how you write, but the difference between 125 and 400 would.
Link detection is deliberately simple: it recognises addresses that start with http, https or www. A bare domain dropped mid sentence without those prefixes is not treated as a link, so it counts character by character on the X ruler, exactly as the network itself would in some edge cases. If your post depends on that, check it in the platform composer before publishing.
The tool counts and compares, but it does not validate content policy. It does not know whether a hashtag is blocked, whether a mention exists, whether a link was flagged as spam, or whether the network will suppress the post for any other reason. Passing every limit means the text can be published, not that it will be distributed well.
From counted text to tested text
Counting is the start. What moves the number is finding out which version of the text works better, and in organic that usually lands on the page the post sends people to:
- If the post drives to a landing page, run the page through the landing page grader before writing the next caption.
- Before deciding whether the difference between two page versions is real, check how much traffic it would take with the sample size calculator.
- With the test running, get the verdict from the statistical significance calculator instead of calling it on the first good day.
- If the link in your post belongs to a campaign, build the tagging in the UTM builder so the traffic does not land in "direct" in your reports.
Frequently asked questions
- What is the Instagram caption character limit?
- A post or Reels caption takes up to 2,200 characters, and hashtags count inside that total. The number that decides the outcome is not that one, though: the feed shows only the first 125 characters and hides the rest behind "more". You have 2,200 characters of room and roughly 125 characters of attention. The tool above shows both at once and greys out the part that stays hidden.
- How many characters fit in an X post?
- A free account publishes up to 280 characters, but the X ruler is not the one other counters use. A character outside the basic Latin range counts 2, an emoji counts 2, and any link counts a flat 23 whether it is short or enormous. A text with 79 visible characters that ends in a long URL can score 40 on the X ruler, and a post in Japanese blows past 280 with about 140 characters on screen. That is why the weighted count sits in its own field here.
- Do hashtags count toward the character limit?
- They do, on every network. On Instagram, thirty average hashtags eat close to 400 of the 2,200 characters available, and on X they compete directly with the 280. The tool separates how many characters went into hashtags alone so you can see that cost. The Instagram cap of 30 hashtags per post is flagged in the table whenever the text goes past it.
- How many characters does LinkedIn show before the "see more"?
- A LinkedIn post takes 3,000 characters but folds long before that: in the app the cut sits near 140 characters, and on a wide desktop screen it stretches a little. LinkedIn does not publish the exact number and it moves with screen size and post format, so treat 140 as a safety floor rather than a measurement. If the first line does not make someone want to open the post, the rest of the text does not exist.
- Why does Instagram say my text is longer than I counted?
- It is almost always emoji. A simple emoji takes two internal encoding units, and a composed one, like the family emoji, takes eleven. A counter that uses the raw JavaScript string length adds those units up and returns an inflated number. Networks count perceived characters, which is what you see on screen, and that is the ruler this tool uses. Both numbers sit side by side in the detail panel so you can compare them.
- Can the same text go on every network?
- As a draft, yes. As a final post, no. A 350 character text fits Instagram, LinkedIn, TikTok, Facebook and Threads, but goes over on X and Bluesky, which stop at 280 and 300. On top of that, each network folds at a different point and some drop line breaks entirely. The table exists so you can see in one glance which networks take the text whole and which ones need a short version.
- Does the tool send my text to a server?
- No. The whole count runs in JavaScript inside your browser, with no network call at all: the text never leaves your computer, is never stored and is never logged. That matters when the post is a client embargo or an unreleased announcement. You can confirm it by opening the browser network tab and typing: no request goes out while the numbers change.
- Do these limits go stale?
- They can, which is why the date is stated: the values were checked in August 2026. Social networks change limits without notice, almost always upward, and TikTok has already changed its caption limit more than once. If the platform you use has moved its limit, pick "Custom limit" in the selector and type the new number: the count, the cut and everything else keep working.
Keep reading
To understand how the text you publish behaves in search and in an AI answer, continue with CRO vs SEO, what changes in each, read the guide to generative engine optimization and learn to build quotable blocks in FAQ content for AI citation.