How-to guide

How to Cross-Post from X to Threads, Bluesky, and Mastodon

Last updated: 2026-06-01 · X (Twitter) · By SocialKit Team

Writing the same thought four times is a waste. SocialKit's cross-post composer lets you draft once and push to X, Threads, Bluesky, and Mastodon in a single click — with separate caption variants for each network's character limits, so nothing gets silently truncated. Here's exactly how to do it.

Before you start

You need a SocialKit account — the 7-day free trial covers this workflow at €0.00 today.

Connect each network you want to post to: X uses standard OAuth; Threads connects via the Threads API (requires a Threads-enabled Instagram account, as of June 2026); Bluesky connects with an app password you generate inside the Bluesky app; Mastodon connects via OAuth on your specific home instance. If you have not linked these yet, go to your workspace's connections screen and authorize each one before composing your first cross-post.

Solo plan includes 15 social accounts — enough to connect X, Threads, Bluesky, and one or more Mastodon instances alongside your other profiles.

Step by step

  1. Open the cross-post composer in SocialKit

    From your dashboard, navigate to the cross-post or create area. As of June 2026 this is where SocialKit's multi-network composer lives — you will see a list of your connected accounts so you can pick which ones receive this post.

    Tip: If you only want to target the four microblog networks, tick X, Threads, Bluesky, and Mastodon and leave your other accounts unchecked. You can save that combination as a group for next time.

  2. Select X, Threads, Bluesky, and Mastodon as destinations

    Check all four networks in the destination picker. SocialKit will open a separate caption panel for each so you can tailor the copy — but the shared text from step 3 pre-fills each one, so tailoring is optional rather than required.

  3. Write your base post text

    Type your core message in the shared composer. As of June 2026, the standard character limits are: X 280 characters (higher for X Premium subscribers), Threads 500 characters, Bluesky 300 graphemes, and Mastodon 500 characters on most instances (though individual instances can raise or lower that cap). SocialKit shows a per-network character count as you type so you can see at a glance which variants need trimming.

    Tip: Start with the tightest limit — Bluesky's 300 graphemes — so the base copy fits everywhere, then expand the Threads and Mastodon variants with extra context if you want.

  4. Customize per-network variants where the limits or audience differ

    Switch to each network's individual tab and adjust the copy. Common tweaks: shorten the X variant if it exceeds 280 characters; expand the Threads or Mastodon variant with a second paragraph; add relevant hashtags to Mastodon where discovery relies on them more heavily than on the other three. None of this is required — if the base text fits all four limits, you can skip this step entirely.

    Tip: Hashtags behave differently across these networks as of June 2026: Bluesky does not surface posts by hashtag the same way Mastodon does; X and Threads treat them as optional discoverability signals rather than primary discovery tools. Tailor hashtag use per network rather than copying them verbatim across all four.

  5. Add media and check how link previews will render

    If your post includes an image, video, or a URL whose preview card you want to control, add media from the composer. Be aware that link-preview behavior varies: as of June 2026, X generates its own link card from Open Graph tags, Bluesky renders a card from the AT Protocol's embed spec, and Threads and Mastodon render cards based on OG tags — but rendering can differ by instance on Mastodon. Check the per-network preview in SocialKit before scheduling so you know what the card will look like.

  6. Set the publish time or add to your queue

    Pick a date and time, or drop the post into your next available queue slot. All four networks will receive the post simultaneously at that moment. Use the SocialKit best-time data as a starting point — see the linked best-time pages below — but treat the figures as audience-specific estimates rather than guarantees.

    Tip: The four microblog audiences do not always peak at the same hour. If you have analytics showing different windows per network, consider scheduling two versions — one for X and Threads, another offset by an hour for Bluesky and Mastodon — rather than one simultaneous blast.

  7. Publish or schedule, then verify delivery on each network

    Hit schedule (or publish now). After the post goes live, spot-check each platform directly: confirm the text, link card, and any media rendered as expected. As of June 2026, all four of these networks support direct API publishing for text and image posts through SocialKit, so you should not need a manual mobile step for standard posts — but check after your first cross-post to confirm everything went through on your specific account configuration.

Best practices

  • Write to Bluesky's 300-grapheme limit first — it is the tightest of the four, and drafting to the tightest constraint means you have a version that fits everywhere before you expand.
  • Do not paste hashtags blindly across all four networks. Mastodon discovery is hashtag-driven; Bluesky is more follow-graph-driven as of June 2026; X and Threads treat them as secondary signals. Match your hashtag strategy to how each network actually surfaces content.
  • Keep the core message identical across all four, but let the opening sentence vary slightly — some Mastodon instances have local timelines where a slightly rephrased opening reads less like syndicated content and more like a genuine post.
  • Use SocialKit's per-network preview before scheduling to catch link-card formatting issues. A broken OG image on one network will look unprofessional even if the text is perfect.
  • After your first cross-post, pull analytics from each network separately. If one consistently underperforms, it may signal that your audience there prefers a different posting time, content style, or frequency — cross-posting is a starting point, not a permanent equalizer.
  • Reconnect any account that shows a connection warning before scheduling — Bluesky app passwords and Mastodon OAuth tokens can expire or be invalidated, and a failed post to one destination does not halt the others.

Good to know

Character limits are not all the same unit

As of June 2026, X counts characters (280 standard), Threads counts characters (500), Mastodon counts characters (500 on the flagship instance, but configurable per instance), and Bluesky counts graphemes — meaning a single emoji or multi-byte character can count as one grapheme rather than multiple bytes. In practice most Latin-script posts will not hit edge cases, but if you write in languages that use multi-byte characters (Arabic, Chinese, Japanese, Korean, etc.) Bluesky's 300-grapheme limit can be reached sooner than 300 visible symbols. SocialKit's character counter displays the correct unit per network.

Link previews and external links

All four networks generate link-preview cards from the URL's Open Graph metadata, but the fidelity and reliability differ. As of June 2026, X and Bluesky's card rendering is generally consistent; Threads can strip link previews in some post types; Mastodon instance behavior depends on the instance's link-preview settings. If your post is primarily link-driven, check the preview panel in SocialKit for each destination before you schedule.

Mastodon is federated — instance behavior varies

When you connect a Mastodon account to SocialKit you connect to one specific instance (for example, mastodon.social, fosstodon.org, or your own server). The character limit, content-warning support, and local-timeline behavior are all set at the instance level. If you move servers or want to post from a second instance, you need to connect that second account separately — SocialKit treats each Mastodon instance as a distinct social account within your account quota.

Do it in SocialKit

SocialKit's cross-post composer lets you write once and publish to X, Threads, Bluesky, and Mastodon simultaneously — with per-network character counters, variant captions, and link-preview checks built in. Start the 7-day free trial at €0.00 today.

Cross-post to all four microblogs with SocialKit
Free tool
Free X character counter

No login needed.

All 11 platforms included

Try it free

Schedule and cross-post to all 11 networks from one calendar on one flat plan. 7-day free trial — €0.00 due today.

Start My Free Trial

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

FAQ

Frequently asked questions

The questions people ask before they schedule — answered honestly, hedged where platform behavior changes.

Start My Free Trial

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