
You export your posts in whatever format your current platform produces (an XML file, a JSON file, or a CSV), then run that file through your new platform's importer. The format is different everywhere: WordPress and Squarespace both use a WordPress-flavored XML file (WXR), Ghost uses its own JSON, and Wix doesn't let you export your blog at all. This is the procedure for each source, what actually survives the trip, and what to do about the two things every export format handles badly: your image files and your URLs. For a full builder-by-builder breakdown of what else you can export beyond blog content, see our export capability matrix.
| Platform | Export format | What it carries |
|---|---|---|
| Squarespace | XML (WordPress-style) | One blog page only, including all its posts and up to 1,000 comments per post; layout pages, text and image blocks. Custom CSS, store pages, and multiple blog pages are excluded, and images aren't bundled in the file (Squarespace) |
| Wix | None for the Wix Blog app | Wix's own help center says plainly: "Currently, it is not possible to export blog posts to other platforms" (Wix). If your blog runs as a custom Wix CMS collection instead of the Wix Blog app, that collection can export to CSV (Wix) |
| Webflow | CSV, per Collection | Blog posts built as a CMS Collection export to CSV one Collection at a time; image and file fields export as links back to the old project, not as files (Webflow). See our Webflow code export guide for what else does and doesn't come with a code export |
| Ghost | JSON (optionally zipped with images) | Posts, pages, tags, settings and staff users in a single JSON file; zip the JSON together with a /content/images/ folder to bring images along in the same file (Ghost) |
| WordPress.com / self-hosted WordPress | XML (WXR) | Posts, pages, comments, categories and tags; media is linked, not included as files, and theme, customizations and plugins are excluded (WordPress.com) |
WordPress on either side uses the same file format, so this is the most direct move. Get the export file from your current platform (Squarespace's export is already WordPress-shaped; other platforms may need a converter). Then, on the destination WordPress site, go to Tools → Import and choose WordPress, which the software describes as importing "posts, comments and categories contained in the uploaded file into your blog" (WordPress.org). During the import you can either "map to an existing user on the blog or... create a new user" for each author in the file, and you can check Download and import file attachments so the importer fetches linked images instead of leaving them as remote links (same source). If the file is large, the same page warns your "server may run out of memory when you import it" — split a big export into smaller files and import them in sequence rather than fighting a single failed import.
Open Settings → Advanced → Import/Export in Ghost Admin. Ghost accepts "both JSON and zip files," and importing content and images together only works if they're in the same zip archive (Ghost). If you're bringing images along, the zip has to keep "the same file path structure found in the export generated by the platform (e.g. include the /content/images/ path)" (same source) — don't flatten the folder structure before zipping. Because images make imports large, Ghost recommends breaking an image import into "multiple, smaller zip files" (same source). If your posts are coming from WordPress specifically, Ghost's own WordPress migrator walks the export and import together: enter your WordPress site's URL, download the XML export from inside that flow, then upload it to Ghost's migrator, which reports how many posts and pages it found before you confirm the import (Ghost). That tool handles files "up to 100mb" and "Up to 2,500 posts," converts WordPress categories to tags, and does not carry over custom post types or most uncommon shortcodes (same source).
There's no single official import path here, because static site generators don't have one shared import format the way WordPress and Ghost do. What you're actually doing is converting your export file (WXR, Ghost JSON, or CSV) into the Markdown-plus-frontmatter files most generators expect, then committing those files to the generator's content folder. Hugo maintains a list of migration tools for exactly this; one of them, wp2hugo, "preserves original URLs, GUIDs, image URLs" among other things (Hugo). Whichever generator you use, check its own documentation for a WordPress or Ghost import path before reaching for a generic converter, and always diff a handful of converted posts against the original before converting the whole archive.
Only if you make them. An export file doesn't carry a promise that your new platform will reuse the same URL for each post — it carries the post's content and, usually, its original slug as a field in the file. Whether that slug becomes the live URL again depends on how your new platform builds post URLs (WordPress's default /%postname%/ permalink structure will often reuse it; a generator with a different URL pattern won't). Check every imported post's URL against its old address before you announce the move, and set up a real redirect for every one that changed. Our redirects guide covers building that URL-by-URL map and setting 301s on the new platform — treat it as the next step after any import, not an optional cleanup.
Badly, unless you plan for it. Squarespace's export documentation recommends downloading your site's images manually rather than relying on the export file to carry them (Squarespace). Webflow's CSV export for CMS Collections includes image fields only "as links to the old project" — the files themselves stay on Webflow's servers. WordPress's WXR format has the same limitation: media is "links to your media files (not the actual files)" (WordPress.com). Ghost is the exception, because its importer accepts the images bundled directly into the same zip as the JSON.
That means for every platform except Ghost, you need to re-download every image before your old site closes and its media library goes with it. Do this before you cancel hosting, not after: once the old account is closed, those linked image URLs return nothing, and every post that references them breaks silently.
Example (hypothetical): A small business has 40 posts on Squarespace and wants them on a self-hosted WordPress blog. The steps: download copies of the post images first as a backup, export the WordPress-style XML file from Squarespace's Import & export content panel, then run Tools → Import → WordPress on the new site with Download and import file attachments checked while the Squarespace site is still public, re-uploading by hand any image the importer couldn't fetch, map the single Squarespace author to the right WordPress user, then check each imported post's slug against its old Squarespace URL and set a 301 redirect for any that changed. This is illustrative, not a test we ran — your own export will differ by plan and content.
Nothing here is destructive to the source. An import failure, a missing image, or a wrong author mapping doesn't touch your old platform — the posts stay exactly where they were until you cancel that account. If an import partially completes, most importers (WordPress's included) let you re-run the same file; duplicate posts are the usual side effect, and you'll need to delete the partial batch on the destination before retrying. Keep your original export file after a successful import — if you find a formatting problem months later, you can re-import a single corrected post without redoing the whole migration, as long as the old platform's account (and its images) hasn't closed yet.
If you're leaving one of these platforms for a Figma-based rebuild rather than another blog-first platform, our migration guide for Squarespace and export matrix cover the rest of the site, not just the blog.
Bottom line: Export in your current platform's format, import through your new platform's own importer, and treat images and URLs as separate jobs the export file doesn't solve for you. Wix is the one platform on this list where "export" isn't an option at all — plan around that before you build anything expecting otherwise.