markleanConvert an export

How to move from WordPress to Astro

What moves over, what stays behind, and how to keep your URLs and search rankings. About ten minutes for a typical blog.

Why Astro

Astro builds your site into plain HTML files. There is no database to update, no plugins to patch, and hosting is free on most static hosts. Your posts become Markdown files you can edit anywhere.

1. Export from WordPress

In the WordPress dashboard, open Tools → Export, chooseAll content, and download the file. It is an .xml file with your posts, pages, categories, tags and the list of your images.

An illustration of the export screen in WordPress.

2. Convert the export

Open marklean and choose the file. It is read in your browser and never uploaded. Pick your options: keep WordPress URLs or use clean ones, a folder per post or one file per post, and whether to add search.

3. Check the report

Before you download, the report lists anything that needs a look: shortcodes from plugins, forms, page builder layouts. Open any post to compare it with the original. The same list is in the project as TASKS.md.

$ unzip my-blog.zip && cd my-blog
$ npm install
$ npm run dev

4. Deploy and redirect

Push the project to GitHub and connect it to Netlify, Vercel or Cloudflare Pages. The build command is npm run build and the output is dist. Redirects for old links are already in the project, so point your domain at the new host and you are done.

What moves over

From WordPressIn Astro
Posts and pagesMarkdown in content collections
ImagesLocal files, optimized by Astro
Categories, tags, authorsArchive pages at the same URLs
Yoast, Rank Math, All in One SEOSEO titles and descriptions
MenusThe header menu, with submenus
CommentsShown on each post; Giscus for new ones
Products and custom post typesTheir own collections, with custom fields
Contact Form 7 and WPFormsHTML forms for Netlify or Formspree
Polylang and WPML languageshreflang links, a language switcher, a list and feed per language
Theme and pluginsStay behind; a clean theme replaces them