Echowide

Cross-posting for creators

Post once. We cross-post it.

Keep posting where you already post — each new post lands on up to twelve other places, fastest on Bluesky and Mastodon.

X, Bluesky, Threads, Mastodon, LinkedIn, Facebook, Instagram, YouTube Shorts, TikTok, Discord, Telegram and Nostr.

Connect an accountFree for fifty cross-posts a month. No card.

Nothing publishes until you switch a flow on.

One post, three of 12 destinationswhere you actwhat we do
Origin · Bluesky@mara.dev

Spent the morning reading the firehose. Every post on the network, as it happens.

14:02:11 · you posted this

Mastodonpublisheddelivered
Xpublisheddelivered
Threadspublisheddelivered

An illustration. The handle is invented and no real post has travelled this route.

destinations, one post
12destinations, one post
places you can post from
5places you can post from
that push straight to us*
2that push straight to us*

* Bluesky and Mastodon push to us. Everywhere else we poll, which is fast, not instant.

The problem

Five tabs, one video.

Posting one clip everywhere means five uploads and five captions rewritten by hand.

An open laptop on a wooden desk showing a grid of images, beside a copper mug.

Illustration. The captions below are sample text.

  • Bluesky

    Three months of cutting this down to ninety seconds.

    rewrite to 300 chars

  • Mastodon

    Three months of cutting this down to ninety seconds. Full notes in the thread.

    rewrite to 500 chars

  • Threads

    Three months of cutting this down to ninety seconds — here it is.

    rewrite to 500 chars

  • Instagram

    Three months of cutting this down to ninety seconds.

    rewrite to 2,200 chars

  • LinkedIn

    Three months of cutting this down to ninety seconds. What I learned, in order.

    rewrite to 3,000 chars

Five tabs · five uploads of the same file · five captions cut to five limits.

TikTokyou posted

once, as normal

  • Every destination you switched on

How it works

Three steps, one is yours.

  1. 01

    Connect the accounts you keep

    One origin, as many destinations as you like.

  2. 02

    Post exactly as you do now

    Keep posting where you like. This step is yours.

  3. 03

    Watch it land everywhere

    When it arrived, or which rule stopped it.

OriginX, and 7 others.Destinations X, Bluesky, Threads, Mastodon, LinkedIn, Facebook, Instagram, YouTube Shorts, TikTok, Discord, Telegram and Nostr.

One post, every platform

The same post, six ways.

Below is a 611-character message and exactly what our splitter does with it at each destination’s own limit.

What you posted611 characters

After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo. If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

  • X
    280 max

    3 posts

    1. 1/3222/280

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed.

    2. 2/3266/280

      First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo.

    3. 3/3119/280

      If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Split into 3 parts, posted as one native thread.

  • Bluesky
    300 max

    3 posts

    1. 1/3293/300

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent.

    2. 2/3196/300

      Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo.

    3. 3/3119/300

      If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Split into 3 parts, posted as one native thread.

  • Mastodon
    500 max

    2 posts

    1. 1/2490/500

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo.

    2. 2/2119/500

      If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Split into 2 parts, posted as one native thread.

  • Discord
    2000 max

    1 post

    1. 1/1611/2000

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo. If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Fits whole, exactly as written.

  • LinkedIn
    3000 max

    1 post

    1. 1/1611/3000

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo. If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Fits whole — and LinkedIn has no thread, so anything longer is held back.

  • Telegram
    4096 max

    1 post

    1. 1/1611/4096

      After three months of rebuilding the workshop, the frame jig is finally square. I measured it four ways and it holds to a tenth of a millimetre over the full length, which is better than the shop I trained in ever managed. First frame off it is a fillet-brazed road bike for a rider in Ghent. Slack head angle, long chainstays, clearance for 32mm tyres. I am writing the whole build up as I go: the mitres, the fixtures I had to make first, and the two things I got wrong and had to redo. If you want the long version, with the drawings and every measurement, it goes out on the newsletter on Friday morning.

    Fits whole, exactly as written.

Sample content — the workshop and the rider are invented, the split is not.

Every part above was produced by the same splitter the publish pipeline calls, at the limits in the file the rules engine reads.

Short-form video

One clip, three vertical feeds.

The same video reaches TikTok, Instagram Reels and YouTube Shorts, cut to each one’s documented cap.

TikTok
Instagram
YouTube Shorts

An illustration — one stock still standing in for the clip, in all three frames.

The caps are read from the same file the transcoder targets; no counts are shown, because we have none.

Why it is faster

Under a second on two platforms.

We hold the socket open, so there is no timer to wake and nothing to ask.

A hand holding a film clapperboard against an open sky.
the clock starts here
Your post to the first echoboth bars, one scale
Polling, whoever is doing itup to 5 min

The wait is the poll interval, and a shorter one is a paid tier.

Echowide on Bluesky and Mastodonunder 1 sec

A socket we already have open, not an alarm clock we set.

01m2m3m4m5m

* Sub-second on Bluesky and Mastodon — the 2 platforms that push to us.

Everywhere else we poll. That is fast, and it is never called instant.

What’s supported

Every platform, every limit.

Filter it, sort it, open a row — these are the numbers the rules engine works from.

Platform capabilities: character limit, native threading, video cap, sync method, and whether each can be an origin or a destination.
300native threading3 minreal-timean origina destination
2,000not native threadingnot readnot an origina destination
63,206not native threadingnot readnot an origina destination
2,200not native threading15 minheldnot an origina destination
3,000not native threadingnot readnot an origina destination
500native threadingreal-timean origina destination
no limitnative threadingnot readnot an origina destination
4,096not native threadingnot readnot an origina destination
500native threading5 minheldnot an origina destination
2,200not native threading10 minheldnot an origina destination
no limitnot native threading1 minpolledan originnot a destination
280native threadingpolledan origina destination
no limitnot native threading3 minpolledan origina destination

Sorted by platform, ascending. 13 of 13 platforms shown.

Unverified image caps stay blank on purpose — a guessed limit silently drops pictures.

Read from the same file the rules engine reads.

Fail closed

We would rather miss it.

A missed post is one click to fix. An unwanted one is public and permanent.

  • bluesky09:14

    Rough cut of the cover, still deciding on the type #noferry

    Skipped#noferry — skipped, as you asked

    Anywhere in the post, in any case. Or set a phrase of your own.

  • bluesky11:02

    Completely agree with this — @someone else said it better than I could

    SkippedReply to @someone else — not carried

    Replies inside your own thread are carried. Other people's are not.

  • instagram16:47

    Two weeks with the new pack and it has not let me down #ad

    SkippedContains #ad — skipped by default

    A disclosure that fails to travel is a regulatory problem. Off per flow.

Everything that stops a post

  • #noferry, or your own phrase
  • Replies to other people
  • Quotes of other people
  • #ad or #BrandPartner
  • Over the character limit
  • Edits of something already sent
  • Instagram trial reels
  • Anything composed in Echowide

Flows start switched off. A dry run shows what would publish, before it does.

The product

See it working

Sync flowFlow 1 of 2
You post onBluesky · @mara.dev
  • Mastodon@mara@hachyderm.ioOn
  • X@maraOn
  • Threads@mara.devOn
  • LinkedIn@mara-devlinOff
  • Thread posts that do not fit
  • Skip anything tagged #ad
  • Also skip #pressonly

Pick where you post, then pick where it lands. Toggle any destination off.

Sample content — these creators are fictional.

The whole list

Everything, and where it stands.

Nothing hidden, including the parts we are still building and the ones waiting on a platform.

  • Live
  • Built, needs your credentials
  • In progress
  • Planned
  • Not supported, on purpose

Platforms

  • Cross-post from Bluesky and Mastodon, as you publish

    Live
  • Publish to Bluesky, Mastodon, Discord, Telegram and Nostr

    Live
  • Publish to X, Threads, LinkedIn, Facebook, Instagram, YouTube Shorts and TikTok

    Built, needs your credentials
  • Cross-post from X, YouTube Shorts and Twitch, polled

    Adaptive interval, cursor kept per account, first pass never back-fills.

    Built, needs your credentials
  • Cross-post from Threads, Instagram and TikTok

    Their read API will not say whether a post was public, and the engine will not guess. They stay destinations.

    Not supported, on purpose
  • Substack

    Its only write path is a session cookie granting full account access.

    Not supported, on purpose

What happens to a post

  • Sync flows — one origin, any destinations, switched per platform

    Live
  • Fail-closed rules engine — twenty reasons a post is held back

    Live
  • Custom skip phrase, per flow

    Live
  • Sponsored and #ad posts skipped by default

    Live
  • Thread splitting on X, Bluesky, Threads, Mastodon and Nostr

    Grapheme-accurate, never breaks a word or a URL.

    Live
  • Dry run — what would publish, before anything does

    On the compose screen, running the real rules engine and never a write endpoint.

    Live
  • Video transcoding to each destination's own cap

    Probe, remux and re-encode, one at a time. A video we cannot carry leaves the text intact.

    Live
  • Compose inside Echowide, every limit counted at once

    Every destination previewed as you type, with the real split, not a warning.

    Live
  • Scheduling and a planner calendar

    Your own time zone, with both daylight-saving boundaries decided rather than guessed.

    Live

What you can see

  • Delivery ledger — every destination, and the reason for every skip

    Live
  • Retries that cannot double-post

    Live
  • Resume a part-sent thread where it stopped

    Live
  • Creator analytics — reach and delivery outcomes per flow

    Live
  • Accounts, flows, dashboard and ledger screens

    Live
  • A live ledger that updates without a refresh

    Planned
  • A public status page

    Planned

Trust and operations

  • Encrypted credential vault, keys you can revoke yourself

    AES-256-GCM, fresh IV per write, nothing readable in a stolen database dump.

    Live
  • Admin panel — users, queue, content, audit log and site settings

    Operator surface, not a creator one.

    Live
  • Visitor analytics, heatmaps, error and log capture

    Nothing a person typed is stored, and Do Not Track ends the request.

    Live
  • An MCP endpoint for Claude, Codex and Cursor

    Every write tool is a dry run unless the caller passes `confirm: true`.

    Live
  • Team workspaces

    Planned
  • Paid plans and billing

    Planned

Needing your credentials means the code is written and tested, and the platform has not yet approved a developer application.

All thirteen platforms are read from one file, which is the same file the rules engine reads.

Pricing

Priced per person.

Start free with no card, no trial clock and no expiry date on the free plan.

  • Free

    forever$0 — free for as long as you use it

    One origin, two destinations, fifty cross-posts a month. No card, no trial clock, no expiry.

  • Solo

    Most picked

    / month$9 / month

    One person posting everywhere they keep an audience, video included.

  • Studio

    / month$19 / month

    A few brands or side projects run from one account, with an API behind them.

Compare every plan

Agency is $39 a month. Instant sync and the fail-closed rules engine are on every plan, including free.

Questions

The awkward ones first.

What we refuse to do is as much a feature as what we send.

  • Its only write path is a raw session cookie granting full account access, outside Substack's own terms.

    We will not ask you for one.

  • We retry, and every delivery is keyed to one post and one account, so a retry cannot double-post.

    The ledger shows the attempt and the platform's own reason.

  • OAuth tokens, and for Bluesky an app password you can revoke without touching your real one.

    Encrypted at rest, never written to a log, never passed on an argument.

  • No — Twitch is a source only, and we read Featured clips from it.

    We never publish to it, because nothing we send would belong in a channel feed.

  • Only when it has to be, and then to each destination's own documented cap.

    One transcode runs at a time, so a long upload cannot hold up everyone else's.

Start with one account.

Fifty cross-posts a month on the free plan, with no card and no expiry date.

Nothing publishes until you switch a flow on.