Open source · Go · MIT / BSD-3-Clause
Export a WordPress site without touching it
Posts, pages, WooCommerce products, custom post types, navigation menus, approved comments and the whole media library — read over the site's own REST API or XML-RPC, with no plugin to install on the source. One command writes JSON, Markdown, a static-site content source, or a file the importer of twelve other platforms already understands.
Why wpexporter
Everything the site holds, not just what it lists
-
Finds content the index hides
--brute-forcewalks IDs past the API listing, custom post types a theme or plugin registered are discovered without a flag, and WooCommerce products are detected on their own. Menus and comments come too — menu structure is the one thing no amount of content can reconstruct afterwards. -
Output you import, not output you fix
Media is downloaded and every
src,hrefandsrcsetrewritten — scheme- and host-insensitively, so a post written in 2010 resolves like one written yesterday. Stale size variants are remapped to the closest surviving width instead of being left as dead paths. -
Built for long jobs and for agents
--resumepicks an interrupted export back up from its checkpoint,--rate-limitkeeps a fragile host standing, and--report-a11ytells you what fails WCAG 2.2 before you publish it. An MCP server puts all of it in reach of Claude and other assistants.
Exports natively to
Install
One binary, four commands
wpexporter is the umbrella command; wpexportjson,
wpxmlrpc and wpmcp install alongside it and
behave identically.
# macOS / Linux
brew install tradik/tap/wpexporter
# Linux
sudo snap install wpexporter
# Docker
docker pull ghcr.io/tradik/wpexporter:latest
Then point it at a site:
wpexporter export --url https://example.com -f ssg
Formats
Fifteen ways out
The same crawl feeds every format, so choosing a target is one flag — not a second export.
| Flag | What it writes |
|---|---|
-f json |
The full export as JSON, media localised to /media/… (default) |
-f markdown |
One Markdown file per post and page, YAML front matter, media localised |
-f ssg |
A drop-in content source: paths that mirror the site's URLs, one name per concept in the front matter, body HTML cleaned of the old theme |
-f shopify, -f magento, -f prestashop |
Product CSVs in each store's own import shape |
-f wordpress, -f squarespace, -f weebly |
WXR XML for WordPress and the importers that read it |
-f drupal, -f ghost, -f strapi,
-f contentful, -f wix |
JSON shaped for each platform's own migration tool |
-f webflow |
CSVs for Webflow CMS collections, plus a JSON backup |
Guides
Documentation
Every guide below is built from this repository's own docs/
folder through content_sources — editing a guide and
pushing it is the whole publishing workflow.
-
Installation
wpexporter ships as a single static binary for Linux, macOS, Windows and FreeBSD, plus a Docker image. Every package installs the umbrella wpexporter command alongside the three standalone tools —…
-
Quick start
One command per job: point the exporter at a WordPress site, choose a format, and read the files it writes. These are the invocations worth knowing before anything else — every flag they use is…
-
Command line reference
Every flag wpexportjson export accepts, what it defaults to, and the configuration-file form of the same settings — plus the checkpoint that makes an interrupted export resumable instead of a restart.
-
Export formats
Fifteen formats, one crawl. The exporter reads the site once and writes whichever shape the target needs, so choosing a destination is a flag rather than a second export — and switching destinations…
-
E-commerce export formats
Posts and pages become products: Shopify and Magento take comma-delimited CSV, PrestaShop takes semicolon-delimited CSV, and each importer wants its own column names. Media URLs stay absolute in all…
-
CMS and headless export formats
WXR for WordPress itself, and JSON shaped for the migration tool of Drupal, Ghost, Strapi and Contentful. These formats keep the content model — posts, pages, taxonomies, authors and media as…
-
Website builder export formats
Wix, Squarespace, Webflow and Weebly each read a different shape: JSON, WXR-compatible XML, CMS collection CSVs, or both XML and JSON. What every one of them shares is that the importer pulls media…
-
Static site generator format
-f ssg writes a drop-in content source for SSG and other static site generators. Where markdown is a faithful dump of what WordPress returned, ssg is a content source: one name per concept, paths…
-
Media and URL rewriting
What happens to images, documents and videos when an export downloads them: where the files land, which URL forms are recognised as the same asset, which fields get rewritten in each format, and how…
20 guides in total — the full directory is in the footer below.