Free plan · read-only
Import converter
Convert Medium, Ghost, WordPress, Google Docs, Markdown or TinyLetter archives into a file for Substack's importer.
In one paragraph
The Import converter (free) turns an archive from Medium, Ghost, WordPress, Google Docs, Markdown files or TinyLetter into a clean file you upload yourself to Substack's own post importer. You connect nothing: upload your old platform's export, review the converted posts, and download the result. Titles, dates, images and formatting are preserved as far as the importer allows, and nothing is published on your behalf.
Why people want this
“The handoff was the worst part of my week: select all, paste, watch the formatting break, re-upload every image by hand, fix the footnotes.”
“A Substack post body isn't HTML, it's a ProseMirror document”
“I used Grok Bot to move my blog from Beehiiv to Substack.”
How it works
- Export your archive from your old platform: Medium export zip, Ghost JSON, WordPress XML, a Google Docs folder, Markdown files or a TinyLetter archive.
- Upload it to the converter. We parse every post, keep titles, subtitles, dates and images, and clean up formatting.
- Review the converted posts and fix anything flagged (embeds we couldn't convert, missing images, very long posts).
- Download the converted file and upload it yourself in Substack's import tool. Substack reviews and imports it; we never touch your Substack account.
Endpoints
Example responses are illustrative.
/v1/publications/{publication}/conversionsUpload an archive from another platform to convert.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| source* | body | "medium" | "ghost" | "wordpress" | "gdocs" | "markdown" | "tinyletter" | Where the archive comes from |
| file* | body | multipart file | The export file or zip from that platform |
{
"id": "conv_7d2e",
"source": "medium",
"status": "processing",
"files_received": 1
}/v1/publications/{publication}/conversions/{id}Conversion status, counts and any warnings to review.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| id* | path | string | Conversion id |
{
"id": "conv_7d2e",
"status": "ready",
"posts_converted": 408,
"images_kept": 1733,
"warnings": [
{
"post": "2019-03-our-fund-ii",
"issue": "Embedded Gist replaced with a code block"
}
]
}/v1/publications/{publication}/conversions/{id}/postsPreview converted posts before downloading.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| id* | path | string | Conversion id |
| limit | query | integer | 1–100, default 20 |
{
"data": [
{
"title": "Our fund II thesis",
"original_date": "2019-03-14",
"words": 2210,
"images": 5,
"warnings": 1
}
]
}/v1/publications/{publication}/conversions/{id}/downloadDownload the converted file to upload to Substack's importer.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| id* | path | string | Conversion id |
{
"url": "https://files.newsletterapi.io/conv_7d2e/import.zip",
"expires_at": "2026-10-22T09:00:00Z",
"size_bytes": 48211002
}MCP tools for your AI agent
convert_archiveStart a conversion from an uploaded archive.
Try: “Convert my Medium export so I can import it into Substack.”
get_conversion_reportShow what converted cleanly and what needs review.
Try: “Which posts in my conversion need fixing before I import them?”
What people will build with it
Move from Medium or Ghost
Bring years of posts across with dates and images intact instead of copy-pasting one by one.
Rescue an old TinyLetter or Docs archive
Turn hundreds of old issues sitting in a TinyLetter archive or Google Docs into importable posts.
Write in Markdown, publish on Substack
Convert a folder of Markdown or Obsidian notes into a file Substack's importer can read.
Questions
- Is it free?
- Yes. The Import converter is a free tool. Email hello@newsletterapi.io or use the Get access form, and we set up your account.
- Will it publish posts to my Substack?
- No. It produces a file. You upload that file yourself using Substack's own import tool, and Substack handles the import.
- Does it import subscribers?
- No. It converts posts only. Subscribers should only be added to Substack with their consent, through Substack's own subscriber import.
- Does it need my password?
- No. We never ask for your Substack login or session. We read your public RSS feed and the export files you download from your own Substack settings and upload to us.
- Is this affiliated with Substack?
- No. newsletterapi.io is an independent tool for Substack writers. It is not made, endorsed or approved by Substack, Inc.