Copy any web page as clean Markdown or plain text.
Clean Copy takes what you select in the browser — or a whole page, or an HTML file — and gives you Markdown that pastes correctly into Obsidian, a README, a ticket or an email. Smart quotes, zero-width characters and layout junk are removed on the way.
Free and MIT-licensed. Your text is converted on your own machine — no account, no server. The one exception is the URL converter above: our server reads that page once, because a browser cannot fetch a page on another domain itself. A Pro license key is checked online against mahope.tools.The free version is complete, not a trial. See what Clean Copy Pro — $19/year adds, side by side.
Or paste what you already copied
Copy a table, a code block or part of an article on any page, then paste it here. It is the same converter as above, running in this tab, and the result is Markdown you can paste straight into Obsidian, a README, a ticket or an email.
What it does
Select text on a page, right-click, choose Copy as Markdown or Copy as clean text. Or press Ctrl+Shift+C. The same converter runs in the terminal:
$ curl -sL https://example.com/article | clean-copy # Article title Paragraphs come out as paragraphs. Links become [text](url), headings keep their level, code blocks are fenced, and tables become pipe tables with the original column alignment. $ clean-copy --url https://example.com/docs --text > docs.txt
- Markdown that matches the page
- Headings, lists, links, images, bold and italic, fenced code blocks with language tags, tables with alignment, ordered lists that keep their start number.
- Typographic clean-up
- Curly quotes become straight quotes, non-breaking spaces become spaces, zero-width and other invisible characters are dropped.
- Plain-text mode
- When you only want the words: no Markdown syntax, just paragraphs and line breaks.
- Nothing leaves your machine
- The converter is a small JavaScript file with no runtime dependencies. The extension has no server; the CLI only opens a network connection if you pass
--url. The one exception is a Pro license key, which is validated online — see the privacy question below.
Who it is for
People who move text from the web into something else every day: developers writing docs and tickets, researchers keeping notes in Obsidian, writers pasting sources into a draft, and anyone who has pasted from a web page into a code editor and got a curly quote in a string literal.
It is one converter shipped in seven forms, so you can use the same behaviour wherever you happen to be:
- Chrome / Edge / Brave extension v1.5.3
- Firefox extension v1.5.4, named Clean Copy MD
- Command-line tool Homebrew or npm
- Obsidian plugin paste as Markdown
- VS Code extension paste as Markdown
- GitHub Action convert URLs or files in CI
- Web tool and bookmarklet no install
Install
The extensions are not in the Chrome Web Store or on addons.mozilla.org yet, so they are installed from a zip. That takes about a minute and does not require a developer account.
Chrome, Edge, Brave
- Download clean-copy-v1.5.3.zip and unzip it.
- Open
chrome://extensionsand turn on Developer mode. - Click Load unpacked and pick the unzipped folder.
Firefox
- Download clean-copy-firefox-v1.5.4.zip and unzip it.
- Open
about:debugging#/runtime/this-firefox, click Load Temporary Add-on and pickmanifest.json. - Temporary add-ons are removed when Firefox closes. A signed build for addons.mozilla.org is in progress.
Command line
brew install mahope/tap/clean-copy # macOS / Linux
npm install -g github:mahope/clean-copy-cli
npx github:mahope/clean-copy-cli page.html # run without installing
Reads stdin or a file, writes Markdown to stdout. --url fetches a page and keeps the main article, --text gives plain text, --copy puts the result on the clipboard. Full reference: CLI options.
Obsidian
Add mahope/clean-copy-obsidian through BRAT, or copy main.js, manifest.json and styles.css from the latest release into .obsidian/plugins/clean-copy-obsidian/. Then paste with Ctrl+Shift+V. Community-plugin listing is pending.
VS Code
Download the .vsix from the latest release and run code --install-extension clean-copy-1.0.0.vsix, or use Install from VSIX in the Extensions view. Paste HTML as Markdown with Ctrl+Shift+V.
GitHub Action
- uses: mahope/clean-copy-cli@v1
with:
url: https://example.com/changelog
output_file: docs/changelog.md
Also accepts file: or raw html: input and four output modes: markdown, plain, wikilinks and csv.
No install
The web tool converts pasted HTML or rich text in the browser tab. The bookmarklet works in any browser. There is also a small URL to Markdown page and an HTTP API for scripts that cannot run Node. Agents get the same four tools over the passiv-mcp server — it is listed in the official MCP Registry and needs no API key.
Price
| Plan | Free | Clean Copy Pro |
|---|---|---|
| What you get |
|
|
| Price | $0no licence key needed | $19/year |
$39 once — lifetime, first 100 purchases · One licence covers 5 devices.
Batch conversion is web-tool only. Custom cleanup rules are in the browser extension and the Obsidian plugin — the CLI and the VS Code plugin have none
Free. Every surface is MIT-licensed and the full source is on GitHub. The free version is complete, not a trial. You get every conversion mode in the extension and on the web tool, and no limit on how much text you paste.
Clean Copy Pro — $19/year adds two things to the free version: batch conversion of many snippets at once in the web tool, and custom cleanup rules you define once in the browser extension or in the Obsidian plugin, and reuse on every copy. Pro also buys you a year of major updates, and your license helps fund development of the free version. One license covers 5 devices.
Or pay once: Clean Copy Pro Lifetime — $39 once, forever. The same Pro license and the same 5 devices, but the key never expires and nothing renews. It is a founding price for the first 100 purchases only; after that, Pro is the yearly plan above.
Buy Clean Copy Pro Lifetime — $39 once
Secure checkout via Stripe. Your license key arrives by email and on the thank-you page; activate it wherever you use Clean Copy — the activation guide covers the extension, Obsidian and the web tool.
Questions
Why is the extension not in the Chrome Web Store?
The store listing needs a developer account and a review cycle that I have not finished. Loading the unpacked folder gives you exactly the same code; the store version will be identical when it lands.
Does it send my text anywhere?
The text you convert does not. The extension has no background server, and while you copy, it makes no network request at all. The CLI only makes a request when you ask it to fetch a URL. The URL converter at the top of this page is the one exception on this site: it sends the address you type to our server once so it can fetch that page, because a browser cannot fetch a third-party page itself. The HTML comes back and is converted here, in your tab — we do not store the address or the page. The paste converter further down sends nothing at all.
One exception: if you activate a Clean Copy Pro license key, the key and a random device id are sent to mahope.tools so the license can be validated. The pages you visit and the text you copy are never sent. Without a Pro key, nothing is sent at all.
How good is the Markdown?
Good on articles, documentation and most tables; it preserves column alignment, language tags on code blocks and nested lists. It is not a browser rendering engine, so heavily scripted pages or content injected after load can come out incomplete. Paste the result into the web tool if you want to see what the converter does with a specific page before installing anything.
Chrome shows a warning about developer-mode extensions.
That warning appears for every unpacked extension. It goes away once the store listing exists. You can read the whole extension — it is a few files with no build step.
Can I use the converter in my own project?
Yes. clean-copy-core.js is a single dependency-free module under the MIT license. The CLI, the extensions and the plugins all import it unchanged, and a parity test keeps them from drifting apart.
Who makes this
Clean Copy is built and maintained by Mads Holst Jensen, an independent developer in Odense, Denmark, working as mahoje.dk. It started as a fix for a personal annoyance — pasting from web pages into Obsidian — and grew into the set of tools above. Bug reports and pull requests are welcome on GitHub.
Related reading: HTML to Markdown from the terminal, pasting into Obsidian as clean Markdown, keeping table alignment in Markdown.