This post contains affiliate links. I may receive compensation if you click an affiliate link and make a purchase. Affiliate links do not influence my recommendations. Learn more by reading my Transparency Statement.
There are many reasons you might want to move your content from Medium to WordPress. Maybe you want to build out your website and include everything you’ve written on Medium. Perhaps you want a copy of everything you’ve written in case Medium one day shuts down. Regardless of the reason, moving content from Medium to WordPress takes time and patience. Once complete, you’ll have a complete copy of your Medium archive on your own WordPress-powered website.
A few months after moving into full-time freelance writing, I redeveloped my website. I wanted better search engine optimization and lead generation. Part of the website redevelopment included expanding my blog. Everything I write publicly, regardless of site or platform, now exists under a single roof that I own and control.
No, I am not leaving Medium. My content will live both on Medium and my website. Yes, there are potential SEO implications of having content in multiple places. So far, however, my strategy is working, and my website is generating more searches and initial communication requests.
Before moving into the specific steps necessary to move content from Medium to WordPress, let’s go through a quick checklist of everything you need to proceed.
To move content from Medium, you must-have content to move. I’ll assume you have an active Medium account and are logged in. That’s the main prerequisite here.
When moving content to WordPress, you have two options: self-hosted on your web server or WordPress.com. WordPress.com is the free, platform-hosted version of the software. Regardless of the final destination for your Medium content, you need an active WordPress.com account.
My website is a self-hosted WordPress installation on a Dreamhost server. I’ve used Dreamhost for years for other projects and am happy with their support and features for the price. While I love the simplicity of Carrd, it cannot install WordPress or run the complexities needed for my new website.
Where you choose to host WordPress is up to you. If you are not going the self-hosted route and sticking with WordPress.com, you can obviously skip this step.
With the checklist complete, you’re ready to start moving content. Buckle in; this will take some time.
Step 1: Download From Medium
Before you can move content from Medium to WordPress, you must download it from Medium. Thankfully, this is one of the easiest steps involved in the entire process.
Visit your Medium settings and scroll to the Account section. Click Download .zip, and the Medium servers will begin preparing a download of everything you’ve published and all of your unpublished drafts. How long Medium takes to generate the file depends on how many things you’ve published. Once ready, Medium sends an email to click a link and download the file.
Inside the file is a folder structure with .html copies of all your Medium stories. Unfortunately, this format is not something self-hosted WordPress installations import. So, regardless of which version of WordPress you’re using (self-hosted vs. WordPress.com), you must first move everything to a WordPress.com account.
Step 2: Import to WordPress.com
Login to WordPress.com and create a new blog. For now, I suggest you set the blog to private, even if this is the final destination for your content.
WordPress.com has a fantastic import tool with options for many major platforms, including Medium. Moving from Medium to WordPress.com is as easy as importing the .zip file from Medium. Depending on the number of Medium posts, the import can take some time. You’ll receive an email when everything is complete and ready to go. Unfortunately, the simplicity of this step is also what makes it tremendously frustrating.
Medium exports everything you’ve ever created on the platform. Responses? Check. Drafts? Check. Hidden posts? Check. When Medium content imports to WordPress.com, everything becomes blog posts. The original publish date, time, tags, and status all remain, but every response is now an entire post. This all-or-nothing status is why I initially recommended setting your WordPress.com blog status to private.
Step 3: Fix Everything
Once everything imports, you have some more work to do.
Step 3a: Delete Unwanted Content
Now that every response you’ve ever published on Medium is a blog post, I’m sure you want to go in and delete them. You may also have old posts you don’t want to import to the new site. That’s up to you.
WordPress.com doesn’t make this easy. There is no bulk-editor option for the free, platform-hosted version of the software. Your best option here is deleting every unwanted post one at a time.
If you are tech-savvy and understand basic HTML and XML formatting, there is another option. If that scares you, delete everything one at a time on the WordPress.com website.
Step 3b: Reformat Everything
Search engine optimization relies on a hierarchy outline structure for blog posts. H1 is the highest level of content (often the title), followed by subheadings (H2). If that subheading more subs, like Step 3b above, they are H3 titles. This structure continues down to H6 titles.
In all its wisdom, Medium exports content where the title is in H1 and all first-level subheadings are in H3. So, everything just imported to WordPress is missing an H2 subheading. Granted, if your WordPress theme doesn’t break with missing H2 titles, and you don’t care about SEO hierarchy, this isn’t a big deal. If, however, you do, then you’ve got work to do.
Unfortunately, like with the deletion step, the only viable option here is going into every post and making changes. Though, like with the previous step, there is a more technical option.
Step 3c: Edit the XML File
Thankfully, exporting from WordPress.com does not create individual .html files for each post. It generates a single XML file containing everything. If you understand the code and are comfortable making changes, you can edit the file directly.
I went through the code and deleted entire posts I didn’t want to be included, all the responses and drafts. I also changed some tags using find and replace.
Before you go down this route, let me give one gigantic word of warning. One typo or unclosed HTML tag will render the entire XML file useless. Do not go editing the file unless you know what you’re doing. Though, if you are comfortable, this is much easier than using the WordPress.com interface.
If you are sticking with WordPress.com, once you edit every post, you’re done. If you edited the XML file, you now want to re-import the file. Though you should import to a new WordPress.com blog, otherwise, there could be conflicts. If, however, you’re moving onto a WordPress.com blog, your work is not over yet.
Step 4: Move to Self-Hosted WordPress
If you edited the XML file directly in the previous step, you’re ready to move on. If not, go to the WordPress.com export options and export. You’ll receive a single file ready to import into your self-hosted WordPress installation.
Once the XML file downloads, open your self-hosted WordPress import options and install the WordPress option. Again, we couldn’t go straight here because self-hosted WordPress installations do not allow imports using Medium’s files. It isn’t straightforward, I know.
With the WordPress import plugin installed, point it toward your XML file and let it start working. Again, depending on how many posts, this could take some time.
Assuming you made all of your desired edits in the previous step, at this point, your content is more or less finalized. If you did not, self-hosted WordPress installations have bulk-editing and bulk-deletion tools, making some purging easier.
Step 5: Upload Images
There are a few final steps you can choose to take to clean up your media content. By default, all images exported from Medium and imported to WordPress still point to the original Medium upload. So, any image doesn’t actually live on your website but Medium. While Medium has great servers, additional server requests can slow down your website. If the goal is to move content from Medium to WordPress, relying on Medium for media hosting is problematic.
WordPress makes resolving this issue easy once you’re in the individual post editor. Click on the image in question, and an upload icon appears in the toolbar. Click the button, and WordPress does its thing, uploading the image to your Media Library and correcting the link references.
Yes, this is a pain. I had around 300 posts to correct and upload images for. It took a few weeks, working on a few posts at a time. I also added the Title, Alt, Caption, and Description for each image in the Media Library during this process. But that isn’t necessary, though it does help to make images easier to find in the Library.
Regardless of why you might want to move content from Medium to WordPress, the process requires time and patience. Things will import you didn’t remember writing. Responses that said “great post” will become sad, two-word blog posts. You’ll need to spend time correcting everything to make anything useful.
However, once you go through the hassle of correcting everything, you’ll have a full copy of Medium on WordPress. Now, I publish on my website and then import to Medium. It is MUCH easier moving from WordPress to Medium than the other way around.