Render the Markdown as rich HTML first, copy the document title and body separately, then paste the prepared body into a desktop Substack draft. StackDraft does that locally in your browser and converts fragile tables and Mermaid diagrams into image-based blocks before the copy step.
StackDraft runs locally in your browser. No account or upload required.
Why Markdown needs a conversion step
Substack offers several Markdown-like typing shortcuts—for example, typing a hash and a space can create a heading—but its support documentation distinguishes those shortcuts from full Markdown document support. A shortcut changes the current block as you type. It does not parse an entire pasted .md file with all of its links, tables, fenced code, and images.
The robust handoff format is rich text on the clipboard. It gives the destination editor headings, paragraphs, links, lists, and code as structured HTML while also keeping a plain-text fallback. The final Substack draft still needs a visual check because the destination editor decides which styles and blocks it preserves.
Convert a Markdown draft to Substack in six steps
- 01
Finish the content in your usual editor
Write in Obsidian, VS Code, Cursor, or another Markdown tool. Use one H1 for the post title and H2/H3 headings for the body.
- 02
Resolve local-only syntax
Convert wiki links, transclusions, custom callouts, and local image references into ordinary links, prose, or hosted images before the publishing handoff.
- 03
Load the Markdown into StackDraft
Paste the draft, drag in the .md file, or use the file picker. The editor renders a live preview without uploading the draft.
- 04
Review the compatibility checks
Fix missing image descriptions, heading jumps, wide tables, long code blocks, SVG images, and other patterns that can fail in an email.
- 05
Copy title, then copy body
Paste the plain title into Substack’s title field and the prepared rich-text body into the post editor. This avoids leaving a duplicate H1 at the top of the article.
- 06
Preview the actual send
Check the web preview and send a test email. Open it on a narrow phone screen, click every important link, and inspect every converted asset.
What happens to each Markdown element?
| Markdown element | Prepared output | What to verify in Substack |
|---|---|---|
| Headings | Structured H1–H3 content | Only one title; no skipped heading levels |
| Bold, italic, links | Rich inline formatting | Links open the intended public URL |
| Bulleted and numbered lists | Nested list markup | Indentation remains readable in email |
| Fenced code | Preformatted code block | Long lines do not dominate the phone layout |
| GFM table | High-resolution image on copy | Text size and alt text |
| Mermaid fence | Rendered PNG diagram | Labels, contrast, and asset transfer |
| KaTeX math | Rendered preview markup | Every formula survives the final paste |
| Local image path | Compatibility warning | Replace it with an available image |
Use portable Markdown before you convert
- Put the publication title in a single H1 on the first meaningful line.
- Use descriptive link text instead of raw URLs when the destination matters.
- Give every image concise alt text inside the Markdown brackets.
- Add a language after each code fence when syntax highlighting helps comprehension.
- Avoid raw HTML for layout; destination editors and email clients routinely sanitize it.
- Keep newsletter tables compact and explain the takeaway in surrounding prose.
- Use public image URLs or upload images during the final Substack review.
# A clear post title
One-sentence promise for the reader.
## The problem
Explain the context in short paragraphs.
## The solution
1. First useful step
2. Second useful step
3. Verification step
## What to remember
End with the practical takeaway.Fix the most common paste problems
- 01
Raw Markdown is showing
Copy from StackDraft’s prepared body action, not from the Markdown source pane. Substack does not parse a complete pasted Markdown document.
- 02
The title appears twice
Use Copy title for the title field and Copy body for the editor. StackDraft removes the first H1 from the copied body.
- 03
An image is missing
A local relative path only exists on your computer. Upload the source image to Substack, use a public URL, or export and insert the generated asset.
- 04
Code or a diagram is hard to read
Shorten long lines, reduce diagram complexity, increase label contrast, and split a large technical artifact into focused pieces.
- 05
Formatting looks different in email
Treat Substack’s email preview as the final renderer. Simplify any block whose meaning depends on exact spacing, width, or custom styles.
The five-minute pre-publish checklist
- Title is present once and matches the promise in the opening paragraph.
- Heading order forms a useful outline when read by itself.
- Links use public URLs and open correctly.
- Images have useful descriptions and are not carrying essential text alone.
- Tables remain legible at phone width.
- Code blocks wrap or scroll without forcing the whole email wider.
- A test email looks correct in both light and dark viewing environments.
- The post still makes sense when optional decorative formatting is removed.
Frequently asked questions
Does Substack support Markdown files?
Substack’s support documentation says the post editor does not support Markdown. It offers some Markdown-like typing shortcuts, but a complete .md document should be rendered to rich text before you paste it.
Can I import an Obsidian or VS Code Markdown file directly?
Not as a fully parsed Markdown post. Load the file into a converter such as StackDraft, resolve local-only links and images, then paste the prepared title and body into Substack.
Will Markdown links and lists survive the conversion?
Standard links, paragraphs, headings, emphasis, and lists convert well to rich text. Always verify the final Substack draft because it controls the last sanitization and email rendering step.
Is StackDraft uploading my unpublished post?
No. StackDraft performs editing, preview, conversion, and draft persistence in your browser. The publishing handoff happens through your clipboard or an exported file.
Sources and further reading
Turn the Markdown draft into clean Substack copy.
Preview the post, catch fragile blocks, and copy the title and body separately.
Open StackDraft free