How to Cross-Post From X (Twitter) to Bluesky

How to Cross-Post From X (Twitter) to Bluesky

Twenty characters separate them, so one draft covers both. Here is the workflow, and the parts that do not transfer.

X and Bluesky are close enough in format that this is nearly free: 280 characters versus 300, threads on both, similar posting rhythms.

The mechanics take a minute. What’s worth thinking about is whether to mirror or to actually be present on both.

The limits

PlatformLimitImagesVideo
X2804512 MB, 140s
Bluesky3004100 MB, 60s

Write to 280 and it works on both without editing. The extra 20 characters on Bluesky are rarely worth a separate version.

The video limits differ more meaningfully. Bluesky caps at 100 MB and 60 seconds, X at 512 MB and 140 seconds. A clip fine for X may be too long for Bluesky, so if video is part of what you post, cut to the tighter limit.

What doesn’t transfer

Mentions. A handle on X is not the same handle on Bluesky, and often belongs to nobody there. An @name copied across either points at a stranger or at nothing. Either map it per platform or use the plain name.

Quote posts and replies. A post that only makes sense as a reply to something on X is meaningless on Bluesky, where that conversation doesn’t exist. These shouldn’t cross-post at all.

Alt text. Bluesky’s community takes image descriptions seriously, and the protocol sets no length limit on alt text, so there’s no reason not to write it. Cross-posting an image without alt text is noticed there in a way it isn’t on X.

Mirroring versus being present

The honest question. A Bluesky account that is a pure mirror of an X account gets followed less and engaged with less, because people can tell.

Two workable positions:

Cross-post the substance, be present for the rest. Your actual posts go to both, but you reply and converse natively on each. This is what most people who succeed on both are doing.

Pick one as primary. Cross-post to the other as a courtesy so people who moved can still follow you, and don’t pretend it’s a fully staffed account.

What doesn’t work is a mirror with nobody home, especially on Bluesky where the norms around participation are stronger.

The workflow

  1. Write to 280 characters
  2. Select X and Bluesky
  3. Fix any mentions per platform
  4. Add alt text to images
  5. Pick a time and queue it

Character counts are enforced per platform as you type, so nothing gets truncated.

Worth adding Threads and Mastodon

If you’re already writing to 280, the same draft works on Threads (500) and Mastodon (500) unchanged. Four platforms, one draft, one queue.

BulkPublish publishes to all four, plus 11 other networks.

  • Channels: Free: 3 (1 per platform). Pro: 30 (2 per platform). Business: 75 (5 per platform).
  • Posts: Free: 3/day. Pro: 30/day. Business: unlimited.

Note that X publishing is priced differently from other platforms because its API carries a real per-request cost: pay-as-you-go credits on the free plan, an included monthly budget on paid plans.

The short version

Write to 280 and it publishes to both unchanged. Fix mentions, add alt text, and don’t cross-post replies. Then decide honestly whether you’re present on Bluesky or just mirroring, because the difference is visible from the outside.