Migrate from Substack and import your content to Ghost with this guide
π‘ Migrating paid memberships from Substack? You will need to set up Stripe first β find out more. Make sure to use the same Stripe account that is connected to your Substack.
Run the migration
The Substack migrator allows you to quickly import content and members from your Substack to your Ghost publication. You can access the migrator tool from the Settings β Advanced β Import/Export area of Ghost Admin.

It’s helpful to log in to your Substack account before running the migration in Ghost Admin.
1. Enter your Substack URL
To start the migration process, enter the public URL to your Substack, and click Continue.

2. Export content
Next, click Open Substack Settings. If already logged into Substack, this will take you directly to the location of your Substack account where an export can be generated.

Click Create new export, and then download the zip file that’s generated after the export is completed in Substack.
3. Upload content
Once your export has been downloaded, return to the migrator window in Ghost Admin, and select Click or drag file here to upload, and navigate to the zip file you downloaded from Substack, once uploaded click Continue.
If you’re unsure of where the file was saved, check your Downloads folder.
4. Export free subscribers
Next, it’s time to import your Substack subscribers. Click Download free subscribers from Substack, to trigger a CSV file download of your subscriber list.
Once downloaded, select Click or drag CSV file here to upload and navigate to the CSV download, and click Continue.

5. Export paid subscribers
π‘ Migrating paid memberships from Substack? You will need to set up Stripe first β find out more. Make sure to use the same Stripe account that is connected to your Substack.
Next, it’s time to import your Substack subscribers, if you have them. Click Download paid subscribers from Substack, to trigger a CSV file download of your subscriber list.
Once downloaded, select Click or drag CSV file here to upload and navigate to the CSV download, and click Continue.

6. Review
Ghost will confirm the number of posts and members that will be imported to your publication. If satisfied, click Import content and subscribers to begin the import of your data.

After a few moments, you’ll see a confirmation message, confirming that your data was successfully migrated to your Ghost site.
Substack fees
Ghost does not take a cut of your revenue. Substack will continue to take 10% fees on your existing paid subscriptions. If you would like help getting payment fees removed, contact concierge@ghost.org.
Statement descriptor
The statement descriptor is what’s shown on bank statements, and depending on how the account was set up, might include ‘Substack’ in the name. We recommend updating this in your Stripe public details settings.
Using custom domains
If youβre using a custom domain on Substack, youβll need to implement redirects in Ghost to prevent broken links.
Substack uses /p/
as part of the public post URL, where as Ghost uses it in the URL for post previews. This means the redirect regular expression is quite complex, but necessary so that post previews in Ghost function correctly.
# redirects.yaml
301:
\/p\/(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(.*): /$1
302:
This means that if a visitor or crawler goes to https://mysite.com/p/awesome-post
, they will automatically be redirected to https://mysite.com/awesome-post
.
For more information on Substack redirects, visit our guide here.
Large and Complex migrations
If your migration needs go beyond what our in-built migration tools can support you can still move to Ghost.
If you’re a Ghost(Pro) customer, our Migrations team can support you in migrating your content and subscribers. Learn more and get in touch with the team here.
Alternatively, if you are a developer, comfortable with using the command line, or running a self-hosted Ghost instance, we have a suite of open-source migration tools to help with large, complex and custom migrations.