Cross-posting

How to cross-post from Mastodon to Bluesky

Mastodon to Bluesky is the squeeze direction: 500 characters by default — often more, since instance admins can raise the limit — have to fit Bluesky’s hard 300-grapheme ceiling, written into the AT Protocol itself. This is the rare pair where the text, not the media, is the real migration work: posts need rewriting or threading, content warnings have no direct equivalent, and the hashtag block that powered your Mastodon reach mostly turns into dead weight.

The reward is reach into the larger of the two networks with content that already matches its culture — plain, specific, alt-texted. Here’s what carries over, what needs rework, and the manual versus SocialKit workflow.

Start My Free Trial

€0.00 due today · cancel anytime · 7-day money-back guarantee

Mastodon vs Bluesky: the spec deltas

Everything that changes between the two composers, side by side.

MastodonBluesky spec mapping. Limits last verified June 2026; platforms change these quietly, so check the composer when in doubt.
SpecMastodon (from)Bluesky (to)
Primary canvas1200 × 675 px · 16:9 (post image)1200 × 675 px · 16:9 (post image)
Caption limit500 characters by default — instance admins can raise it300 graphemes (visual characters — emoji count once)
Video lengthInstance-dependent; default upload caps are modest, so keep clips shortShort clips — Bluesky has been raising limits (around 3 minutes as of early 2026)
HashtagsCount toward the limit and drive most discovery (most instances have no algorithmic feed)Plain-text hashtags count toward the 300-grapheme limit
ProtocolActivityPub — native to the fediverseAT Protocol — bridged to the fediverse only via opt-in Bridgy Fed
Content warningsCollapsible CW field; its text counts toward the limitMedia self-labels only — no text CW field (as of June 2026)
Image file sizeUp to 16 MB per image on default serversCompressed to ~1 MB (976.56 KB) per image

The good news

What transfers cleanly

  • The voice: substance-first writing, alt-text discipline, and thread-native habits formed on Mastodon are exactly what Bluesky’s culture rewards — no tonal translation needed.
  • Posts under 300 graphemes cross unchanged — and Bluesky’s grapheme counting is generous with emoji, billing even complex multi-codepoint ones as a single character.
  • Images, conceptually: 1200 × 675 px (16:9) is the recommended default on both, four images per post on both, alt text supported and culturally expected on both.
  • Short video: Mastodon clips that respect its ~99 MB default cap usually run shorter than Bluesky’s ~3-minute ceiling (as of June 2026) — just re-export the master rather than downloading the transcoded copy.
  • Threads: a Mastodon reply-chain rebuilds naturally as a Bluesky thread, with each post getting its own 300 graphemes.

The fine print

What breaks in transit

  • The 200-character haircut: 500 characters (or more on raised-limit instances) won’t fit 300 graphemes, and the AT Protocol enforces the cap in the composer — there is no truncation, only a rejected draft. Rewrite or thread.
  • Link math flips against you: Mastodon bills every URL at a flat 23 characters, while on Bluesky the URL counts as the text you type — though the official app offers to drop the URL text once a link card attaches.
  • Content warnings don’t exist as such: Bluesky offers media self-labels (for adult or graphic content) but no collapsible text warning as of June 2026 — a CW-led Mastodon post needs its context rewritten into the visible text.
  • Mentions break twice: Mastodon’s @user@instance.domain format points nowhere on Bluesky, and unlike on Mastodon — where the domain part is free — every character of a Bluesky mention counts toward the 300.
  • The hashtag block loses its job: tags drive discovery on Mastodon, but on Bluesky they spend scarce graphemes while custom feeds and the Discover tab do the surfacing — a pasted wall of tags reads as imported spam.

Step by step: by hand vs with SocialKit

The manual way

  1. Rewrite the post to 300 graphemes — lead with the point and treat it as a standalone line, not an excerpt of the longer original.
  2. Cut the tag block to one or two genuinely searchable tags, or drop tags entirely.
  3. Rework any content warning: put the essential context in the opening words, and apply Bluesky’s media labels where the warning concerned an image or video.
  4. Re-find your mentions as Bluesky handles, or name people in plain text.
  5. Re-export images from your masters under Bluesky’s ~1 MB cap (a 1200-px-wide JPEG at ~80% quality lands well under it) and carry the alt text over.
  6. If the original genuinely needs its length, thread it — the first post hooks, each reply carries one idea.

With SocialKit — compose once, customize per network

  1. Compose once: write the post in SocialKit’s composer and select both Mastodon and Bluesky.
  2. Customize per network on one screen: keep the full 500-character version for Mastodon and cut the Bluesky variant to 300 deliberately — not by error message.
  3. Schedule each network into its own slot; the two audiences peak at different hours.
  4. Let SocialKit publish natively to both, then watch its analytics to learn which version of the message lands harder.
Start My Free Trial

€0.00 due today · cancel anytime · 7-day money-back guarantee

Pro tips

Tip 1

Write the cut, don’t make it: the strongest 300-grapheme posts read like they were born short. Pull the single sharpest sentence from the Mastodon original and let it stand alone rather than compressing every clause.

Tip 2

Mirror option: Bridgy Fed bridges this direction too — follow @bsky.brid.gy@bsky.brid.gy from your Mastodon account and the opt-in service creates a bridged Bluesky presence for your public posts (as of June 2026). Check how it presents your longer posts before relying on it; a native account always presents better.

Tip 3

Compress deliberately: export images yourself at under 1 MB instead of letting Bluesky’s client crunch them — flat-color graphics saved as WebP or JPEG around 80% quality keep their crispness through the cap.

FAQ

Mastodon → Bluesky questions

Start My Free Trial

€0.00 due today · cancel anytime · 7-day money-back guarantee

Will my 500-character Mastodon post fit on Bluesky?

Not without editing — Bluesky’s limit is 300 graphemes, enforced by the AT Protocol, and the composer rejects longer drafts rather than truncating them. Rewrite the post shorter or split it into a thread; if your instance allows posts beyond 500 characters, budget for an even deeper cut.

Can Mastodon and Bluesky talk to each other natively?

No — Mastodon speaks ActivityPub and Bluesky speaks the AT Protocol. Bridgy Fed, a free opt-in bridge, spans the gap: follow @bsky.brid.gy@bsky.brid.gy from Mastodon and it mirrors your public posts to a bridged Bluesky handle (as of June 2026). For a brand presence, a native Bluesky account remains the better experience.

What happens to my content warnings on Bluesky?

There’s no equivalent field — Bluesky supports self-applied media labels for adult or graphic content but no collapsible text warning as of June 2026. Rewrite CW posts so the necessary context sits in the opening line, and apply a media label when the sensitive part is the image or video.

Do hashtags work on Bluesky?

They’re tappable and searchable, but they aren’t the discovery engine they are on Mastodon — Bluesky surfaces posts through custom feeds and the Discover tab, and every tag spends part of your 300 graphemes. Keep at most one or two, or rely on plain wording that feeds and search can match.

Post to Mastodon and Bluesky in one go

Compose once, customize the caption per network, and let SocialKit publish to Mastodon, Bluesky, and 9 more platforms on schedule — no re-uploading, no copy-paste.

Start My Free Trial

€0.00 due today · cancel anytime · 7-day money-back guarantee