Every network decides how much text a post can hold, and they disagree. A caption that fits on LinkedIn will be cut off on Bluesky, and a post written for X may be shorter than it needs to be anywhere else. Knowing the numbers up front saves rewrites at the last minute. This page lists the limits PostDelegate uses for planning, explains how each network counts characters and shows how to write once and fit everywhere.
Character limits by network
The table lists every network in the PostDelegate directory that has an assessed limit. The last column shows whether you can connect the network today. A network that is coming soon has a limit listed for planning but cannot be connected yet.
| Network | Limit | Counted as | Notes | On PostDelegate |
|---|---|---|---|---|
| 2,200 | Unicode characters | Coming soon | ||
| 63,206 | Unicode characters | Coming soon | ||
| 3,000 | Unicode characters | Coming soon | ||
| TikTok | 2,200 | UTF-16 units, so some emoji count as 2 | Coming soon | |
| YouTube | 5,000 | UTF-8 bytes, so non-Latin text uses more | Connect today | |
| X | 280 | Weighted: most Latin letters 1, many others and emoji 2 | Premium accounts get 25,000. | Coming soon |
| Threads | 500 | Characters, with each emoji counted by its UTF-8 byte length | Coming soon | |
| Bluesky | 300 | Graphemes, so an emoji or a flag counts as 1 | Connect today | |
| 500 | Unicode characters | Coming soon | ||
| Mastodon | 500 | Unicode characters | Every link counts as 23. A remote mention counts as just @user. | Coming soon |
| Google Business | 1,500 | Unicode characters | Coming soon | |
| 40,000 | Unicode characters | Coming soon | ||
| Telegram | 4,096 | Unicode characters | Coming soon | |
| Discord | 2,000 | Unicode characters | Coming soon | |
| Slack | 4,000 | Unicode characters | Connect today | |
| Tumblr | 32,768 | Unicode characters | Connect today | |
| Lemmy | 10,000 | Unicode characters | Connect today | |
| Nostr | 100,000 | Unicode characters | Connect today | |
| Farcaster | 320 | UTF-8 bytes, so non-Latin text uses more | Coming soon | |
| Twitch | 500 | Unicode characters | Connect today | |
| Kick | 500 | Unicode characters | Connect today | |
| Dribbble | 40,000 | Unicode characters | Connect today | |
| DEV.to | 100,000 | Unicode characters | Connect today | |
| Medium | 100,000 | Unicode characters | Connect today | |
| WordPress | 100,000 | Unicode characters | Connect today | |
| Hashnode | 10,000 | Unicode characters | Connect today | |
| Listmonk (email) | 100,000 | Unicode characters | Connect today |
VK, Whop, Skool, MeWe and Moltbook are in the directory but have no assessed limit yet, so they are left out of the table.
Why the same text counts differently
A character is not one thing. The same sentence can have a different length depending on what the network counts, and emoji and non-Latin scripts are where the gaps show up.
- Unicode characters. The plainest count: one per character. Most networks in the table use it.
- Graphemes. What a reader sees as one character. Bluesky counts this way, so an emoji or a flag is 1 even when it is built from several pieces underneath.
- UTF-16 units. TikTok counts this way, so some emoji count as 2.
- UTF-8 bytes. YouTube and Farcaster count bytes, so accented letters and non-Latin scripts use more than one unit each.
- Emoji by byte length. Threads counts an emoji as its UTF-8 byte length, so a post heavy with emoji fills up faster.
- Weighted. X weights characters: most Latin letters count 1, many others and emoji count 2, and every link counts as 23.
- Fixed-cost links. Mastodon counts every link as 23, however long the address, and a remote mention counts as just the user name.
If you write in a language other than English, or use a lot of emoji, leave extra room. Test the real text, not an estimate from an English sentence.
Short-form and long-form networks
The limits fall into two groups, and it helps to plan for each.
Short posts
Networks such as X, Bluesky, Threads, Mastodon, Farcaster, Twitch and Kick sit between 280 and 500 characters in the table. For these, write the shortest version of your idea first. If the idea does not fit, a thread may be a better format. On Bluesky, Kick and Twitch you can add more entries to a post with Add post in a thread, which publishes the follow-ups as replies. See how to schedule Bluesky posts and threads.
Captions and descriptions
Instagram, TikTok, Google Business Profile, LinkedIn, Discord, Telegram, YouTube, Dribbble and Slack sit between 1,500 and 5,000 characters. The limit is rarely the problem. The practical problem is that most readers see only the first lines, so put the point there.
Articles and newsletters
Article networks such as DEV.to, Medium, Hashnode and WordPress, and email through Listmonk, have limits of 10,000 characters or more. For these, the number in the table is a planning ceiling. The composer in your workspace and the platform enforce the real rule, and each channel has its own required fields, such as a title or a tag. See the channel guides, or cross-post articles with canonical URLs.
Write once, fit everywhere
- Write for the tightest network first. If the same post goes to Bluesky and Instagram, write the Bluesky version, then add detail for Instagram.
- Put links last. A link that costs 23 on X or Mastodon is easier to budget when it is the final item.
- Check the real text. Paste the finished caption into the caption checker. It shows the count for each network at once, and it runs in your browser, so the text is not sent or saved.
- Adjust per channel. In the PostDelegate composer you write the content once and then adjust it for each channel. Each channel keeps its own settings, and the composer counts as you type.
- Read the error if one appears. A post that is too long is rejected with a readable message, and the API returns the same checks as a
400error.
Using an assistant to fit the limits
An AI assistant is useful for trimming. When Claude or ChatGPT is connected to PostDelegate over MCP, it reads each channel's length limit and required settings before it creates a post, so you can ask for one idea in the right length for each channel and get drafts you can review. Ask for drafts, and check each one in the calendar. See scheduling with Claude and scheduling with ChatGPT.
What this table is not
- It is not a promise that a post under the limit will be accepted. Networks can also reject a post for content, media or account reasons.
- It does not cover media limits. File formats and sizes are in the media guide.
- It does not mean every listed network is open. Only the ones marked Connect today can be connected.
Next steps
Open the caption checker with your next post, then plan it on the calendar. The platform directory shows which networks you can connect today, and the scheduling guide covers drafts, scheduling and repeats.
Ready to plan your posts? Start your 7-day free trial. No credit card is required.
More guides
- How to schedule social media posts with Claude (MCP)
- How to schedule social media posts with ChatGPT
- What is a social media MCP server and how to use one
- How to schedule Bluesky posts and threads
- How to schedule YouTube videos (title, thumbnail, visibility)
- Social media approval workflow for agencies and clients
- Cross-post articles to DEV.to, Hashnode, Medium and WordPress with canonical URLs