Broadside: Cross-posting app for Bluesky & Mastodon

A vintage sailing ship firing cannons that shoot cannonballs bearing the logos of Bluesky and Mastodon social media platforms, with the word "Broadside" written below in bold navy text.

I enjoy posting images to Bluesky and Mastodon, and I try to include alt text every time.

I got tired of writing a post, dragging the image into Bluesky, then into Mastodon, then into my other Mastodon account, and then having to go back to paste in the alt text for each account. Posts with multiple images were an even bigger headache.

To quote Heinlein, “Progress is made by lazy men looking for easier ways to do things.”

So I built a thing. It’s called Broadside.

A broadside is when a ship fires every cannon on one side at once. That’s the whole idea: I write a post once, attach my images, add alt text, and Broadside fires it at every Bluesky and Mastodon account I’ve got in a single click.

It’s probably overkill for a single account, but if you’re juggling multiple social accounts it’s a huge quality of life improvement.

Broadside is built with Flask, using the AT Protocol and Mastodon APIs, and runs in a Docker container.

It also supports threaded posts, with Broadside handling the whole chain across each account.


A few other niceties I added:

  • Stores app passwords and access tokens through a setup wizard.
  • Matches Bluesky’s character counting (emoji and all).
  • Resizes images in the browser before upload.
  • Generates proper Bluesky link preview cards.
  • Shows success/failure status for every account with direct links to each post.


It runs on my home NAS, keeping my credentials local, and never sending them to a third-party service.

Broadside is not a Twitter or Threads tool, just a Bluesky and Mastodon tool. IYKYK.

I built the thing with Claude Code over an afternoon, which still feels a little like cheating.

The code is on GitHub if you want to run or modify it: github.com/cruftbox/broadside.

Compose once. Fire a broadside. Never forget the alt text again.

Author