ULTRV

Migrating from Medium to ULTRV

Request the archive, wait for the email, upload the zip.

Medium's archive is the thinnest export of the five platforms ULTRV reads, but it is enough. Your stories are in there as HTML, one file each, with the title, the subtitle, the publication date, and the body. What it does not contain is everything Medium built around them: the tags, the claps, the responses, the followers, and the distribution. Those are the platform, and they stay with the platform.

That is the honest framing of this move. You are trading an audience you did not own for an address you do. TheMedium alternative comparisonargues both sides of it.

Step one: request your archive

In Medium, open Settings and findDownload your information — currently under the Security and apps tab, though Medium has moved and renamed that tab before, so search for the wording rather than the tab. Confirm with Export. Medium builds the archive in the background and emails you a download link when it is ready, which can take a while. (Checked August 2026 against Medium's help centre.)

The zip has a folder for nearly everything Medium knows about you — bookmarks, claps, highlights, interests, lists, notes, profile, sessions. ULTRV only opens one of them:posts/. Upload the zip exactly as Medium produced it; there is no need to trim it first.

Step two: upload it to ULTRV

Create a blog, open itsSettings → Import, and choose theMedium tab. There is no URL option — Medium has no export API worth the name, so the zip is the only route. Pick the file, choose what should happen if a story has already been imported, and press Start import. The upload cap is 50 MB; a Medium archive is HTML and CSV, so it is usually well under that.

What maps, and what does not

Each story file in posts/ becomes an ULTRV post, carrying:

  • The title, read from the story's headline.
  • The subtitle as the excerpt. Medium's deck becomes the ULTRV post excerpt.
  • The body, taken from the story's body section — Medium's page furniture around it is discarded.
  • The slug, from the filename, with the random hash Medium appends stripped off. Drafts have no usable filename slug, so they take one from the title.
  • Published or draft, and the date. Files named draft_… arrive as drafts with no date; everything else arrives published with its original date.
  • Inline images, downloaded from Medium's servers, stored on ULTRV, and relinked in the post.
  • The original Medium URL and author name, recorded against the post.

What stays behind:

  • Tags. Every story arrives untagged.
  • Claps, responses, highlights, and bookmarks.
  • Followers, and the reader relationship generally.
  • Publications. A story you wrote for a publication imports as your own post; the publication's branding and membership do not follow.
  • Series, and anything that only exists inside Medium's reading interface.
  • Featured images. Medium has no separate feature image field in the export, so cover pictures only survive if they were part of the story body.
  • Tables and embeds. Imported HTML is sanitised to headings, paragraphs, lists, links, images, blockquotes, code, and emphasis, so embedded gists, tweets, and videos are dropped.

After the import

Watch the count in the import history, then go through this list:

  1. Check a story that leaned on a code block or a gist. Code fences survive; embedded gists do not, and those posts need a paste of the real code.
  2. Reload a picture-heavy story after a few minutes. Images are fetched in the background once the text has landed.
  3. Look at the drafts. Medium drafts are often half-finished, and this is a good moment to delete rather than migrate them.
  4. Tag everything you care about. It is the only way readers will browse by topic, and ULTRV gives every tag its own feed.
  5. Set a theme. Medium has one house style and ULTRV has 84, which is a nicer problem.

If the result is not what you wanted, roll the batch back from the import history — it deletes the posts and images that import created and nothing else — and start again. Re-running is safe in any case: each story keeps an id derived from its filename, so a second pass either skips what it has already brought over or overwrites it.

Your old URLs

A Medium story lives atmedium.com/@you/on-lichen-1a2b3c4d, or under a publication's path. On ULTRV it becomes/on-lichen, underyourblog.ultrv.blog or acustom domain. There is no redirect to be had in either direction: the old address is on Medium's domain, and it is Medium's to keep.

The practical move is to leave the Medium stories up. Edit the top of each one you care about to link to the new copy, or at minimum add a line to your Medium profile. Deleting the archive removes the only signposts pointing readers at where you went — and it removes the image URLs your import depends on if you ever need to run it again.

Frequently asked questions

Do Medium drafts come across?

Yes, if Medium put them in the archive. Draft files are named draft_ followed by a hash, and ULTRV recognises that prefix: those stories arrive as drafts with no publication date, and take their slug from the title rather than the filename. Published stories arrive published, with the date Medium recorded.

Do my Medium tags come across?

No. Medium tags are not present in the exported story files in a form ULTRV can read, so every imported story arrives untagged. Tagging them again is the one piece of manual work this migration reliably creates. On the upside, ULTRV publishes a feed per tag, so it is worth doing deliberately rather than reproducing the old list.

What about claps, responses, and followers?

None of them move. Claps and responses belong to Medium, and ULTRV has no comment system or follower graph to import them into. Readers follow an ULTRV blog by subscribing to its RSS, Atom, or JSON feed. This is the trade you are making: no built-in audience, no distribution, no metered paywall.

Can I keep my Medium URLs?

No. Medium story URLs live on medium.com or on a Medium publication, and neither is yours to redirect. ULTRV keeps the readable part of the slug and drops the hash Medium appends, so a story at medium.com/@you/on-lichen-1a2b3c4d becomes /on-lichen on your blog. Leave the Medium story up with a link to the new home rather than deleting it.

Start your blog →

Free, no credit card. Request the Medium archive now and set up the blog while you wait for the email.