Social Media Character Limits From Each Platform's Docs
X (Twitter) allows 280 characters per post and counts every link as 23 of them. LinkedIn allows 3,000. Bluesky allows 300, counted in graphemes, so an emoji is one. Each figure below comes from the platform's own documentation, linked in the table, and they are the same limits Skryvo writes to when it drafts a post for each channel.
The short version: X 280, Bluesky 300, Threads 500, Mastodon 500 by default, Pinterest descriptions 800 with 100-character titles, Instagram captions 2,200, Discord 2,000, LinkedIn 3,000, Telegram 4,096 (captions 1,024). To check a post against all of them at once, paste it into our free post preview and thread maker.
| Platform | Limit | How it counts | Source |
|---|---|---|---|
| X (Twitter) | 280 per post | Every link counts as 23 | X docs |
| Bluesky | 300 per post | Graphemes, and at most 3,000 bytes | Post lexicon |
| Threads | 500 per post | Up to 5 links | Threads API |
| Mastodon | 500 by default | Characters | Mastodon docs |
| Pinterest | 800 description, 100 title | Characters | Pinterest API spec |
| Instagram | 2,200 caption | Also up to 5 hashtags (since December 2025) and 20 @ tags; see the hashtag limit | Instagram API |
| Discord | 2,000 per message | Characters | Discord docs |
| LinkedIn | 3,000 per post | Characters | LinkedIn Help |
| Telegram | 4,096 per message | Captions on photos: 1,024 | Bot API |
What is the character limit on X (Twitter)?
280 characters per post. X runs every link through its t.co shortener, so a link counts as 23 characters whether it is 20 characters long or 200. Emoji and Chinese, Japanese or Korean characters count as 2; our Twitter character counter applies X's rules as you type. Subscribers to X's paid tiers can post far longer; Twitter first raised that to 25,000 characters for subscribers in 2023.
Does Twitter still have a 140 character limit?
No. Twitter doubled the limit to 280 in November 2017, and 280 is still the limit for most accounts on X.
How many characters can a LinkedIn post have?
3,000. LinkedIn's help page says that for anything longer you should write an article instead. In practice the opening lines carry the post, because long posts are folded in the feed until someone expands them.
What is the character limit on Bluesky?
300 graphemes. A grapheme is what you see as one character, so an emoji with a skin tone, which is several code points under the hood, counts as one. The same post also has a hard ceiling of 3,000 bytes, which matters only for text heavy with emoji or non-Latin scripts.
What is the character limit on Threads and Mastodon?
Both default to 500. Threads also caps a post at 5 links; if you are choosing between the two short-post networks, Bluesky vs Threads compares them, and how to schedule Bluesky posts covers the 300-character side. On Mastodon, 500 is the default that the Mastodon software ships with; the server you are on decides, so check your server's composer.
Why one post rarely fits everywhere
A 600-character LinkedIn post is over the limit on X, Bluesky, Threads and Mastodon. You can cut it four times, split it into a thread, or write a version per network. We built Skryvo to do the last one: it writes a separate version of the post for each channel you publish to, within that channel's limit and in your brand's voice, then schedules them on one calendar. If you write the versions yourself, the post preview tool shows where each one breaks, our guide to scheduling X posts covers threads, and the best time to post on X compares three studies.
Write for the shortest network first, then let the longer ones have the detail.
Originally published at skryvo.ai.
How to Schedule Bluesky Posts and Threads
As of October 2026 the Bluesky app has no schedule button, so scheduling a Bluesky post means using a tool that publishes it for you at the time you pick. The tool connects to your account through Bluesky's own sign-in or an app password, never your main password. This guide covers both ways in, threads, and the limits a scheduled post must fit.
The short version: connect a scheduler with Bluesky's sign-in (or an app password from Bluesky → Settings → App Passwords), write the post or thread within 300 characters per post and up to 4 images, and pick a time. Revoke the app password in Bluesky's settings whenever you stop using the tool.
Can you schedule posts on Bluesky?
Not inside the Bluesky app itself today. Bluesky publishes a post the moment you send it, so any scheduling happens in a separate tool that holds the post and sends it through Bluesky's API at the chosen time.
Connecting a scheduler: sign-in or app password
- Bluesky sign-in (OAuth). The tool sends you to Bluesky to approve access. You never type a password into the tool.
- App password. In Bluesky, open Settings › App Passwords and create one for the tool. It is not your account password, it is shown once, and you can delete it any time to cut the tool off.
Never give a scheduling tool your main Bluesky password. If a tool asks for it, use another tool.
Bluesky post limits a scheduled post must fit
| Limit | Value |
|---|---|
| Text per post | 300 characters (graphemes), and at most 3,000 bytes |
| Images per post | Up to 4 |
| Size per image | Up to 2,000,000 bytes |
The text limits come from Bluesky's post lexicon; an emoji counts as one character. Paste a draft into our post preview tool to count it the way Bluesky does.
How to schedule a Bluesky thread
Write the whole thread first, with each part under 300 characters. A scheduler then posts the first part and replies to it with each following part, in order, so the thread appears at once at the time you chose. Our thread maker splits a long post into numbered parts that fit, keeping whole sentences together where it can.
Scheduling Bluesky posts in Skryvo
1. In Skryvo, open Settings › Connected accounts and choose Bluesky. Sign in with Bluesky, or paste an app password.
2. Write the post or thread, or let Skryvo draft it in your brand's voice for Bluesky's length.
3. Pick a time on the calendar. Skryvo posts it on that quarter hour, reads it back from Bluesky to confirm it is live, and collects its results.
The same idea can go to LinkedIn, X and Mastodon as their own versions, and an AI agent such as Claude can do the scheduling for you. Bluesky in Skryvo lists what it posts today.
Is it safe to use a Bluesky scheduler?
Yes, if it connects through Bluesky's sign-in or an app password. Both can be revoked without changing your main password, which is exactly why Bluesky offers them. Check that the tool shows you what went out and when, so a failed post does not go unnoticed.
Schedule the posts you already know you will write, keep the replies live, and delete the app password the day you stop using the tool. Still choosing a network? Bluesky vs Threads compares the two on size, length and scheduling.
Originally published at skryvo.ai.
why is the pds like this?
very different contrast ratios for dark and light mode... makes no sense, its a static background color, the value shouldnt depend on the mode youre in
was gonna fix it, but someone already did. please merge it: atproto#5665
11 likes
github.com/bluesky-social/social-app/blob/main/sr…
atproto#5615
github.com/bluesky-social/atproto/blob/main/packa…
Links are records! The AppView only explicitly blocks shorteners; the OnlyFans ban is client-side, but I bet their labeler could `!hide` the link server-side.
This is more robust than I thought. And more flexible.
12 likes
yes. here is the PR with the hotfix:
atproto#5694
11 likes
hmmm. I just realized I don't think rate limit headers on PDSs (xrpc services) is atproto spec. So that means each new PDS implementation may be doing rate limits with different headers 😵
github.com/bluesky-social/atproto/blob/9f66a7e54b…
21 likes
so github.com/bluesky-social/atproto/blob/main/lexic…
also because they backed themselves into a hole by hardcoding 4 image posts the same way, they made 5-10 image posts a different object in the spec 😭
11 likes · 3 reposts
Mentions
Social Media Character Limits From Each Platform's Docs X (Twitter) allows 280 characters per post and counts every link as 23 of them. LinkedIn allows 3,000. Bluesky allows 300, counted in graphemes, so an emoji is one. Each figure below comes from the platform's own documentation, linked in the table, and they are the same limits Skryvo writes to when it drafts a post for each channel. The short version: X 280, Bluesky 300, Threads 500, Mastodon 500 by default, Pinterest descriptions 800 with 100-character titles, Instagram captions 2,200, Discord 2,000, LinkedIn 3,000, Telegram 4,096 (captions 1,024). To check a post against all of them at once, paste it into our free post preview and thread maker. | Platform | Limit | How it counts | Source | |---|---|---|---| | X (Twitter) | 280 per post | Every link counts as 23 | X docs | | Bluesky | 300 per post | Graphemes, and at most 3,000 bytes | Post lexicon | | Threads | 500 per post | Up to 5 links | Threads API | | Mastodon | 500 by default | Characters | Mastodon docs | | Pinterest | 800 description, 100 title | Characters | Pinterest API spec | | Instagram | 2,200 caption | Also up to 5 hashtags (since December 2025) and 20 @ tags; see the hashtag limit | Instagram API | | Discord | 2,000 per message | Characters | Discord docs | | LinkedIn | 3,000 per post | Characters | LinkedIn Help | | Telegram | 4,096 per message | Captions on photos: 1,024 | Bot API | What is the character limit on X (Twitter)? 280 characters per post. X runs every link through its t.co shortener, so a link counts as 23 characters whether it is 20 characters long or 200. Emoji and Chinese, Japanese or Korean characters count as 2; our Twitter character counter applies X's rules as you type. Subscribers to X's paid tiers can post far longer; Twitter first raised that to 25,000 characters for subscribers in 2023. Does Twitter still have a 140 character limit? No. Twitter doubled the limit to 280 in November 2017, and 280 is still the limit for most accounts on X. How many characters can a LinkedIn post have? 3,000. LinkedIn's help page says that for anything longer you should write an article instead. In practice the opening lines carry the post, because long posts are folded in the feed until someone expands them. What is the character limit on Bluesky? 300 graphemes. A grapheme is what you see as one character, so an emoji with a skin tone, which is several code points under the hood, counts as one. The same post also has a hard ceiling of 3,000 bytes, which matters only for text heavy with emoji or non-Latin scripts. What is the character limit on Threads and Mastodon? Both default to 500. Threads also caps a post at 5 links; if you are choosing between the two short-post networks, Bluesky vs Threads compares them, and how to schedule Bluesky posts covers the 300-character side. On Mastodon, 500 is the default that the Mastodon software ships with; the server you are on decides, so check your server's composer. Why one post rarely fits everywhere A 600-character LinkedIn post is over the limit on X, Bluesky, Threads and Mastodon. You can cut it four times, split it into a thread, or write a version per network. We built Skryvo to do the last one: it writes a separate version of the post for each channel you publish to, within that channel's limit and in your brand's voice, then schedules them on one calendar. If you write the versions yourself, the post preview tool shows where each one breaks, our guide to scheduling X posts covers threads, and the best time to post on X compares three studies. Write for the shortest network first, then let the longer ones have the detail. Originally published at skryvo.ai.
How to Schedule Bluesky Posts and Threads As of October 2026 the Bluesky app has no schedule button, so scheduling a Bluesky post means using a tool that publishes it for you at the time you pick. The tool connects to your account through Bluesky's own sign-in or an app password, never your main password. This guide covers both ways in, threads, and the limits a scheduled post must fit. The short version: connect a scheduler with Bluesky's sign-in (or an app password from Bluesky → Settings → App Passwords), write the post or thread within 300 characters per post and up to 4 images, and pick a time. Revoke the app password in Bluesky's settings whenever you stop using the tool. Can you schedule posts on Bluesky? Not inside the Bluesky app itself today. Bluesky publishes a post the moment you send it, so any scheduling happens in a separate tool that holds the post and sends it through Bluesky's API at the chosen time. Connecting a scheduler: sign-in or app password - Bluesky sign-in (OAuth). The tool sends you to Bluesky to approve access. You never type a password into the tool. - App password. In Bluesky, open Settings › App Passwords and create one for the tool. It is not your account password, it is shown once, and you can delete it any time to cut the tool off. Never give a scheduling tool your main Bluesky password. If a tool asks for it, use another tool. Bluesky post limits a scheduled post must fit | Limit | Value | |---|---| | Text per post | 300 characters (graphemes), and at most 3,000 bytes | | Images per post | Up to 4 | | Size per image | Up to 2,000,000 bytes | The text limits come from Bluesky's post lexicon; an emoji counts as one character. Paste a draft into our post preview tool to count it the way Bluesky does. How to schedule a Bluesky thread Write the whole thread first, with each part under 300 characters. A scheduler then posts the first part and replies to it with each following part, in order, so the thread appears at once at the time you chose. Our thread maker splits a long post into numbered parts that fit, keeping whole sentences together where it can. Scheduling Bluesky posts in Skryvo 1. In Skryvo, open Settings › Connected accounts and choose Bluesky. Sign in with Bluesky, or paste an app password. 2. Write the post or thread, or let Skryvo draft it in your brand's voice for Bluesky's length. 3. Pick a time on the calendar. Skryvo posts it on that quarter hour, reads it back from Bluesky to confirm it is live, and collects its results. The same idea can go to LinkedIn, X and Mastodon as their own versions, and an AI agent such as Claude can do the scheduling for you. Bluesky in Skryvo lists what it posts today. Is it safe to use a Bluesky scheduler? Yes, if it connects through Bluesky's sign-in or an app password. Both can be revoked without changing your main password, which is exactly why Bluesky offers them. Check that the tool shows you what went out and when, so a failed post does not go unnoticed. Schedule the posts you already know you will write, keep the replies live, and delete the app password the day you stop using the tool. Still choosing a network? Bluesky vs Threads compares the two on size, length and scheduling. Originally published at skryvo.ai.
why is the pds like this? very different contrast ratios for dark and light mode... makes no sense, its a static background color, the value shouldnt depend on the mode youre in was gonna fix it, but someone already did. please merge it: atproto#5665
github.com/bluesky-social/social-app/blob/main/sr… atproto#5615 github.com/bluesky-social/atproto/blob/main/packa… Links are records! The AppView only explicitly blocks shorteners; the OnlyFans ban is client-side, but I bet their labeler could `!hide` the link server-side. This is more robust than I thought. And more flexible.
yes. here is the PR with the hotfix: atproto#5694
hmmm. I just realized I don't think rate limit headers on PDSs (xrpc services) is atproto spec. So that means each new PDS implementation may be doing rate limits with different headers 😵 github.com/bluesky-social/atproto/blob/9f66a7e54b…
so github.com/bluesky-social/atproto/blob/main/lexic… also because they backed themselves into a hole by hardcoding 4 image posts the same way, they made 5-10 image posts a different object in the spec 😭