Why “just copy it” produces messy markdown
ChatGPT writes its answers in markdown, so converting them to markdown sounds like a non-task. In practice three things get in the way. The copy button under each answer now places two versions on the clipboard, a rich-text one and a markdown one, and any app with a visual editor takes the rich one: Notion turns it into blocks with stray styling, Obsidian’s live preview pastes a mix, Google Docs renders it as formatting rather than markdown. Selecting the text with the mouse gives you the markdown, but it is ChatGPT’s dialect: bullets are sometimes * and sometimes -, nested lists use three-space indents that some renderers ignore, a bold line often stands in for a heading, and heading levels can jump from ## to ####. And both versions carry the residue — non-breaking spaces, the narrow space in “3 PM”, zero-width characters and, after a web search, citation markers — that makes a committed file look wrong in a diff.
This page takes either version, rebuilds the document in a visual editor, and writes it back out in one consistent markdown dialect. The result is what you would have typed by hand: hyphen bullets, two spaces of nesting, real headings, fenced code with a language tag and no invisible characters.
What the markdown looks like
Copy writes CommonMark with GitHub-style strikethrough, which is the subset every renderer agrees on:
## Project plan
A **bold** and *italic* and ~~struck~~ line with `code` and a [link](https://example.com).
- first point
- second point
- nested point
1. step one
2. step two
> a quoted line
```js
const x = 1;
```
Underline has no markdown form and is dropped to plain text rather than written as something non-standard. Spoilers, which exist only on Reddit and Discord, are not part of this dialect either; the Reddit and Discord formatters write those flavours.
Where the markdown goes
Obsidian, Logseq, Bear and other note apps. Paste into a note in source mode and it renders as written. Because the dialect is plain CommonMark, the note stays portable if you move vaults or apps.
GitHub and GitLab. Issues, pull-request descriptions, wiki pages and README files. Fenced code blocks keep their language tag so syntax highlighting works, and lists nest correctly in the preview.
Notion.Notion converts pasted markdown text into blocks — headings, lists, quotes and code — which is often cleaner than pasting ChatGPT’s rich version directly. If you want the rich route instead, the Notion formatter handles that.
Static sites and documentation. Jekyll, Hugo, Astro, Docusaurus, MkDocs and the rest all read CommonMark. Paste the markdown under your front matter and build.
Anywhere you keep .md files. VS Code, a Git repository, a knowledge base. The output has no trailing spaces or invisible characters, so it diffs cleanly.
Rich text in, markdown out
The editor does not care where the formatting came from. Copy a section of a Word document, a Google Doc, a Confluence page, a formatted email or an article in your browser, paste it here, and Copy gives you markdown for it. Headings map to # levels, bold and italic to asterisks, bulleted and numbered lists to their markdown forms, block quotes to >, and hyperlinks to [text](url). Background colours and font changes are discarded on paste, because markdown has no way to express them and you would not want them in a file anyway. This is the route people use to move an old Docs archive into Obsidian or a wiki into a repository, one page at a time.
Markdown the other way
If the problem is the opposite — you have markdown and need it gone — the strip markdown tool reduces it to plain text with the code blocks kept intact. For destinations that render rich text rather than markdown, the Word and Google Docs converters put real formatting on the clipboard instead of markup.
Private and free
The conversion runs in your browser with client-side JavaScript. Your text is never sent to a server, stored or logged. No account, no limits, no watermark.