Leaving Medium — owning your URL without giving up git-push

Medium won a generation of developers with a promise: just write. No hosting, no theme surgery, distribution baked in. For a while, that was true enough that many of us parked essays next to posts on company blogs and forgot about the domain.

Then the feed changed, partner programs changed, and the quiet question returned: if this account vanished, where would my writing live?

Substack rhymes with Medium for this essay: excellent tools for reach and email, but your business is coupled to their product decisions.

Pressbin is the other end of the spectrum — not a platform, a place you operate.

Hosted platform vs self-hosted Pressbin

What platforms actually sell you

Medium and Substack bundle:

  • Editor UX tuned for drafting
  • Hosting and TLS
  • Discovery (algorithmic feed, recommendations, or inbox)
  • Sometimes payments

What they retain:

  • The canonical URL (unless you pay for custom domain features)
  • The relationship with readers (email lists on Substack are real assets, but export policies matter)
  • Operational control when policies change

That trade can be rational. A first-time writer optimizing for readers should not feel guilty about using a platform.

What self-hosting buys back

When you run Pressbin on a VPS you control:

  • Your own domain (e.g. blog.pressbin.dev) — not medium.com/@you
  • Markdown in your Git repo — clone it, fork it, move hosts
  • pressbin.db on disk — back it up with cp, snapshot the volume, ship it off-site
  • RSS at /feed.xml — readers subscribe to you, not a platform feed format you do not own

Pressbin does not include an algorithm. Discovery is search engines, Hacker News, newsletters that link to you, and the networks you already have. That is work platforms used to partially absorb.

The writing experience is different — on purpose

Medium’s editor is smooth. Pressbin has no editor in the product. You write in:

  • VS Code / Cursor
  • Obsidian with Git sync
  • GitHub’s web UI if you must

Publishing is:

git add posts/new-essay.md
git commit -m "publish: new essay"
git push

Fifteen seconds later the GitHub Action syncs the file. Tags in front matter become /tag/{name} pages. Drafts use status: draft until you are ready.

Git push as the publish button

If that workflow already describes how you ship documentation at work, a blog should not force a different religion.

Cost comparison (honest numbers)

Medium / Substack Pressbin
Hosting $0–$$ on platform tiers ~$4–6/mo VPS
Domain Often extra You buy the domain anyway
Newsletter Built-in (Substack) Buttondown, ConvertKit, etc.
Time to first post Minutes ~30 minutes first time

Pressbin’s pitch is not “cheaper.” It is predictable — you pay for a server, not a percentage of paid subscriptions.

Migrating without losing your mind

You do not need to move a decade of posts in one night.

  1. Export what Medium/Substack allows (HTML or Markdown ZIP)
  2. Convert to posts/{slug}.md with front matter — scripts exist; manual cleanup for five flagship posts is fine
  3. Publish new work only on your domain for three months
  4. Add canonical links on old posts pointing to the new URL when you care about SEO
  5. Leave platform posts up as archives if the audience still finds them there

The pressbin_blog_template repo gives you the sync workflow and secrets wiring.

What you should not expect

  • Viral distribution
  • A built-in paid list (unless you integrate one)
  • Non-technical co-authors typing in-browser without Git

Know the gaps before you migrate resentment into infrastructure.

A hybrid many writers use

Keep Medium for reach experiments. Publish canonical versions on your domain. Over time, search and backlinks accrue to property you own.

Platforms rent audience. A domain you operate is equity — slower to build, harder to take away.

Pressbin exists for developers who want that equity without running WordPress to get it. If you have been meaning to “move off Medium” for three years, the technical path is smaller than the emotional one: binary, config, content repo, push.

The rest is writing.