Substack Importer


The Substack Importer will import content from an export file downloaded from your Substack newsletter.

The following content will be imported:

  • Posts and images.
  • Podcasts.
  • Comments (only for publicly accessible posts).
  • Author information.

In the future, we plan to improve the importer by:

  • Mailing lists.
  • Enhancing the performance of processing export files with many posts and media.


This plugin depends on the WordPress Importer plugin which needs to be installed first.

To install the Substack Importer:

  1. Upload the substack-importer directory to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress


After about 30 seconds, the import stops and I am seeing a blank screen. What happened?

When trying to import a large number of posts and images, timeouts can occur. To solve this, you can try to run the import
several times until all content has been imported.


10 January 2024
It worked. BUT… it should have an option to (a) make imported posts DRAFTS (even if they were not Drafts in Substack); .(b) use the first image as the Featured Image for imported posts; and (c) option to use import date as publish date so that they’re easier to find (or, alternatively, to set a Category or Tag for all imported posts). Yes, it times out. Not a fatal flaw, but maybe the ability to set a time-out value (or post import speed) would be useful? I used it on the smaller of my two newsletters. I don’t know that I’ll use it on the larger one unless the suggestions of (a), (b), and (c) above are implemented soon.
11 August 2023
This plugin does not work with WordPress 6.3:1. The page content is not imported, only a portion of the page header is. 2. The importer reports an error on the first image and makes no effort with other images. The developer has not responded to other support requests in two years.
10 December 2021
This is a decent plugin in that it essentially does what it claims to. Although the documentation was sketchy (almost nonexistent), it was easy enough to do the import. I downloaded a .zip file of my substack posts, then uploaded the same .zip file to my WP site from Tools > Import > Substack. The import was pretty quick — maybe 5 minutes at the most. I only started my substack 6 months ago so there wasn’t a lot of data. Then bam! I had a whole bunch of new, published WP blog posts, with the original substack date. (For the most part, that is — there were some date/time issues when the original post was near midnight. I’m assuming that’s due to different server times.) They came in with my site’s styling, which was impressive. Footnotes were more or less there, but not exactly as footnotes; had I wanted to keep them, I would have had to do some cleanup. My substack and blog are heavily dependent on images (I’m a photographer) and, although I could see the correct images in the imported posts, I couldn’t find them in the Media Library. I use each post’s Featured Image in several different ways and couldn’t figure out how to even find the images that I could see in my posts. So I tracked them down. Turns out they are copies of my images and they live on an AWS server. I never gave the plugin permission to make copies of my images or to host them elsewhere. So that’s fatal flaw #1: I’ve completely lost control of my own images. They are on a server for which I have only Read permissions. I’ve already alluded to fatal flaw #2: The images aren’t on my own server and therefore can’t be used as Featured Images in my posts. Fatal flaw #3 would be that when AWS goes down (as it did a few days ago), all of those images would be broken on my site. I unpublished all the newly created posts and began replacing the images. So — aside from the fatal flaws mentioned above, it likely would have taken just as much time to create the posts manually.
Read all 3 reviews

Contributors and Developers

“Substack Importer” is open source software. The following people have contributed to this plugin.


“Substack Importer” has been translated into 3 locales. Thank you to the translators for their contributions.

Translate “Substack Importer” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Change Log


  • Update wxr-generator to latest version. Fixes a bug where imports could error out due to a misformed timezone identifier.


  • Use subtitle as post excerpt if not empty
  • Testing the plugin up to WordPress 6.4.2
  • Fix PHPCS error and cleanup composer.lock


  • Removed the subscription input from post content


  • Convert the paywall div to a paragraph


  • Testing the plugin up to WordPress 6.2


  • Add support for WordPress 6.1


  • Fix Soundcloud embeds


  • Identify authors for draft posts as “Draft Posts”


  • Republishing to fix a CI error.


  • Remove unnecessary load_meta_data line.
  • Fix embeds not displaying properly on website.


  • Add post meta for paid content.
  • Convert Instagram embed to a link.
  • Add the subtitle as a H2 at the beginning of the post.
  • Set the correct comment_status for posts.


  • Refactored the importer.
  • Add support for authors.
  • Add support for comments.
  • Conversion of content to Gutenberg blocks.
  • Convert the export to WXR and use the WordPress Importer plugin to import the WXR.
  • Add progress indicator
  • Add support for attachments.


Early proof-of-concept version.