Bluesky Thread Maker
Paste once and get a Bluesky thread and an X thread side by side, split at sentences and never inside a link. Copy each part, with or without numbering.
How do you split text into a Bluesky thread?
Bluesky caps each post at 300 characters (graphemes) and 3,000 bytes, so longer text goes out as a thread of replies. Paste your text here and it is split at sentence boundaries, never inside a link, into a Bluesky thread and an X thread (280 weighted characters per post). Optional 1/3 numbering is counted inside each post's limit.
Bluesky thread
3 posts. Up to 300 graphemes and 3,000 bytes each, links at full length.
- Post 1 of 3, 266/300, 266 bytes
1/3 Cross-posting sounds simple until you hit the limits. X allows 280 characters per post, counted with weights: every link costs 23 and most emoji cost 2. Bluesky allows 300, counted as graphemes, and a link costs its full length when it is posted through the API.
- Post 2 of 3, 269/300, 269 bytes
2/3 LinkedIn allows 3,000 in one post and has no threads at all. So the same paragraph can fit in one post on LinkedIn, need two on X and three on Bluesky. The split points also differ, because a long link that X counts as 23 can take 40 or more characters on Bluesky.
- Post 3 of 3, 258/300, 258 bytes
3/3 Here is one to show it: https://opentweet.io/features/cross-posting The fix is to split at sentences, keep every link whole, and check each part against every network you post to. That is what this tool does, in your browser, with nothing sent anywhere.
X thread
3 posts. Up to 280 weighted characters each, every link counted as 23.
- Post 1 of 3, 266/280
1/3 Cross-posting sounds simple until you hit the limits. X allows 280 characters per post, counted with weights: every link costs 23 and most emoji cost 2. Bluesky allows 300, counted as graphemes, and a link costs its full length when it is posted through the API.
- Post 2 of 3, 269/280
2/3 LinkedIn allows 3,000 in one post and has no threads at all. So the same paragraph can fit in one post on LinkedIn, need two on X and three on Bluesky. The split points also differ, because a long link that X counts as 23 can take 40 or more characters on Bluesky.
- Post 3 of 3, 238/280
3/3 Here is one to show it: https://opentweet.io/features/cross-posting The fix is to split at sentences, keep every link whole, and check each part against every network you post to. That is what this tool does, in your browser, with nothing sent anywhere.
One thread for X and Bluesky together
OpenTweet sends the same parts to every network you pick, so a thread for both needs parts that fit both limits at once. Split that way, this text is 3 posts. Here is the REST call that publishes it now, as native threads on both networks. The response reports each network separately in results[].
Authorization: Bearer ot_your_key
Content-Type: application/json
{
"text": "1/3 Cross-posting sounds simple until you hit the limits. X allows 280 characters per post, counted with weights: every link costs 23 and most emoji cost 2. Bluesky allows 300, counted as graphemes, and a link costs its full length when it is posted through the API.",
"platforms": [
"x",
"bluesky"
],
"is_thread": true,
"thread_tweets": [
"2/3 LinkedIn allows 3,000 in one post and has no threads at all.\n\nSo the same paragraph can fit in one post on LinkedIn, need two on X and three on Bluesky. The split points also differ, because a long link that X counts as 23 can take 40 or more characters on Bluesky.",
"3/3 Here is one to show it: https://opentweet.io/features/cross-posting\n\nThe fix is to split at sentences, keep every link whole, and check each part against every network you post to. That is what this tool does, in your browser, with nothing sent anywhere."
],
"publish_now": true
}Use scheduled_date instead of publish_now to schedule it. Add "linkedin" to platforms and LinkedIn gets one post with the parts joined by a blank line, numbering included as written. AI agents can do the same through the hosted MCP server at https://mcp.opentweet.io/mcp.
How the splitter decides where to cut
Sentences first
Whole sentences are packed into each post until the next one would not fit. Paragraph breaks and line breaks are kept inside a post.
Words only when needed
A sentence longer than a whole post is broken between words. A single word longer than a post is the only thing ever cut mid-word.
Links stay whole
A link is never split across two posts. On X it always counts as 23. On Bluesky it counts at its full length, so long links push the split points earlier.
Publish the thread to X and Bluesky in one go
Paste the parts into OpenTweet as a thread and it goes out as native reply threads on X and Bluesky, and as one post on LinkedIn if you pick it. Schedule it or post it now, from the composer or the API.
7-day free trial, then from $11.99/mo. Bluesky and LinkedIn on every plan.
Bluesky thread maker FAQ
How do I make a thread on Bluesky?
A Bluesky thread is a chain of replies to your own post, each one up to 300 characters. Paste your text here, copy part 1 and post it, then reply to it with part 2, and so on. OpenTweet publishes the whole chain for you as real replies, on a schedule or right away.
Why do the X thread and the Bluesky thread split differently?
X allows 280 weighted characters, where every link counts as 23 and most emoji count as 2. Bluesky allows 300 graphemes and a 3,000-byte ceiling, and a link counts at its full length when posted through the API or OpenTweet. A long link can fit easily on X and take a big share of a Bluesky post.
Does the 1/3 numbering count toward the limit?
Yes. With numbering on, every part is checked with its "1/3 " prefix included, and the tool reserves room for the widest number the thread needs, so no numbered part goes over.
Does OpenTweet split long posts into threads automatically?
No. OpenTweet publishes the thread you write as native threads on X and Bluesky. A single post over 300 characters is skipped on Bluesky with a reason, and still goes out on your other networks. Split the text here first, then paste the parts into OpenTweet as a thread.
Will links be clickable in a Bluesky thread?
Through OpenTweet, yes: links and @mentions are made clickable. OpenTweet does not attach link preview cards and does not shorten links, so each link costs its full length.
Do I need a thread on X if I have X Premium?
X Premium raises the limit to 25,000 characters per post as of September 2026, so one long post works on X. Bluesky stays at 300 for everyone, so the same text still needs a thread there.
Can one thread go to X, Bluesky and LinkedIn at the same time?
Yes, with one OpenTweet draft or one API call. X and Bluesky get native reply threads. LinkedIn has no threads, so it gets one post with the parts joined by a blank line.
Related tools and guides
Bluesky Character Counter
Graphemes vs 300, bytes vs 3,000, and what each link costs.
Thread to LinkedIn Post
Turn an X thread into one LinkedIn post, or a LinkedIn post into a Bluesky thread.
LinkedIn Character Counter
Count against 3,000 and see roughly where "...see more" falls.
Thread Generator
Draft an X thread from a topic with AI.
Cross-posting
One draft or one API call posts to X, Bluesky and LinkedIn.
Bluesky Scheduler
Schedule Bluesky posts and real reply-chain threads.
LinkedIn Scheduler
Schedule posts to your LinkedIn personal profile.