What each export brings across
Updated
The importer reads a file and works out what it is. This page is the detail behind that: what each platform gives you, and where each one is lossy.
The rule that applies to every row: your addresses are kept. Where a platform's own URL shape is known, requests in that shape are redirected too.
WordPress
Get: Tools → Export → All content. A .xml file, or the .zip some hosts wrap it in.
Comes across: posts, pages, drafts, scheduled posts, private posts, authors, categories, tags, publish dates, excerpts, featured images and the pictures inside posts.
Blocks are unwrapped rather than stripped. A Gutenberg post is HTML with block markers around it; the markers come off and the HTML inside is converted, so paragraphs, headings, lists, quotes, images, captions, tables and code all survive as content.
Shortcodes are handled where they mean something. [caption] becomes a captioned figure and [gallery] becomes the pictures it named. A shortcode from a plugin we do not know has no equivalent anywhere else, so it is reported rather than guessed at: the import log names every post it found one in, and which shortcode it was.
Check afterwards: posts built with a page builder. Those export as a wall of layout markup rather than as writing, and no importer can turn that back into content.
Old links: /?p=123 and /?page_id=4 keep working, which matters more than it sounds. Those are the addresses in old emails and documents.
Ghost
Get: Settings → Labs → Export your content. A JSON file, or a zip that includes the images.
Comes across: posts, pages, drafts, scheduled posts, tags, authors, excerpts, feature images, publish dates, and members-only posts.
Check afterwards: Ghost cards that have no equivalent here, and member tiers, which have no meaning on this blog. A members-only post arrives either unlisted or as a draft, whichever you chose.
Substack
Get: Settings → Exports → New export. A zip with posts.csv and a folder of posts.
Comes across: posts, drafts, publish dates, and subscriber-only posts.
Check afterwards: your subscriber list, which does not come with the posts. Substack is a newsletter as well as a blog, and the blog is the half that moves.
Medium
Get: Settings → Account → Download your information. A zip of HTML files.
Comes across: posts, drafts, publish dates and pictures.
One quirk worth knowing. Medium names each file with the date in front of the title. That prefix is taken out of the address so your slug is the slug and not a date, and it is used as the publish date when the file itself does not carry one.
Check afterwards: Medium's own embeds. Anything that was a Medium-hosted widget has no equivalent anywhere else.
Blogger
Get: Settings → Manage blog → Back up content. An Atom XML file.
Comes across: posts, pages, drafts, labels as tags and publish dates.
Blogger's date-based addresses are kept as redirects. An old /2019/04/a-post.html arrives at the post, without the .html that was Blogger's convention rather than part of the name.
Check afterwards: the body formatting on anything written in Blogger's own editor before about 2015, which tends to be inline styles rather than structure.
Squarespace
Get: Settings → Import & Export → Export → WordPress. Squarespace exports in WordPress's format, so it is read as one.
Comes across: posts, pages, authors, categories, tags, dates and pictures.
Check afterwards: anything that was a Squarespace block rather than writing. The export carries the content, not the layout.
Webflow
Get: open the blog collection and press Export. A CSV.
Comes across: posts, their fields, addresses and dates.
Check afterwards: which CSV column was your body. Webflow collections are shaped by whoever built the site, so the columns are named whatever they were named, and the plan screen shows what it made of them before anything is written.
Wix
Comes across: posts, from either a blog export or the feed.
Check afterwards: more than the others. Wix's own rich content format is converted rather than copied, so tables and galleries are the parts to look at.
A CSV, a folder of Markdown, or a feed
Three formats that are not a platform at all, and between them they cover everything else.
A folder of Markdown with frontmatter, zipped. This is the cleanest import there is, because Markdown is what the blog stores anyway. Hugo, Jekyll, Eleventy, Astro and Obsidian all produce it.
A CSV, with a column for the title, the body, the address and the date. The plan screen shows which column it took for what.
An RSS or Atom feed, which every blog on earth has. It is the shallowest import, because a feed usually carries only the most recent posts and often only a summary rather than the whole article, but it works when a platform gives you nothing else.
Hosted platforms with an API
Shopify, HubSpot, Hashnode, Dev.to, Contentful, Sanity, Strapi and Storyblok all export JSON, and their JSON is read directly: drop the file in and it is identified.
For the headless ones (Contentful, Sanity, Strapi, Storyblok) the content is whatever your own model calls it, so the plan screen is doing real work: it shows which field it took for the title, the body, the address and the date, and you correct it before anything is written.
If the platform gives you nothing
Two fallbacks, in order of preference.
Its feed. Shallow, but real content.
Its sitemap. The importer can read a sitemap, fetch each page and take the article out of it. This is the last resort and it is the one most likely to need editing afterwards, because it is reading a rendered page rather than the content behind it. It is still faster than retyping forty posts.
What never comes across, from anywhere
Comments. No platform exports them in a form worth importing, and a blog here does not host them. The design studio can put a comment service on your posts instead.
Your theme. The writing moves; the design does not. That is what the design studio is for.
Analytics history. Whatever your old platform recorded about traffic stays with your old platform.
Subscribers or members. An export of posts is an export of posts.
Still stuck?
Open Rankbench and the page this article describes — most screens explain themselves as you go.