Echowide

Cross-post Bluesky to Mastodon, automatically

Connect both accounts once. Every new Bluesky post you make is republished to Mastodon in under a second, with replies, quotes and paid posts stopped by default.

Every figure on this page is read at build time from the same file the splitter and the rules engine read, so it cannot drift from what the product actually enforces. Limits last verified 27 August 2026.

The reason

Why cross-post from Bluesky to Mastodon

You already post on Bluesky. The audience on Mastodon is a different set of people, and they see none of it unless you do the work twice — export, re-upload, rewrite the caption to fit, remember the alt text. That second pass is what stops happening in a busy week, and the Mastodon account goes quiet for reasons that have nothing to do with what you are making.

Bluesky gives you 300 characters and Mastodon gives you 500 characters, which sounds like a detail until it is the reason half your posts arrive truncated or not at all. Echowide reads both numbers from the same file the splitter uses, so a post that fits is published whole and a post that does not is either threaded or stopped, with the count written down.

Echowide does the second pass. It watches Bluesky, decides whether each post should travel, fits it to Mastodon, publishes it, and records what happened — including the failures, in the platform's own words. It is not a scheduler: you post where you were already going to post.

Side by side

What Mastodon does differently

Mastodon is the roomier of the two: 500 characters against Bluesky's 300. Text is almost never the thing that stops a post on this pair, so the interesting limits here are the media ones.

Bluesky and Mastodon compared on the limits that decide what travels.
LimitBluesky (origin)Mastodon (destination)
Characters per post300500
Long postsnative threadnative thread
Video cap3 minutesno published cap
Images per postup to 4 imagesno verified image count
How Echowide sees a new postpushed to us on a socket we hold openpushed to us on a socket we hold open, when it is the origin

Bluesky character limit in fullMastodon character limit in fullBluesky on the full platform tableMastodon on the full platform table

The carry list

What gets carried across, and what stops

Textcarried
Up to 500 characters go across as written. Longer than that and the splitter breaks it at a paragraph, then a line, then a sentence — never mid-word, never mid-URL — and posts it as a native Mastodon thread.
Images and alt textit depends
We have not verified an image count for Mastodon, so we enforce none and the platform's own refusal is what the ledger prints. Alt text travels with every image that does go.
Videoit depends
Mastodon publishes no duration cap we can enforce, so we do not invent one. The upload either lands or comes back with their reason, in their words.
Threads and self-repliescarried
A thread you wrote yourself on Bluesky is rebuilt as a real Mastodon chain, in order, each part replying to the last.
Replies to other peoplestops
Stopped by default: a reply carries half a conversation your Mastodon audience cannot see. Replies to yourself do travel.
Quotes of other peoplestops
Stopped by default: quoting a stranger republishes them to an audience that never chose to hear from them. Quoting yourself travels.
Posts tagged #ad or #brandpartnerstops
Stopped by default and switchable per flow. A disclosure that fails to travel with the post is a regulatory problem, not a formatting one. Tags: #ad, #brandpartner, #sponsored, #paidpartnership.
Posts tagged #noferry or #noechostops
Your own switch. Either tag anywhere in the post means "not this one". One of the two is the convention creators already have from other tools, so we honour it as well as ours.

Measured, not promised

How fast it is

Bluesky to us

under a second

Bluesky pushes; we are already listening

Bluesky pushes to us on a socket we hold open, so the echo leaves in under a second. There is no interval here to shorten, because there is no interval: we are subscribed before you press post, and your post arrives as an event rather than as the answer to a question we asked.

What is left is Mastodon's own publish call, which usually takes longer than everything upstream of it. It is not a plan feature either: the socket costs us one connection for every Bluesky account in the world rather than one per customer, so the free plan gets the same second.

Setup

Set it up in three steps

  1. Step 1

    Connect Bluesky as the origin

    Bluesky needs a revocable app password, not your account password, and you can revoke it from Bluesky without touching us. We ask for the narrowest scope that lets us read your own posts, and the credential goes into an encrypted vault — never a log line.

  2. Step 2

    Connect Mastodon as the destination

    Mastodon signs in through your own instance, so your instance's admin sees the grant and you can withdraw it there. A destination can never also be the origin of the same flow, so there is no way to build a loop that echoes into itself.

  3. Step 3

    Dry run, then switch it on

    A dry run replays your recent Bluesky posts through the rules engine and shows what would have reached Mastodon and what would have stopped, with the reason for each. Nothing publishes. When the list looks right, switch it on.

Fail closed

What we refuse to do

The rules the engine applies before anything reaches Mastodon, in the order it applies them, read from the file the engine itself runs — so this list cannot describe a rule the product does not enforce.

Replies to other people
A reply to somebody on Bluesky stays on Bluesky: your Mastodon followers would see one half of an exchange with no way to read the other. A reply in your own thread does go.
Quotes of other people
A quote post republishes somebody else's words to an audience they did not choose. We carry quotes of your own posts and stop the rest. There is no setting that turns this into "quote everybody".
Anything tagged #ad or #brandpartner
Paid posts stop by default: #ad, #brandpartner, #sponsored, #paidpartnership. Disclosure rules differ by country and by platform, and a disclosure that arrives on Bluesky but not on Mastodon is worse than not cross-posting at all. Switchable per flow.
Over-limit posts, when you have turned threading off
Mastodon allows 500 characters and has real threads, so by default a longer post becomes a native chain. Turn threading off and a longer post stops instead — with the count and the limit in the ledger. We will not truncate your writing and publish the first half under your name.
Instagram Trial Reels
A Trial Reel is hidden from your own followers on purpose — that is the whole point of it. Cross-posting one defeats the reason you made it, so when Instagram is the origin, Trial Reels never leave.
Anything we are not sure about
The rules engine fails closed. If an adapter cannot tell us whether a post is a reply, or how long its video is, the answer is no and the ledger says which fact was missing. A missed cross-post is a click to fix; an unwanted one is public and permanent.
Anything you tagged #noferry or #noecho
Put either tag anywhere in a post and it stays where you wrote it. You can also set your own phrase per flow. This is checked before everything else, so it overrides every other rule on this page.

Questions

Frequently asked questions

Can Echowide post from Bluesky to Mastodon automatically?
Yes. Connect Bluesky as an origin and Mastodon as a destination, and every new Bluesky post is republished to Mastodon without you doing anything else. Nothing is queued or scheduled here.
How long does a Bluesky post take to appear on Mastodon?
Bluesky pushes new posts to us on a connection we hold open, so the echo leaves in under a second and the remaining time is Mastodon's own publish call. This is the same on the free plan.
What happens to a post that is too long for Mastodon?
Mastodon allows 500 characters and supports real threads, so a longer post is split at a paragraph, line or sentence boundary — never mid-word, never mid-URL — and published as a native chain. Turn threading off and it stops instead, with the count and the limit recorded.
Does it cross-post my replies and quote posts?
Not to other people. A reply to, or quote of, somebody else stops by default — your Mastodon audience would see one side of a conversation. Replies within your own thread and quotes of your own posts travel. Posts tagged #ad or #brandpartner stop as well.
Does video carry from Bluesky to Mastodon?
Mastodon publishes no duration cap we can enforce, so we enforce none — the upload either succeeds or comes back with Mastodon's own reason, which the ledger prints in plain language. We never re-cut your video to make it fit.
What does cross-posting Bluesky to Mastodon cost?
Nothing for the first fifty cross-posts a month, then $9. There is no per-channel pricing and no faster tier: the speed on this pair depends on whether Bluesky pushes to us, not on what you pay. No card to start.

Post on Bluesky. We will handle Mastodon.

Free for the first fifty cross-posts a month, then $9. Run a dry run before anything publishes, and read the ledger afterwards to see exactly what each platform did with your post, in its own words.