Ghost Migrator: The easy way to migrate data to Ghost

The official Ghost plugin allows you to export your WordPress data in a JSON format that can be imported quickly and easily by the Ghost publishing platform.

Features Overview

The Ghost Migrator plugin will export as much blog and publication data as it can into a clean set of exported files.

  • Posts, pages, tags and authors are all automatically exported and recreated for Ghost
  • Tags will be migrated, but not categories. If needed you can convert your categories to tags before exporting.
  • Ghost does not have built-in comments, but it does integrate with many comment platforms if you want to migrate your comments there.
  • No custom fields, meta, shortcodes, post types, taxonomies or binary files will be migrated. Just regular posts, pages, tags and images
  • Passwords are not migrated – after importing to Ghost, each user may perform a password reset to gain access to their Ghost account

Docs & Support

You can find docs, FAQ and more detailed information about Ghost on If you’re unable to find the answer to your question in our FAQ or in any of the documentation, try searching the Ghost support forum – if you still don’t find the answer you need, post a new topic!

Bug reports

Bug reports for the Ghost Migrator plugin are welcome over on our GitHub repository. Please note that GitHub is not a support forum, and that issues that aren’t properly qualified as bugs will be closed.

Further Reading

For more information about Ghost and help getting started with the platform, check out:

Capturas de pantalla

  • The plugin has a single settings screen to export all your data


  1. Use the Add New Plugin in the WordPress admin area
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Access the exporter functionality under Tools -> Export to Ghost


How do I use this?

Install it, then go to Tools -> Export to Ghost.


26 de Mayo de 2023
I keep having an error when trying to use this plugin: “There has been a critical error on this website. Please check your site admin email inbox for instructions.” Looking at the support forum for it, other people have already reported the error.
19 de Octubre de 2019
This is a super useful tool for one-click content export from WordPress to Ghost. If you’re switching to Ghost, from WordPress, you need this plugin.
Leer los 6 comentarios

Colaboradores & Desarrolladores

“Ghost” es software de código abierto. Las siguientes personas han contribuido a este plugin.


Traduce “Ghost” a tu idioma.

¿Interesado en el desarrollo?

Revisa el código, echa un vistazo al repositorio SVN, o suscríbete al registro de desarrollo por RSS .

Historial de cambios


  • Delete prior exports and change how new exports are generated – Credit to Joshua Chan
  • Test & ensure compatibility with WorePress 6.5


  • Remove HTML from post titles
  • Use example email if none exists for a user
  • Test & ensure compatibility with WorePress 6.4


  • Added support for feature image alt & captions (thanks @unitof)
  • Encode post titles (thanks @unitof)
  • Disabled ZIP download button if ZipArchive is not installed
  • Test & ensure compatibility with WorePress 6.3


  • Use slug as user name if no display_name exists


  • Add #wordpress tag to all posts & pages
  • Test & ensure compatibility with WorePress 6.1
  • Test & ensure compatibility with PHP 8.1


  • Fix date format for compatibility with PHP 7


  • Test & ensure compatibility with WorePress 6.0
  • Test & ensure compatibility with Ghost 5.0
  • Include meta_title and meta_description values where available
  • Use the user_login value for user slugs to match the value used in URLs
  • Remove the html and language values for posts, as these are not used by Ghost when importing content
  • Include media library size in diagnostics
  • Various bug fixes & code improvements


  • Only export users with the capability to create posts – PaulAdamDavis
  • Include user roles in JSON export – PaulAdamDavis
  • Use ISO 8601 dates for better Ghost compatibility – PaulAdamDavis
  • Update plugin icon & screenshot – PaulAdamDavis


  • Limit plugin to admin users only. Props to PaulAdamDavis.


  • Updated branding. Props to PaulAdamDavis.


  • UI cleanup and fix for absolute image URLs in post content. Props to PaulAdamDavis.


  • Added check/notice for ZipArchive.
  • Added check/notice for minimum PHP version.
  • Added diagnostics section.


  • Updated export format to support Ghost 2.x & 3.x
  • Updated slug to use user_nicename.
  • Upload/image URLs are now exported as relative paths compatible with Ghost.
  • The download archive now includes all images in a Ghost compatible directory structure.
  • Added user profile image, updated name to use display_name, and updated the post feature image field. Props to badrihippo.


  • Added permission check for downloading the exported data. Only users allowed to do that can download it. Props tomhallam.


  • Added ‘the_content’ filter around $post->content. Helps with markdown conversion and display issues


  • new line tweaks: h1 and h2 will be prepended by new lines now. Previously they weren’t, and that caused problems with opening a new tag for the headers.
  • set h1 and h2 to use atx method (# and ## instead of underlining with === and —)
  • tweaked code block: multiple lines of code blocks are exported wrapped with ticks instead of being indented by one tab character. Code spans not changed.
  • shout out to sorbolene on #ghost for taking the time to nag me about this 🙂 Thanks!


  • implemented HTML to Markdown (thanks @yauh!). Ref:
  • code lint: plugin now adheres to WordPress-Extra coding style
  • added featured image to the export


  • Restricting fields to fit within Ghost’s db schema (concatenating some of the fields):
  • title and slug are both capped at 150 characters
  • status is capped at 150 characters (although you’d only every use about 15)
  • language is capped at 6 (although most are 5, like “en_GB” or 2)


  • Housekeeping in the repository.


  • Added support for multi-user capabilities, it now exports users, and connects posts with the users
  • Now exports pages
  • Exports user meta
  • Moved the json file save directory to the uploads folder. Added check whether the folder is writable or not.


  • Added support for private and pending WordPress post statuses (which were unhandled, and thus broke import). Ref: WP Query: Status Parameters


  • Removed published_at date from draft posts


  • Bumped version to current stable Ghost version
  • Added Export link to plugin row display for easier access
  • Changed date format in exported JSON. Previously it was microtime, which caused troubles on 32 bit PHP installs, as the maximum integer was less than current time, so exports were either in scientific notation or string. Currently using RFC2822 format (date(“r”) for the devs), which works with the importer


  • Fixes a bug where future posts would crash the plugin, and you weren’t able to export
  • Future posts are exported as drafts. Their published_at retains the future publish datetime though
  • Updated version to 0.3.0 for semver reasons
  • Left out Bond version 🙁


  • Fixes a duplicate tag issue.


  • Removed the export of Categories so that duplicate slugs don’t happen if there is a tag and a category with the same name.


  • There was a schema change in 0.3.2 or somewhere near that. Basically the way tags work changed, thus the exporter had to be reworked.


  • Fixed a typo I left in the previous version causing everything to not work… Sorry…


  • Fixed a path issue that would sometimes result in empty .json files. Hat tip to Ian Wootten for the fix!


  • Initial implementation

Copyright & License

Copyright (c) 2013-2023 Ghost Foundation – Released under the GNU General Public License.