Skip to content

How to Migrate Posts from Medium to a Self-Hosted WordPress Site

iThink Studio
IThink Studio
September 16, 20256 minute read

Many writers begin on Medium.com, build a following, then decide they want full control via a self-hosted WordPress site. The good news: migrating your Medium posts is quite feasible. In this guide, I’ll walk you through a reliable process that preserves content, images, dates, and SEO (via canonical links).

Overview of the steps

  1. Export posts from Medium
  2. Import them into a WordPress.com site (for conversion)
  3. Export from WordPress.com into WordPress XML
  4. Import into self-hosted WordPress
  5. Pull in images from Medium into your WordPress media library
  6. Set canonical links on Medium to point to your WordPress site
  7. (Optional) Leave teaser / “Read more” links on Medium if you still publish there

Now let’s dig into each step in detail.

1. Download (export) your posts from Medium

Medium provides a built-in export feature where you can request a ZIP containing HTML files of your stories.

  • Go to your Medium profile → click your avatar → Settings
  • In Settings, go to Security and apps → find Download your information
  • Click “Download your information” and “Export”
  • Medium will then email you a link to a ZIP file with your stories and related data (valid for a limited time)
  • Unzip that file — inside will be HTML files for each post, along with metadata and possibly attachments

Notes:

  • The export is in HTML; it’s not in WordPress’s native XML format
  • The ZIP does not reliably include full image resources hosted on Medium — images in posts often remain linked to Medium’s CDN
  • Drafts and unpublished content may or may not be included.

2. Set up a WordPress.com site to act as a conversion intermediate

How to Migrate Posts from Medium to a Self-Hosted WordPress Site

Because WordPress.com supports a Medium import plugin, we can use it as a transitional step to convert the exported Medium-format content into a WordPress-compatible format (XML).

  • Go to WordPress.com and create a new site (you can start with a free plan)
  • Within that site, go to Tools → Import
  • Choose the Medium importer (on WordPress.com) and upload the Medium-exported ZIP file you got from Step 1
  • WordPress.com will parse your Medium content and import it as posts (with original dates, tags, etc.)
  • Once imported, you’ll now have your Medium posts in WordPress.com format

This step is useful because WordPress.com’s importer understands the Medium structure and outputs content in the WordPress data model.

3. Export the imported posts from WordPress.com

Now that your content lives in WordPress.com, you can export it in WordPress’s native XML (WXR) format, which is compatible with any standard WordPress import.

  • In the WordPress.com dashboard, go to Tools → Export
  • Choose “Posts”
  • Export the content; you will receive a .xml file
  • Download this .xml file — that is what you’ll import into your self-hosted WordPress site

By going through WordPress.com, you avoid having to manually transform Medium’s HTML into WordPress XML.

4. Import into your self-hosted WordPress site

migrating your Medium posts

Now on your destination (self-hosted) WordPress site:

  • Log into your WordPress admin → go to Tools → Import
  • If the WordPress importer plugin is not installed, install it (it will prompt you)
  • Run the WordPress importer, upload the XML file you exported in Step 3
  • During import, you’ll be asked:
    • Which user to assign posts to (either map to an existing user or create a new one)
    • Whether to Download and import file attachments — check this to let WordPress try to fetch images referenced in posts
  • Click Submit and wait for the import to finish
  • Once complete, check your Posts area to see that all content is present

Important note: The “Download attachments” option may not fetch all images, especially if some image URLs are dynamic or not straightforward. You may need extra steps (next section) to ensure all images become local.

5. Use Auto Upload Images (or similar) to import Medium images into your WordPress site

To ensure your WordPress site hosts the images (rather than linking to Medium’s CDN), you can use a plugin like Auto Upload Images.

  • On your WordPress site, install and activate Auto Upload Images plugin
  • The plugin scans post content for external image URLs, downloads those images to your WordPress upload folder, adds them to your media library, and replaces the image URLs in the post content accordingly
  • To trigger the plugin across all your posts, you can:
    • Go to Posts → All Posts
    • Select all imported posts, choose Edit under Bulk Actions, click Apply
    • On the bulk edit screen just click Update (you don’t have to change anything)
      This forces WordPress to reprocess and trigger the plugin, pulling in any missing images
  • After running, check your Media Library to confirm images are present

6. Set canonical links on Medium to avoid duplicate content penalties

Set canonical links on Medium

To signal to search engines which version is the “original,” you’ll want Medium to treat your WordPress site as canonical. That way, Medium doesn’t compete with your own blog in search.

  • Medium supports setting a canonical link (rel=canonical) to point to your WordPress post URL
  • Select a post on Medium, go to “More options” (the three dots menu) → More settings → Advanced settings → select “This story was originally published elsewhere” and enter the canonical URL (your WordPress version)
  • To verify, view the source of the Medium post (right click → “View page source”) and search for <link rel=”canonical” — the URL there should point to your WordPress version

This ensures that Medium’s version is considered a syndicated copy, not the original, thus protecting your SEO rankings from internal duplication

7. (Optional) Keep Medium versions as teasers / “Read More” links

If you plan to continue using Medium (for its readership or reach), you can do this:

  • On Medium, republish a shorter version of your article — for instance, just an excerpt, or a summary
  • At the end of the Medium post, include a “Read more on my blog” link pointing to the full post on your WordPress site
  • Make sure the canonical link still points to your WordPress version (so SEO remains safe)
  • This allows you to benefit from Medium’s audience funneling readers to your blog, without competing with your own site

Tips, cautions & extra advice

  • Redirects from Medium — If you had a custom domain on Medium, you might be able to use redirects. But for subdomain medium.com/yourname/…, you typically can’t control redirects. So canonical links are your main SEO defense.
  • Image failures — some images may still fail if URLs are embedded in CSS or tricky scripts. Manually check those and reupload if needed.
  • Permalink conflicts or slug changes — verify post slugs, tags, categories after import.
  • Internal links — if within your Medium posts you linked to other Medium posts, you may want to update those to link to your WordPress site.
  • Test before making Medium canonical changes — ensure your WordPress site is fully ready, images working, formatting OK.

Share this article

Back To Top