Multi-platform publishing
One composer, sixteen destinations. With the per-platform edits the platforms actually require.
Cross-posting identical text everywhere is easy and reads badly. Rewriting by hand for every channel is correct and takes an hour. The composer sits between the two: shared content, per-channel overrides where they matter, and every platform’s real limit checked while you type.
Up to 3 free, no card needed.
How it works
Multi-platform publishing, step by step.
- 1
Connect accounts
Official OAuth for most platforms; an app password or bot token for a few.
- 2
Write once
Shared content in one editor, with a live count against each target’s limit.
- 3
Override where it matters
Adjust a channel’s copy, media, or title without touching the rest.
- 4
Schedule the set
One action creates one scheduled post per channel, tracked separately.
Capabilities
What you get with Multi-platform publishing.
- Sixteen platforms in one calendar
- Including the ones most tools still skip — Bluesky, Reddit, Discord, Telegram, Tumblr, Snapchat, WhatsApp, and Google Business Profile alongside the obvious ones.
- Limits enforced while you type
- Character budgets, media counts, and accepted media types come from one registry shared with the publish workers. You find out a post is too long before you schedule it, not when it fails.
- Counted the way each platform counts
- Bluesky counts graphemes, so a family emoji costs 1 there rather than 11. X charges a flat 23 characters per URL. The counter matches the platform’s own arithmetic.
- Per-channel schedules, tracked separately
- One multi-platform post becomes one scheduled row per channel. If LinkedIn publishes and X fails, you retry X alone instead of the whole thing.
Shared content, then the exceptions
The composer starts from one body of content, because that is how you think about a post. Then it lets you diverge where the platforms genuinely differ.
The divergences that come up most:
- Length. A LinkedIn post has thousands of characters to work with. Bluesky has 300, counted in graphemes.
- Media. How many images a post takes, and which types, is per-platform. A carousel is not universally valid.
- Platform fields. A YouTube title is a separate 100-character field, not the first line of your description.
Overriding one channel does not fork the whole post. The shared body stays the source for everything you did not touch.
One registry, three consumers
The character budget the composer shows you, the validation that runs when you schedule, and the rules the publish worker checks are all the same data. There is no second table of limits maintained by hand somewhere.
That sounds like an internal detail and it is the reason a specific annoyance does not happen: a post that the composer accepted failing at publish time on a length rule the composer did not know about.
It is also why we do not print a limits table into this page by hand. Each platform page renders its real numbers directly from that registry, so those tables cannot go stale.
Counting the way platforms count
Naive character counting is wrong in ways that matter at the margin:
- Bluesky counts graphemes against 300. A flag emoji is one grapheme and up to 11 UTF-16 code units. Counting by string length tells a user they have blown a budget they have not.
- X charges a flat 23 characters for any URL regardless of its actual length, so a long link costs less than it looks.
- Telegram allows 4,096 characters for a message but only 1,024 for a media caption — attaching an image changes your budget.
The counter implements each of those. You can check any of it against the free character counter without signing in.
Per-channel schedules
A multi-platform post creates one scheduled row per channel. This is what makes partial failure survivable: if Instagram rejects a video and everything else publishes, you have one failed row to retry, with the platform's own error attached, rather than an all-or-nothing outcome.
It is also why the monthly cap counts per account rather than per post — three channels is three publishes, three API calls, and three things that can independently go wrong.
Found this useful? Pass it on.
Questions
Frequently asked questions Everything the first evaluation usually needs.
- Which platforms can I publish to?
Sixteen: Instagram, TikTok, YouTube, LinkedIn (profile and page), Facebook, X, Threads, Pinterest, Bluesky, Reddit, Google Business Profile, Discord, Telegram, WhatsApp, Snapchat, and Tumblr.
- Can I change the text for one platform only?
Yes. Shared content is the default and any channel can override it, along with media and platform-specific fields such as a YouTube title. Overriding one channel leaves the others alone.
- How are my accounts connected and secured?
Through each platform’s official OAuth, except for a few that issue their own credentials, such as Bluesky app passwords and Telegram bot tokens. Postonus never sees a social password, and tokens are encrypted at rest.
- What counts as a post against my monthly cap?
Each scheduled publish to one connected account. A post going to LinkedIn, X, and Threads counts as three. Drafts do not count.
- Why is X metered separately?
X charges roughly a dollar per hundred posts through their API, so X has its own tighter cap on every plan. Other platforms are free or near-free to publish to, so their caps are generous.
- What happens if one channel fails and the others succeed?
Only the failed one fails. Each channel has its own scheduled row and its own status, so you retry the one that failed rather than republishing everywhere.
Keep reading
- First commentQueue the first comment with the post itself, so links and hashtags land in the comments instead of the caption — on the platforms that support it.Read
- Channel groupsSave the sets of channels you always publish to together and select them in one click, instead of re-picking eleven accounts every time you compose.Read
- Queue & reliabilityA queue that flags a post at risk before its publish time, refuses to send something an hour late, and turns a crashed worker into a retryable failure.Read