Mahope tools: EUComply Clean Copy DeskUptime Transmute BugBottle All tools

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.

One address — an article or a documentation page works best. We add https:// if you leave it out. The fetch goes through our server, which is also why a page behind a login or a paywall comes back empty. The conversion then runs in this tab.

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

  1. Download clean-copy-v1.5.3.zip and unzip it.
  2. Open chrome://extensions and turn on Developer mode.
  3. Click Load unpacked and pick the unzipped folder.

Firefox

  1. Download clean-copy-firefox-v1.5.4.zip and unzip it.
  2. Open about:debugging#/runtime/this-firefox, click Load Temporary Add-on and pick manifest.json.
  3. 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

Free and Clean Copy Pro, side by side
PlanFreeClean Copy Pro
What you get
  • Every conversion mode in the extension and on the web tool
  • No limit on how much text you paste
  • Batch conversion
  • Custom cleanup rules
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.

Buy Clean Copy Pro — $19/year

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.