Skip to content

Backup Medium Blog: Save Posts, Images and an Offline Copy

Backup Medium blog posts completely: what the official export keeps, how to save the CDN images before they vanish, and how to build a browsable offline copy.

Website Downloader 9 min read

To fully back up a Medium blog, you need three things. Start with Medium's own Download your information export, which gives you your post text as HTML files. Then save the images separately, because the export only links to them on Medium's servers and does not include the files. If you want the blog to look and click like the original, also make a browsable offline copy of your public profile or publication. This guide covers all three without scripts or the command line. It also explains what no Medium backup can capture.

What Medium's "Download your information" export contains (and what it doesn't)

You find the export in your Medium settings, under the account or security section, as Download your information. Medium prepares a ZIP file and emails you a download link. Folder names have changed over the years. At the time of writing, a typical export looks roughly like this:

  • posts: one HTML file per story. This includes published posts, drafts (their filenames usually start with draft_) and the responses you wrote, because Medium treats responses as stories.
  • profile: your name, bio and account details.
  • followers / following: lists of accounts, not email addresses.
  • claps, highlights, bookmarks, lists: your activity as a reader.
  • publications: publications you follow or belong to.
  • Assorted account data, such as sessions, blocked users and interests.

Several things are missing from the export:

  • The image files themselves.
  • Your stats: views, reads and earnings.
  • The claps and responses other people left on your posts.
  • Your followers' email addresses.
  • Any layout. The HTML files are bare-bones documents with no Medium styling and no links between your posts.

Does Medium's export include images? The CDN link problem

No. If you open an exported post in a text editor, every image appears as an <img> tag. Each tag points to Medium's image servers, usually an address on miro.medium.com or the older cdn-images-1.medium.com. Your browser loads those images from Medium every time you open the file. That is why the export looks complete when you first check it.

The problem shows up later. If you delete your account, if Medium removes the files, or if it changes its CDN addresses, those links can stop working. Medium makes no promise that images from a deleted account stay online. A backup that depends on the platform you are backing up from is not really a backup. The images have to be saved as actual files, and the best time to do that is while your account still exists.

Step 1: Request and check the official Medium export

  1. Sign in to Medium on the web, open Settings and find Download your information.
  2. Request the download. Medium sends an email with a link, which may take a while to arrive. The link expires, so download the ZIP soon after you get it.
  3. Unzip the file and open the posts folder. Compare the number of non-draft files with the number of stories on your profile.
  4. Open three or four posts in your browser. Check that the text, headings, code blocks and embeds are there. Embeds such as tweets or GitHub gists often appear only as links.
  5. Keep the original ZIP untouched in a safe place, such as a cloud drive plus an external disk. Do your other work on a copy.

This export is your most complete record of the text, including drafts that are not visible anywhere else. It is the foundation of everything that follows.

Step 2: Save the Medium export images without running scripts

GitHub has plenty of scripts that download every image link from the export. If you don't want to install Python or Node, three no-code methods work.

Option A: "Save page as" on each exported post

Open an exported HTML file in Chrome, Edge or Firefox while the images still load. Then use File → Save page as and choose Webpage, Complete. The browser writes a new HTML file plus a folder holding the images it just loaded, with the image links rewritten to point to that local folder. This is tedious for 300 posts, but it is reliable for a small blog or for your most important pieces.

Option B: Let a migration importer fetch them

If you plan to move to WordPress or Ghost, their Medium importers can download images into the new site's media library during the import. This works only while the CDN links still work. Run the import before you delete anything, then check that the image addresses in the new posts point to your new site rather than to medium.com.

Option C: Crawl the live blog

You can download your public profile or publication with an online crawler, which collects pages and the images on them in a single pass. This is also how you get the browsable copy described in Step 3. Medium's images sit on a separate domain and are often lazy-loaded with JavaScript, so open the result and check that the image files are actually inside it. Do not assume they are. If images are missing, this guide to missing images and CSS explains the usual causes.

Whichever method you use, spot-check the result with Wi-Fi turned off. An image that still shows offline is genuinely saved.

Step 3 (optional): Make a browsable offline copy and test it first

The export gives you text, and Step 2 gives you images. Neither gives you your blog as readers saw it: the layout, the profile page and the links from one post to the next. For that, you need a crawl of the public site. Website Downloader does this in the browser and delivers a ZIP that opens offline. You don't install anything, and your computer can be switched off while it runs.

You type in the blog's address, watch the page count climb, and receive one ZIP file. Run this first as a free test before you pay for anything.

Medium is a demanding site to crawl. Treat this step as an experiment:

  1. Use the subdomain address if you have one. Use yourname.medium.com or your publication's own domain rather than medium.com/@yourname. A separate address keeps the crawl focused on your content instead of the rest of Medium.
  2. Run the free plan first. It needs no account and covers up to 100 subpages, which is enough to see whether Medium serves your pages, whether images come through and whether posts link to each other offline. The archive is kept for 1 day, so download it straight away.
  3. Check honestly. Medium is built with JavaScript, so some pages may come out as a shell with little content. Medium may also refuse automated access altogether. If that happens, the service reports the error (for example a 403 response) rather than handing you an empty archive. Why JavaScript sites sometimes go blank offline explains the mechanics.
  4. Watch for infinite scroll. Profile pages load older posts as you scroll, and a crawler may only see the first batch. Many publications have archive pages, sorted by year, that list every story. Compare the crawl with the post list from your export to spot gaps.
  5. Scale up only if the test works. For a larger blog, the Single Site plan is a one-time 7.99 EUR for up to 5,000 subpages, kept for 30 days.
A successful crawl produces an index.html and one folder per page, with stylesheets, scripts and images stored beside them. Open index.html to browse the blog offline.

Even if the crawl only partly works, it complements the export rather than replacing it. Keep both.

What a Medium backup can't capture

Some things no export or crawl will get you:

  • Stats and earnings. Take screenshots of your stats pages, or copy the numbers into a spreadsheet, before you leave. They are not in the export and are only visible while you are logged in.
  • Claps and responses on your posts. A crawl may capture the clap count shown on the public page. Responses usually load separately, so they rarely appear in an offline copy.
  • Member-only stories. A crawler is not logged in, so paywalled posts appear only as the public preview. Your own export still contains their full text.
  • Anything behind your login. Drafts, notifications and private notes cannot be crawled. For drafts, the export is the only source.
  • Interactive features. Following, clapping, highlighting and responding all need Medium's servers.
Text, images, styles and files survive offline. Anything that needs a login or a live server, such as responses, stats and member-only content, does not.

Leaving Medium: export Medium posts to WordPress, Ghost or Substack

Do the migration while your Medium account is still active, because every importer relies on the image links working.

  • WordPress. WordPress.com has a Medium importer that accepts the export ZIP and can pull images into your media library. Self-hosted WordPress has importer plugins that do the same. Afterwards, check formatting, code blocks and embeds post by post. If you later want a static archive of the new site, see converting WordPress to static HTML.
  • Ghost. Ghost offers migration tooling for Medium exports, which imports posts and copies images. Check its current documentation for the exact path. To keep a static backup of the Ghost blog later, see exporting Ghost to static HTML.
  • Substack. Substack's importer can bring posts over from many platforms, and Medium is often handled through the public URL or feed. Check which posts arrive, then back up the new home too: how to back up Substack completely.

Exit checklist

  • Followers: the export lists usernames, not email addresses. Before you leave, publish a final post pointing readers to your new newsletter or site, and pin that link in your bio.
  • Custom domain: if your blog uses one, point its DNS to the new host. Then set up redirects from the old post addresses to the new ones there. Medium will not redirect for you.
  • Publications: your export contains only your own stories. If you run a publication, every contributor must export their own posts, or you must get their permission to republish what you crawl.
  • Canonical links: if you keep the Medium posts online, set canonical URLs pointing to the new copies, using Medium's import or canonical setting, so search engines treat your site as the original.
  • Stats: take the screenshots first. They are gone once the account is.
  • Only then consider deleting the account, after the images are saved and the new site is checked offline.

If the account is already gone and you never made a backup, the Internet Archive may hold captures of your public posts. Restoring a site from the Wayback Machine explains how, and the Wayback Machine downloader can turn a capture into a ZIP. A restore of up to 100 pages is free.

FAQ

Does the Medium export include drafts, comments, claps and stats?

It includes drafts, usually as files starting with draft_, and the responses you wrote yourself. It also lists the claps you gave to others. It does not include claps or responses your posts received, and it contains no view, read or earnings stats. Screenshot those before you leave.

What happens to my post images if I delete my Medium account?

Your exported HTML files still point to Medium's CDN, and Medium makes no promise those image addresses keep working once the account is deleted. Save the images as local files first, using one of the methods in Step 2. Then confirm they display with your internet connection turned off.

Can I export a Medium publication I don't own, or one I only write for?

The official export only covers stories you wrote, so writing for a publication gets you your own posts but not anyone else's. You can crawl a publication's public pages for an offline copy. That gives you a reading copy, not permission to republish other writers' work.

Can I save my followers' email addresses from Medium?

Not through the export: the followers file lists Medium accounts, not emails. The practical route is to invite readers to sign up on your new platform before you leave. Do this with a final post and a link in your bio.

Is it legal to download someone else's Medium articles for offline reading?

Saving public articles for your own private reading is generally treated differently from republishing them. Republishing usually infringes the author's copyright. Medium's terms of service also apply, and the rules vary by country, so this is not legal advice. If you plan to reuse, share or publish downloaded content, ask the author for permission or consult a lawyer. See also our FAQ.

  • backup Medium blog
  • Medium
  • blog backup
  • export
  • offline copy