How to Really Back Up Your Substack (Posts, Subscribers, and URLs)
The export button is not a backup.
My Medium friends can read this over on Medium.
Substack has an export button. It gives you a zip file, and clicking it may falsely make you feel safe about a complete backup. It's not complete. Issue 1. And it's not all you should do. Issue 2.
With the export button, you did about a third of the thing.
Your posts are in there. But a lot is not. Let's go through that.
Export
Settings, then Import / Export in the left sidebar, then "Export your data".
You get a zip with your posts as a CSV and as HTML files, your subscriber list, and your stats. Substack's own page lists exactly those three things.
Which is useful. Posts, subscribers, stats. But some things aren't mentioned. Notes aren't there. Neither are comment threads or drafts.
I pulled mine to look at it properly. Three things at the top level: posts.csv, email_list.burk.csv, and a posts folder. That folder holds one HTML file per published post, named with the post id and the slug, plus two small CSVs for every post that went out as an email.
The HTML files are not pages. They're body fragments. No html tag, no head, no title, no date, no author. Out of about 1,100 files, not one carried a title element. Titles, subtitles and dates sit in posts.csv instead, matched up by post id, so turning the zip into something readable means joining the two yourself.
Drafts get another treatment. Mine show up as rows in posts.csv with is_published set to false, and there's no HTML file for a single one of them. You get the title of a piece you never finished. Not the piece.
So the zip is a copy of your text. Good to have. Just don't confuse it with a copy of your publication.
There's no official API for any of this either, so it stays a button you click. I built a small command line tool that talks to Substack's internal endpoints for drafts and Notes, but the export is not one of them.
Images
The export contains no media at all. The HTML files still show your images because they link back to Substack's servers, so everything looks fine on your laptop. Michael Macfadden, who documented his own backup routine, says it right: "The export doesn't contain ANY media assets whatsoever."
Molly White said the same thing after moving her newsletter off the platform. If you use the content export as-is, "you will lose a lot" and your posts will be broken.
The zip looks complete right up until the publication is gone. Then every image in it is a grey rectangle or broken link symbol.
Macfadden's fix is a detour through WordPress: import the Substack export with the importer plugin, check the box that says "Download and import file attachments", and the media lands in the library as real files. Then he flattens it to static HTML.
Another version is to mirror your own public site while it's still online. Something like wget --mirror --page-requisites --convert-links --span-hosts --domains=yourname.substack.com,substackcdn.com https://yourname.substack.com will pull the pages and the images they point at. I've read about people doing this. It's rough, and paywalled posts won't come along, but it gets you the pictures.
Probably the best thing (but involves planning ahead) is already having created all your drafts with images locally in an app or tool and saved on your PC or in the cloud, before putting it up on Substack. So you have local copies of your posts. I hope most people do that anyway. I used to write in Notion, so most of my stuff is there too. Now I have my own app that keeps everything saved locally + a second backup in iCloud.
So: Posts ✔
But there's more, right...
Stats
My export came to 73 MB. The posts are 11 MB of that. The other 61 MB is email tracking.
Every post that was sent as an email gets two extra files. A delivers CSV that logs who it went out to, and an opens CSV that logs the opens. And the opens file is detailed: the subscriber's email address, the country, the city, the region, the device type, the operating system, the full user agent string.
That's a lot of data, by the way. Data protection must be top notch...
So the export isn't only your writing. It's also a record of where your readers were sitting when they read you.
Your data, and useful. But it changes where the zip should live. A folder with thousands of email addresses and city-level location logs doesn't belong in a shared Dropbox or a synced Downloads folder. Encrypt it, or keep it somewhere nobody else reaches.
Your list
The subscriber list is in the zip, but it's the thin version. Seven columns: the email address, whether the subscription is active, the expiry, the plan, whether email is disabled, the signup date, and the date of the first payment.
The fuller one lives on the Subscribers page. The three dots above the list, then "Export". You can take all columns or only the visible ones, and all columns goes down to when someone last opened an email. Substack documents it here.
Do this regularly if you care about "owning" your email list. A list you pulled eight months ago is eight months of new readers short, and those are the ones who signed up because they liked something recent.
Put the CSV somewhere that isn't only your laptop.
Subscribers ✔
Paid subscribers
Free subscribers are a spreadsheet. Paid subscribers are a billing relationship, and that's a different animal entirely.
The good news is that Substack runs on your own Stripe account, so the customers sit in a system you control (sort of). Ghost's migration docs say to "use the same Stripe account that is connected to your Substack" and the subscriptions carry over instead of everyone having to re-enter a card.
Sounds great… if it works. I haven't tried that.
The less good news is in the same docs: "Substack will continue to take 10% fees on your existing paid subscriptions." You leave, they keep earning on the people who were already paying. What???
That reads like an error in the documentation. It isn't.
Substack sits on your Stripe account as a connected platform, and every subscription it set up carries a 10% application fee inside the subscription itself. Cancel the publication, delete every post, walk away for good, and those subscriptions keep sending Substack their cut on each renewal. Molly White, who moved Citation Needed to self-hosted Ghost in 2024, put a whole warning around it: "if you don't do this, subscriptions created through Substack will continue to send a 10% cut to Substack, even after you've left the platform!"
Nobody takes it off for you. You have to ask.
And there's a wrong way to ask. Don't hit disconnect in the Substack dashboard. Buttondown's migration guide mentions it: "This will cancel and refund all paid subscriptions." White says the first support rep who answered her suggested exactly that.
The version that works is an email asking Substack to do it from their end. Buttondown hands you the sentence: "disconnect Stripe from my publication and remove the 10% application fee, without cancelling or refunding any existing subscriptions." White needed a second email and five days before someone did it. Ghost offers to chase it for you through concierge@ghost.org if that's where you're going.
Then, once the fee is off, cut the connection from the Stripe side, under Settings, Team and Security, Installed Apps. In that order. Fee first, disconnect after.
The import itself isn't clean either. White had more than 20,000 subscribers, and every paid one landed in a single tier no matter what they'd been paying, so she wrote a script to sort them back without re-charging anyone. Non-US currencies had to be moved by hand. Ghost had no welcome or renewal emails, so she coded those too.
Several weeks of work. Not an afternoon. Yikes...
Addresses
This, in my eyes, is the deciding factor whether any of the above is worth anything at all.
If you publish at yourname.substack.com, every link you ever shared, every Google result, every mention in someone else's post points at a hostname Substack owns.
You can export the words. You cannot export the addresses, and you can't redirect them either. The archive comes with you, the traffic doesn't. All links break once you're moved.
The export helps a little here. Every HTML file is named with the post id and the post's slug, and that slug is the one in the live URL. Substack shortens long titles, so I have files like the-importance-of-a-platform-independent, and that clipped version is exactly what the address bar shows. Which means you can rebuild the full list of your own addresses out of that folder.
Worth something only if the part in front of them is yours.
A custom domain turns that around. One-time $50 per publication, plus whatever your registrar charges for the domain, then you point a CNAME at Substack. I did that a while back and my publication lives at letters.byburk.net. burk.substack.com still 301s to it, so nothing I'd shared before the switch broke. I connect a domain to everything I can for exactly this reason.
The point of the domain is that leaving becomes a DNS change instead of a fresh start.
You keep your domain, URLs don't break (some must be redirected, but at least that's possible with your own domain), and you keep the traffic and domain authority you've built over the years.
About that possible redirection:
Substack puts posts under /p/slug and most other platforms don't, so you need a redirect rule on the new side to catch the old shape. Ghost documents a regex for it. White needed custom nginx rules on top of that, plus a script to fix internal links between her own posts.
AI can help a lot with that as well.
So in the end, it is still a lot better than watching every link you've ever placed go to a 404.
Downsides… there are always some
The domain costs money. Fifty dollars to Substack once, then the yearly bill at your registrar. Small, but it's not free.
Switching to a custom domain also means Google has to re-learn where you live. Rankings can dip for a while before they come back. Worth it, in my eyes, but it can be a true cost in the first months.
And the export stays manual. There's no scheduled backup, no webhook, nothing that runs on its own. If you forget for a year, you have a year-old backup.
None of this makes leaving easy, by the way. But it makes leaving possible. And that's important. Because we never know...
I do those same steps for Medium too, by the way.
The Bottom Line
Export your posts every few months if you don't have local copies anyway, pull the subscriber CSV more often than that, keep both somewhere that isn't one hard drive, and own the domain address.
That's a true backup of your Substack.
If you're not already, follow me on Medium.




