Google Docs, Notion, or Obsidian to Substack: How to Paste Without Breaking Formatting
Very few people write directly in Substack’s editor. Most drafts start in Google Docs, Notion, or Obsidian, and the trouble starts when you paste.
Writers name the pain points directly. One wrote that footnotes are “the real gdocs -> substack pain point.” Another, posting a paper with footnotes, said “the footnotes are a problem.” Obsidian users trade tips like copying as HTML to keep structure.
The paste fails for the same reason in all three: Substack wants rich text, and these tools hand it something else. Tables have nowhere to land. A Markdown note pastes as literal #, **, and | characters. DownStack is the step in between.
Paste into DownStack, then into Substack
DownStack takes Markdown. You paste the draft, check a live preview, and click Copy for Substack. The preview shows headings, bold, italics, links, lists, blockquotes, code blocks, and tables. The copy click puts that rich text on the clipboard and draws each Markdown table as a hosted image, so the table survives the email and the web.
- Get the draft as Markdown. The path depends on the app, and the next sections cover each one.
- Paste it into the DownStack editor.
- Check the preview, including every table.
- Click Copy for Substack and paste into Substack.
Two things still happen inside Substack, because DownStack does not convert them: footnotes, and math. Add footnotes with Substack’s footnote tool, and add equations with Substack’s LaTeX block. See the footnotes guide and LaTeX and math in Substack.
If the draft is sitting in ChatGPT instead of one of these apps, the DownStack app in ChatGPT converts that Markdown to HTML you can paste, and turns tables into PNGs on downstack.app. It does not publish the post. Those chat images are kept for 90 days, so use the editor’s Copy for Substack for the version that stays online.
Google Docs to Substack
Usually survives a direct paste: headings, bold, italics, links, bulleted and numbered lists, and often images.
Usually breaks:
- Tables. Substack has no table block, so Docs tables come through as loose text or get dropped.
- Footnotes. Google Docs footnotes don’t become Substack footnotes.
- Comments and suggestions. Accept or resolve them first, or stray text may come along.
Pasting the Doc straight into DownStack does not fix this. The editor is a Markdown box, so a rich-text paste lands as plain text and the bold and headings disappear.
The path that keeps the structure: Google’s help documents File → Download → Markdown (.md). Paste that file into DownStack, check the preview, click Copy for Substack, and paste into Substack. Then re-add footnotes there. Re-check images, and see how to format tables in Substack if a table needs a second look.
Notion to Substack
Usually survives a direct paste: headings, text formatting, lists, links, and quotes.
Usually breaks:
- Tables and databases. Same problem: there’s nowhere in Substack for them to land.
- Toggles, callouts, and columns. These Notion-specific blocks have no Substack equivalent.
- Embeds. Re-embed in Substack where supported.
The path that keeps the structure: export the page as Markdown, paste it into DownStack, and click Copy for Substack. Standard Markdown comes through formatted, and Markdown tables become hosted images. Toggles, callouts, columns, and embeds still need a manual pass after you paste. A database only survives if the export actually contains a Markdown table.
Obsidian (and other Markdown editors) to Substack
The problem: Obsidian stores notes as Markdown. If you copy the source into Substack, you get literal #, **, and | characters. Its editor doesn’t parse pasted Markdown.
Also left behind:
- Wikilinks (
[[Note]]), which point to your vault, not the web. - Footnotes (
[^1]) and math ($...$), which neither Substack nor DownStack will turn into Substack’s own footnote and LaTeX blocks.
The path that keeps the structure: replace wikilinks with real URLs, paste the note into DownStack, check the preview, and click Copy for Substack. Then add footnotes and equations in Substack.
Quick reference
| Element | Direct paste from Docs or Notion | Raw Markdown paste | Through DownStack |
|---|---|---|---|
| Headings, bold, lists | Mostly OK | Literal symbols | Formatted |
| Tables | Breaks | Breaks | Hosted images |
| Footnotes | Re-add in Substack | Re-add in Substack | Re-add in Substack |
| Images | Check each | Re-upload | Check each |
Docs and Notion reach the DownStack column only after you export Markdown. Obsidian is already there.
A pre-publish checklist
- The draft went through DownStack, and you pasted from Copy for Substack.
- Headings use Substack’s heading styles, not just big bold text.
- Every table is a readable image with alt text.
- Footnotes were re-added in Substack.
- Every image loads and has alt text.
- Links point to public URLs, not to your notes app.
- You sent yourself a test email and read it on your phone.
Key Takeaways
- Direct paste from Google Docs, Notion, or Obsidian is where formatting breaks, especially tables and Markdown source.
- Export or copy Markdown, paste it into DownStack, and click Copy for Substack. That is the paste.
- Footnotes and math are still added inside Substack. Notion-only blocks and embeds need a manual pass.
- In ChatGPT, the DownStack app converts Markdown in the chat. Its table images last 90 days, so the editor is the copy step for a post you keep.
For a deeper walkthrough, read our complete Markdown-to-Substack guide and Substack writing workflow best practices.