Threads and Bluesky are the two text feeds that grew fastest after X’s upheaval, and they make a natural cross-posting pair — same conversational register, same short-post rhythm, different plumbing. The numbers are the first surprise: Threads allows 500 characters and Bluesky 300 graphemes, so two of every five characters have to go. The second surprise is how each one counts: Bluesky measures graphemes (visual characters — emoji count once) against a separate 3,000-byte ceiling, and links consume budget there while community documentation indicates they’re free on Threads.
This guide maps what moves cleanly between the two, what breaks at 300, and the workflow for publishing to both — by hand, or composed once in SocialKit.
€0.00 due today · cancel anytime · 7-day money-back guarantee
Everything that changes between the two composers, side by side.
| Spec | Threads (from) | Bluesky (to) |
|---|---|---|
| Caption limit | 500 characters | 300 graphemes (visual characters — emoji count once) |
| Video length | Up to 5 minutes | Short clips — Bluesky has been raising limits (around 3 minutes as of early 2026) |
| Hashtags | One topic tag per post — Threads replaced multi-hashtag culture with a single tag | Plain-text hashtags count toward the 300-grapheme limit |
| Link counting | Reported not to count toward the limit | URL text counts; deleting it after the link card loads frees the graphemes |
| Images per post | Carousels up to 20 photos or videos | Up to 4 images, each with a generous alt-text field |
| Protocol | ActivityPub (fediverse sharing, opt-in) | AT Protocol (custom feeds, domain handles) |
The good news
The fine print
€0.00 due today · cancel anytime · 7-day money-back guarantee
Tip 1
Write the 300-grapheme version first when a post is destined for both: expanding to 500 for Threads is painless; compressing 500 to 300 is surgery. The tight draft is the master copy.
Tip 2
Spend graphemes on words, not URLs: the link-card trick — paste, wait for the card, delete the URL text — is the single biggest space saver when cross-posting into Bluesky.
Tip 3
Mind the byte ceiling: Bluesky also enforces 3,000 bytes of UTF-8 per post — plain English never hits it, but emoji-dense posts can fail the byte check before the grapheme one.
FAQ
€0.00 due today · cancel anytime · 7-day money-back guarantee
Threads allows 500 characters per post; Bluesky allows 300 graphemes (visual characters, defined in the AT Protocol post schema), with a separate 3,000-byte ceiling on the raw UTF-8 text. In practice, a full-length Threads post has to lose roughly 40% to fit Bluesky.
Differently. Community documentation indicates links don’t count toward Threads’ 500 characters. On Bluesky, the URL text counts toward the 300 graphemes — though the composer usually lets you delete the URL once its link card has loaded, keeping the preview without the character cost.
Not natively — Threads federates over ActivityPub (the fediverse it shares with Mastodon), while Bluesky runs the AT Protocol. Third-party bridges exist between the two ecosystems, but for a publishing workflow, cross-posting to each network remains the dependable way to reach both audiences.
Threads allows a single topic tag per post instead of traditional hashtags. Bluesky uses plain-text hashtags that count toward the 300-grapheme limit and surface in search and custom feeds — add one only when the tag genuinely helps discovery, because it competes with your words for space.
Compose once, customize the caption per network, and let SocialKit publish to Threads, Bluesky, and 9 more platforms on schedule — no re-uploading, no copy-paste.
€0.00 due today · cancel anytime · 7-day money-back guarantee