Platforms
Cross-post to 12 platforms. Two origins tell us instantly; three more get asked.
Bluesky and Mastodon push new posts down a connection we keep open, so an echo starts before you have closed the app. Everywhere else there is no free push to subscribe to, so we ask — often after you have been active, rarely while you are quiet.
Real time · socket held open
< 1 sec
We subscribe once and the platform sends us your post as it happens. There is no interval, so there is nothing to shorten and nothing to sell you. This is on every plan, including the free one.
- Bluesky300 chars · threads · video 3 min · instantlive
- Mastodon500 chars · threads · instantlive
Polled · adaptive interval
seconds to minutes
No free push exists on these platforms, for anyone. We tighten the interval after a burst of activity and back off while an account is quiet, which is the honest best available. The interval is not a plan feature here either.
- X280 chars · threads · polled
- YouTube Shortsno text limit · video 3 min · polled
- Twitchno text limit · video 1 min · polled
- Platforms supported
- 13
- Can be an origin
- 5
- Held back as an origin
- 3
- Can be a destination
- 12
- Native threading
- 5
The whole table
The exact limits the rules engine works from.
These values live in one file, which the splitter, the rules engine and this page all read. When a platform moves a limit, one line changes and every part of the product moves together. A post that will not fit is stopped here, with a reason, rather than rejected out there without one.
| Platform | Characters | Threading | Video cap | How we see posts | Role | Sign-in |
|---|---|---|---|---|---|---|
| X | 280 | native chain | — | polled | Origin or destination | OAuth 2.0 |
| Bluesky | 300 | native chain | 3 min | real time | Origin or destination | App password |
| Threads | 500 | native chain | 5 min | held | Destination only | OAuth 2.0 |
| Mastodon | 500 | native chain | — | real time | Origin or destination | OAuth, per instance |
| 3,000 | single post | — | not read | Destination only | OAuth 2.0 | |
| 63,206 | single post | — | not read | Destination only | OAuth 2.0 | |
| 2,200 | single post | 15 min | held | Destination only | OAuth 2.0 | |
| YouTube Shorts | no text limit | single post | 3 min | polled | Origin or destination | OAuth 2.0 |
| TikTok | 2,200 | single post | 10 min | held | Destination only | OAuth 2.0 |
| Twitch | no text limit | single post | 1 min | polled | Origin only | OAuth 2.0 |
| Discord | 2,000 | single post | — | not read | Destination only | Channel webhook |
| Telegram | 4,096 | single post | — | not read | Destination only | Bot token |
| Nostr | no text limit | native chain | — | not read | Destination only | Private key |
“Held” in the ingestion column means the adapter can read the platform and we do not use it: that API will not say whether a post was public, and the rules engine refuses to guess. “Not read” means the platform is a destination only. A dash in the video column means the platform publishes no duration cap we can enforce, so we do not invent one: the upload either succeeds or comes back with their own reason, which the ledger prints in words. Limits verified 27 August 2026 and re-checked against each platform’s own documentation before release.
Platform by platform
What each connection actually does.
- X280 chars · polled
- No affordable push exists since the API repricing, so X is polled. Threads are assembled as a real chain rather than truncated.
- Bluesky300 chars · real time
- The Jetstream firehose is a public websocket. We subscribe once and filter it, so a post reaches us in well under a second and costs nothing per account.
- Threads500 chars · held
- A destination, not an origin. Posting supports images and video, and long text is split into a native chain. We do not carry posts out of Threads: their read API will not tell us whether a post was public, and the rules engine refuses to guess.
- Mastodon500 chars · real time
- Every instance offers a streaming API. We hold one connection per instance your flows touch, not one per account, so a busy instance is cheaper for us, not dearer.
- LinkedIn3,000 chars · not read
- Publishing only. LinkedIn's read scopes for personal feeds are not generally available, so we do not claim to watch it.
- Facebook63,206 chars · not read
- Publishing to Pages. The character ceiling is enormous, which means the splitter is never the thing that stops a post here.
- Instagram2,200 chars · held
- Publishing needs a Business or Creator account through the Graph API. Trial reels are skipped on purpose — they are hidden from your followers, and cross-posting one defeats the reason you made it. Held back as an origin: the read API does not report who a post was addressed to, so we would be guessing.
- YouTube Shortsno text limit · polled
- Shorts only. The three-minute cap is YouTube's own definition of a Short, so anything longer is stopped here rather than becoming a silent upload failure.
- TikTok2,200 chars · held
- Publishing goes through the Content Posting API, which requires an approved app. Held back as an origin: the read API does not report who a post was addressed to, and we will not publish something we cannot confirm was public.
- Twitchno text limit · polled
- A source, not a destination. We take featured clips created after you switch the flow on, so enabling Echowide never republishes your back catalogue.
- Nostrno text limit · not read
- No company, no API key and nobody to approve us. A note is signed with your key and sent to the relays you name, and it counts as published once one accepts it. The protocol sets no character limit, so a relay that refuses an oversized note tells us why and the ledger prints its reason.
One deliberate absence
Substack is not on the list, and it is not coming soon.
Substack publishes no write API. The only way to post on your behalf is to hold your substack.sid session cookie — a credential that grants full access to your account, including your mailing list, expires without warning, and sits outside the terms you agreed to.
Storing that for hundreds of writers is a breach waiting for a bad week. Tools that support Substack today are holding exactly that. We would rather be one platform short and tell you why. If Substack ships a real API we will be on it.
Start with the one that pushes.
Bluesky needs an app password and nothing else, so it is the fastest way to see the whole mechanism work end to end. Post there, and watch the ledger fill in before you have switched tabs.