Skip to content
postpeg

· 6 min read · postpeg team

Character limits for every social network in 2026

The text limits for X, Instagram, LinkedIn, TikTok, YouTube, Threads, Bluesky and more, with the counting rules (graphemes, UTF-16, bytes) that trip people up.

Every network caps the text of a post, but they don't agree on the number or on what a "character" is. X gives you 280 weighted characters, Bluesky 300 graphemes, TikTok 2,200 UTF-16 units and YouTube 5,000 bytes of description. This guide lists each limit with a link to the source, and explains the counting rules that make a post fail when your own counter said it fitted.

If you just want to check a draft, paste it into the free character counter. It shows the count for every network side by side.

The limits at a glance

This is the table postpeg's API validates against before anything is sent. It comes straight from the API's own data, so it also shows the media rules for each network.

Text limits and media rules per network
NetworkText limitMediaImagesVideos
X280Optional41
Instagram2,200Required1010
Facebook63,206Optional101
LinkedIn3,000Optional201
TikTok2,200Video required–1
YouTube5,000Video required–1
Threads500Optional2020
Pinterest500Required11
Bluesky300Optional40
Google Business1,500Optional10

postpeg counts text in graphemes, the characters a person actually sees. The networks don't all do that, so the sections below point out where their counting differs. The full per-network rules are in the platforms reference.

Graphemes, UTF-16 code units and bytes

A single visible character can be several things underneath. An accented letter can be one or two code points. A thumbs-up with a skin tone is two code points. A family emoji is several emoji glued together with zero-width joiners. How long a string is depends on which of three units you count:

  • Graphemes: what a reader sees as one character. Bluesky counts these.
  • UTF-16 code units: what JavaScript's .length returns. TikTok's API states its limits in these.
  • UTF-8 bytes: what goes over the wire. YouTube descriptions and Bluesky's secondary limit use bytes.

Here is the same string measured four ways in JavaScript, using Intl.Segmenter for graphemes:

js
const text = 'Café 👍🏽 👨‍👩‍👧';

text.length; // 18 UTF-16 code units
[...text].length; // 13 Unicode code points

const seg = new Intl.Segmenter('en', { granularity: 'grapheme' });
[...seg.segment(text)].length; // 8 graphemes

new TextEncoder().encode(text).length; // 33 UTF-8 bytes

Eight visible characters, and anywhere from 8 to 33 depending on the unit. For plain English text the numbers are close. With emoji, CJK scripts or combining accents they drift apart quickly, and that is where posts get refused.

X

The standard limit is 280, but X doesn't count one character as one. Its character counting guide says every URL counts as 23 characters because it is wrapped in a t.co link, however long or short the real URL is. Emoji and CJK characters count as 2.

The rules live in X's open-source twitter-text library. Its v3 configuration sets a weighted maximum of 280, gives weight 1 to code points up to U+10FF and a few punctuation ranges, and weight 2 to everything else. In practice a post of 150 Japanese characters is already over the limit.

Paying subscribers can write longer posts. TechCrunch reported in 2023 that the limit for subscribers went to 25,000 characters. Creating long posts through the API came later: Social Media Today reported in August 2024 that third-party apps could create them for Premium accounts, at the time up to 4,000 characters. X's create post reference doesn't state a maximum, so the account's own tier decides. If you don't know the account is Premium, plan for 280.

Instagram

Captions can be up to 2,200 characters, with at most 30 hashtags and 20 @ tags, according to the Instagram Graph API media reference. Instagram posts also need an image or video; there is no text-only post.

The part that catches people is truncation. In the feed, only the first line or two of a caption shows before "more". Instagram doesn't publish an exact cut-off, and it varies with screen width and line breaks, so put the point of the post in the opening sentence. For more on the hashtag cap, see our post on Instagram's hashtag limit.

Facebook

Facebook's post limit is very large: 63,206 characters, a number an engineer chose because it spells "Face Boo K" in hexadecimal, as TechCrunch reported in 2011. We could not find the figure in Meta's current developer documentation, so treat it as long-standing rather than guaranteed. You are far more likely to hit a readability limit than this one.

LinkedIn

LinkedIn's documentation says the maximum length of a post's text is 3,000 characters. The current Posts API puts the text in a commentary field and returns a FIELD_LENGTH_TOO_LONG error when a text field is over its maximum.

One more thing to know: commentary uses LinkedIn's little text format, where characters such as brackets, @, #, * and _ are reserved. They must be escaped with a backslash to appear as plain text, otherwise LinkedIn may read them as a mention, hashtag or formatting.

TikTok

For video posts, TikTok's Direct Post reference caps the caption (the title field) at 2,200, measured in UTF-16 units. That means an emoji usually counts as 2 there, just like JavaScript's .length. Photo posts are different: the photo post reference allows a 90-unit title and a 4,000-unit description.

YouTube

According to the YouTube Data API videos resource, a title can be up to 100 characters and a description up to 5,000 bytes. Neither may contain < or >. Because the description limit is in bytes, a description full of accented letters, non-Latin scripts or emoji hits the cap well before 5,000 visible characters.

Threads

The Threads posts documentation limits text posts to 500 characters and says emoji count by their UTF-8 byte length, so each emoji uses up several characters. Links have their own cap: a post can contain at most 5 unique links, counting any link_attachment, and posts over that fail with THREADS_API__LINK_LIMIT_EXCEEDED. If you don't set a link attachment, the first link in a text-only post becomes the preview.

Threads also added text attachments of up to 10,000 characters in 2025, as TechCrunch reported. That is a separate attachment, not a longer post body.

Pinterest

A Pin title can be up to 100 characters. For the description, Pinterest's Pin specs and the Pin schema in its API description both say 800 characters, and alt text up to 500. Pinterest's help also notes that descriptions don't show in the home feed or search, so the title does most of the work. postpeg currently holds Pin descriptions to 500 characters, stricter than Pinterest's 800, which is why the table above shows 500.

Bluesky

Bluesky's post record, defined in the app.bsky.feed.post lexicon, has two limits on text: 300 graphemes and 3,000 UTF-8 bytes (the Lexicon spec defines maxLength in bytes). For almost any real post the 300-grapheme limit is the one that applies. Links, mentions and hashtags are marked up with facets that use UTF-8 byte offsets, which is its own source of bugs; see our guide to Bluesky facets.

Google Business Profile

Updates on a Business Profile are limited to 1,500 characters. Google's help and API reference pages don't state the number; the evidence is the post editor's own error message, as quoted in this Google Business Profile Community thread. Google's post guidelines also warn that posts with a phone number may be rejected if it can't be verified as the business's number.

Where postpeg fits

When you send one post to several networks, postpeg checks the text against every target before anything is published and returns all the problems in one response. A text that is too long for one network doesn't leave you with a half-published post on the others. It counts graphemes, so check X's weighted count, TikTok's UTF-16 count, Threads' emoji bytes and YouTube's byte count yourself when you are close to a limit. The character counter, the platforms reference and the publishing guide cover the details.

Publishing from your own product?

postpeg is one API for posting and scheduling on ten networks, with each network’s rules checked before anything is sent. The 7-day trial needs no card.