Cross-post Threads to Bluesky, automatically
Connect both accounts once. Every new Threads post you make is republished to Bluesky automatically — we watch Threads on a tightening interval, because Threads offers nobody a push to subscribe to.
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 Threads to Bluesky
You already post on Threads. The audience on Bluesky 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 Bluesky account goes quiet for reasons that have nothing to do with what you are making.
Threads gives you 500 characters and Bluesky gives you 300 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 Threads, decides whether each post should travel, fits it to Bluesky, 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 Bluesky does differently
Bluesky is the tighter of the two: 300 characters against Threads's 500. That is the number that decides what happens to your longer posts, and it is the reason threading is on by default on this pair.
| Limit | Threads (origin) | Bluesky (destination) |
|---|---|---|
| Characters per post | 500 | 300 |
| Long posts | native thread | native thread |
| Video cap | 5 minutes | 3 minutes |
| Images per post | up to 20 images | up to 4 images |
| How Echowide sees a new post | polled on an adaptive interval | pushed to us on a socket we hold open, when it is the origin |
Threads character limit in fullBluesky character limit in fullThreads on the full platform tableBluesky on the full platform table
The carry list
What gets carried across, and what stops
- Textcarried
- Up to 300 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 Bluesky thread.
- Images and alt textcarried
- Bluesky takes up to 4 images, and alt text travels with each one. We do not invent a description for a photograph you did not describe.
- Videocarried
- Bluesky caps video at 3 minutes, and Threads allows up to 5 minutes — so a long Threads video is stopped here with that reason rather than uploaded and rejected out there without one. We do not re-cut your video to fit; that is an edit, and edits are yours to make.
- Threads and self-repliescarried
- A thread you wrote yourself on Threads is rebuilt as a real Bluesky chain, in order, each part replying to the last.
- Replies to other peoplestops
- Stopped by default: a reply carries half a conversation your Bluesky 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
Threads to us
seconds to minutes
Threads has no push, so we ask — often, and adaptively
Threads has no push for anyone, so we poll — and we tighten the interval after a burst rather than selling you a shorter one. When you have just posted, we expect more and we look more often. When the account has been quiet for a day, we back off, because asking a sleeping account every few seconds is how a tool gets rate-limited into being slower for everybody.
Nobody in this category has push on Threads, so a tool quoting you a fixed figure in fractions of a second is quoting the length of its cron job. Once we do have the post, the rest is the same as for a platform that streams: the rules engine decides, the splitter fits the text to Bluesky, and the delivery goes out. The waiting happens before we know about your post, never after.
Setup
Set it up in three steps
- Step 1
Connect Threads as the origin
Threads signs in with OAuth in a browser window; we never see a password. 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.
- Step 2
Connect Bluesky as the destination
Bluesky needs a revocable app password, not your account password, and you can revoke it from Bluesky without touching us. 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.
- Step 3
Dry run, then switch it on
A dry run replays your recent Threads posts through the rules engine and shows what would have reached Bluesky 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 Bluesky, 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 Threads stays on Threads: your Bluesky 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 Threads but not on Bluesky is worse than not cross-posting at all. Switchable per flow.
- Over-limit posts, when you have turned threading off
- Bluesky allows 300 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 Threads to Bluesky automatically?
- Yes. Connect Threads as an origin and Bluesky as a destination, and every new Threads post is republished to Bluesky without you doing anything else. Nothing is queued or scheduled here.
- How long does a Threads post take to appear on Bluesky?
- Threads offers no push to any tool, so we poll it on an interval that tightens after you have been active and relaxes while you are quiet — seconds when you are posting, minutes when you are not. Nobody can do better than polling on Threads, and we will not sell you a shorter interval as a feature.
- What happens to a post that is too long for Bluesky?
- Bluesky allows 300 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 Bluesky 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 Threads to Bluesky?
- Up to 3 minutes, which is Bluesky's own cap. Threads allows up to 5 minutes, so a longer video is stopped before the upload with that reason recorded, rather than failing silently at Bluesky's end. We do not trim or re-cut it — that is an edit, and edits are yours.
- What does cross-posting Threads to Bluesky 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 Threads pushes to us, not on what you pay. No card to start.
Post on Threads. We will handle Bluesky.
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.