Skip to main content
If you’re a Ghost(Pro) customer, our team may be able to help you migrate your content and subscribers. Learn more about our Concierge service.
This guide walks you through moving from a self-hosted Ghost instance on your own server to Ghost(Pro). The same steps work for moving between any two Ghost sites, or for creating a copy of your site for development.

Export your data

Start by exporting your site data from Ghost Admin, then copy your images from the server.

Export from Ghost Admin

Log into Ghost Admin on your self-hosted site and go to Settings → Advanced → Import/Export. Open the Export tab and click All data.
The Export tab in Ghost Admin's migration tools, showing the All data and Post analytics buttons
Choose what to include, then click Export. Keep the dialog open until the download finishes.
The Export data dialog on a self-hosted site, with checkboxes for content & settings, members, post analytics, themes, and redirects & routes
Your browser downloads a single .zip file containing:

Copy your images

Images and other media aren’t part of the self-hosted export, so you’ll need shell access to your server to copy them. If you’re unable to get shell access, ask your web host for a zip of your images directory.
The commands below assume you followed the Ubuntu guide to set up your instance. If you used another method, adapt the paths to suit.
Once you’re logged in to your server, cd to the content directory and zip the images directory with all its contents:
Make sure your images folder only contains images. Other file types may cause import errors. Then copy the zip from your server to your local machine:
Once unzipped, images should be the only top-level folder:
Finder window showing an images folder as the only top-level folder

Upload to Ghost(Pro)

Unzip your export, then upload each part to your new site in the order below.

Content

Log into your new Ghost(Pro) site and go to Settings → Advanced → Import/Export. On the Import tab, click Universal import, select export.json, and click Import.
The Universal import option in Ghost Admin's migration tools

Routes and redirects

Go to Settings → Advanced → Labs. Under Migration options, click Upload redirects and select redirects.yaml, then click Upload routes YAML and select routes.yaml.

Themes

Go to Settings → Site → Theme → Change theme, click Upload theme, select the theme .zip from the themes folder, and activate it.
Uploading and activating a theme in Ghost Admin

Images

How best to upload your images depends on the size of images.zip. A large file takes longer to upload and process. If the file is under 500 MB, upload it with Universal import, the same way you imported export.json. If it’s larger, split it into several smaller zips that keep the same folder structure. If you have a very large image directory or run into errors, contact support and we’ll help upload your images.

Members

Skip this step if you don’t have members. If you have paid members, connect your new site to the same Stripe account you used before you import. Learn how in the members guide. Then go to Members, click the settings icon, choose Import members, and select members.csv. You’ll get an email when the import is complete.
post-analytics.csv is included in your export for your records. Ghost(Pro) starts collecting analytics fresh from your first post.

Summary

Congratulations on moving to Ghost(Pro). All that’s left to do is check over your content to make sure everything works as expected. By hosting your site with us, you directly fund future product development of Ghost itself and allow us to make the product better for everyone 💘