Blog

Notes on Getting 13 Years Out of WordPress

What a clean WordPress-to-Markdown migration looks like, and where the bodies are buried (shortcodes).

The scary part of leaving WordPress isn’t the new site. It’s the old content — a decade-plus of posts, images, tags, and permalinks that all have to survive the move.

The plan

  1. Export everything as WXR (WordPress’s XML format).
  2. Convert to Markdown + downloaded images.
  3. Normalize the frontmatter into a strict schema.
  4. Emit redirects so every old URL still lands.

Where it gets messy

Old posts are full of shortcode residue[caption], gallery tags, embeds — that converts to garbage if you’re not watching. The rule I’m following:

  • Sample 10–15 posts first.
  • Measure how many convert badly.
  • If it’s more than ~5–10%, stop and script targeted fixes before importing everything.

Migrations fail quietly. A broken image or a dropped redirect doesn’t throw an error; it just disappears from the internet.

The redirect map is the non-negotiable deliverable. Thirteen years of links pointing at this domain, and not one of them is allowed to 404.