An X post can be up to 280 weighted characters. Instagram allows 2,200 characters in a caption and 150 in a bio. A LinkedIn post can run to 3,000 characters, and a YouTube video gets 100 for its title and 5,000 for its description. Every figure on this page is printed from one data file, and each entry is tied to the official page it was checked against. What a table cannot show is how each platform counts, and that is where most surprises come from.
Limits last reviewed: between and . Each row links to the source it was checked against. See the platform limits reference for notes on every entry.
The limits
| Platform | Field | Limit / guideline | Counting unit | Type | Last verified | Source |
|---|---|---|---|---|---|---|
| X (Twitter) | Post, standard account | 280 | weighted characters | Platform limit | X Developer Platform: Counting Characters | |
| Profile bio | 150 | characters* | Platform limit | Instagram Help Center: Add a bio to your Instagram profile | ||
| Post caption | 2,200 | characters* | Platform limit | Meta for Developers: IG User Media reference | ||
| Post | 3,000 | characters* | Platform limit | LinkedIn Help: Post and share updates | ||
| YouTube | Video title | 100 | characters* | Platform limit | YouTube Data API: videos resource (snippet.title) | |
| YouTube | Video description | 5,000 | characters* | Platform limit | YouTube Help: Edit video settings |
* The source says only “characters” and does not state how emoji, accented letters or line breaks are counted.
"Platform limit" in the Type column means a maximum the platform enforces. To test a draft against any row, paste it into the Character Counter and choose the platform under Check Against A Limit.
X is the only one that documents its counting
X publishes its counting rules, along with an open-source library called twitter-text that implements them. A post is measured in weighted characters, not plain ones:
- Most Latin letters, digits and punctuation marks count as 1.
- Every emoji counts as 2. X's documentation is explicit that this holds "regardless of complexity": a single face, a thumbs-up with a skin tone and a four-person family each count as 2.
- Chinese, Japanese and Korean characters count as 2 each.
- Every link counts as 23, whatever its real length, because X wraps links in its own shortener.
- Text is normalized to Unicode form NFC first, so an accented letter counts the same whether it was typed as one character or as a letter plus a combining accent.
The exact boundary is in the library's configuration file. Code points from U+0000 to U+10FF, plus three small ranges of general punctuation, weigh 1. Everything else weighs 2. That puts accented Latin letters, Greek, Cyrillic, Arabic and Hebrew at 1, along with curly quotes and dashes. It also produces a few results you would not guess: the single-character ellipsis (…) and the euro sign (€) fall outside the ranges and count as 2.
Here is how that plays out on a real post:
Launch day 🚀 Release notes: https://example.com/releases/2026/october/version-4-2-notes
| Piece | Visible characters | X count |
|---|---|---|
Launch day and the space after it |
11 | 11 |
| 🚀 | 1 | 2 |
Release notes: and the spaces around it |
16 | 16 |
| The link | 59 | 23 |
| Total | 87 | 52 |
A plain character count overstates this post by 35. The opposite happens with text that weighs 2 throughout: a post written entirely in Japanese characters, or entirely in emoji, holds half as many characters as the headline number suggests.
Three more documented details: @mentions that X adds automatically at the start of a reply do not count, mentions you type yourself do, and media attached through X's own apps counts as nothing.
Our counter applies X's published weighting. Its link detection is approximate for addresses written without http://, https:// or www., so check those in X's own composer.
X's help pages also say that Premium subscribers can write much longer posts; the figure is in the notes on our platform limits reference. The pages we read do not say whether the weighting applies to those longer posts in the same way.
Instagram, LinkedIn and YouTube say only "characters"
The help pages and API references for these three give a number and the word "characters". None of the pages we read defines what a character is when the text contains emoji or accented letters. That matters, because three reasonable definitions give three different answers:
| Text | Visible characters | Unicode code points | UTF-16 code units |
|---|---|---|---|
| 🙂 | 1 | 1 | 2 |
| 👍🏽 | 1 | 2 | 4 |
| 👨👩👧👦 | 1 | 7 | 11 |
For text made of ordinary letters, digits and punctuation, all three definitions agree and the question never comes up. For a caption with a lot of emoji, the platform's own composer may hit the limit before a visible-character count does. Our counter uses visible characters for these platforms and labels the result approximate for exactly this reason; the methodology page describes the count in detail. The layers are explained in why emoji can produce different character counts.
Instagram: the caption source and the hashtag conflict
The bio limit is stated in Instagram's Help Center. The caption limit is not: the figure comes from Meta's developer reference for publishing media, and the consumer Help Center pages about captions that we checked do not give a length.
Hashtags are documented inconsistently, and the two official sources disagree by a wide margin.
- Instagram's Help Center page Use hashtags on Instagram says: "You can use up to 5 tags on a post."
- Meta's developer reference for the same caption field lists a maximum of 30 hashtags.
Both pages were read on 7 October 2026. We have no official statement explaining the difference or saying which number applies to a particular account or way of posting. If a post has to go out without problems, five is the safe number to plan for. The Help Center page also describes what happens beyond its limit: "If you include more than 5 tags on a single photo/video, your comment won't post."
YouTube: characters in Help, bytes in the API
For titles, YouTube Help and the YouTube Data API reference agree on the number and both call the unit characters. The API reference adds that a title cannot contain the characters < and >.
For descriptions, the two sources give the same number in different units. YouTube Help states the limit in characters. The API reference states it in bytes and says the text may contain any valid UTF-8 characters. For plain English the two are the same thing, because each character is one byte. For other text they are not:
| Character | UTF-8 bytes |
|---|---|
a |
1 |
é |
2 |
語 |
3 |
| 🙂 | 4 |
| 👍🏽 | 8 |
A description written in Japanese could reach a byte limit at about a third of the character figure. Which of the two YouTube's upload form enforces is not documented. If your description is long and not plain English, open Advanced statistics in the Character Counter and check the UTF-8 bytes figure as well. UTF-8 bytes vs characters explains why the numbers part ways.
LinkedIn: one documented limit, and why two are missing
LinkedIn Help states the limit for a post and suggests writing an article for anything longer.
It does not state limits for the profile headline or the About section. The help pages for editing your headline and editing the About section explain how to change those fields and give no maximum. Figures for both circulate widely, but the only places we found them were third-party articles and posts by individual users.
So they are not in the table. A number we cannot trace to the platform is a number we cannot re-check when the platform changes it, and a reference page that mixes confirmed limits with hearsay is worse than a shorter one. The same applies to any platform or field that is absent here: it means we have not confirmed a figure from an official source, not that the field has no limit. For those, the counter built into the field is the authority.
Google Ads, for comparison
Google Ads is not a social network, but it is worth a look next to the others because it is the one other platform here that documents part of its counting.
| Platform | Field | Limit / guideline | Counting unit | Type | Last verified | Source |
|---|---|---|---|---|---|---|
| Google Ads | Responsive search ad headline | 30 | characters* | Platform limit | Google Ads Help: About responsive search ads | |
| Google Ads | Responsive search ad description | 90 | characters* | Platform limit | Google Ads Help: About responsive search ads |
* The source says only “characters” and does not state how emoji, accented letters or line breaks are counted.
Its help page states: "Every character in a double width language like Korean, Japanese, or Chinese counts as 2 characters." Our counter does not apply that doubling to the Google Ads presets, so for text in those languages let Google Ads itself be the judge.
How to leave a safety margin
How much room to leave depends on what is in the text, so a fixed percentage is the wrong tool.
- Plain text needs no margin for counting differences. With only ordinary letters, digits and punctuation, every counting method gives the same number.
- With emoji or combining accents, check a second figure. Open Advanced statistics and look at UTF-16 code units. That number is never smaller than the code point count, which is never smaller than the visible-character count. If it is within the limit, the text fits whichever of the three the platform uses.
- For a YouTube description, check UTF-8 bytes too.
- Allow for line breaks. None of these platforms documents how a line break is counted. Our counter counts each one as a single character. If a text with many line breaks sits right at the limit, trim a little.
- Let the platform have the last word. Paste the final text into the platform's own composer before you schedule or publish. Its counter is the one that decides.
Platforms revise their limits, so treat any table as dated. The date at the top of this page is when each figure was last checked against its source, and the platform limits reference carries the notes for every entry. For techniques to shorten a draft that is over, see how to write clearly within a strict character limit.