till fe9401c38f Klarbild-Design, neues Logo, Ein-Klick-Einfügen, mobil überarbeitet, Spenden-Knopf
- Design auf Klarbild-Tokens umgestellt: Space Grotesk/Mono, Papier/Karte, Blau, Pills
- Neues Logo und App-Icon: Klemmbrett mit Pfeil (Zwischenablage -> Datei)
- Einfügen-Knopf liest die Zwischenablage direkt (HTML bevorzugt), Fallback-Hinweis
- Mobil: 44px-Ziele, 16px-Eingaben, Safe-Area, Bottom-Sheet, Datei öffnen, Speichern per Teilen-Menü
- Spenden-Knopf (PayPal) in Kopfzeile, Fußzeile und Rechtstexten; Datenschutz um PayPal und Zwischenablage ergänzt
- Service Worker: Seiten network-first (Impressum/Datenschutz froren im Cache ein), Cache v4
- nginx: no-cache für Seiten
- Listen mit einem Leerzeichen nach dem Aufzählungszeichen
2026-09-16 12:21:06 +02:00
2026-08-11 11:13:42 +00:00

clip2md — Paste to Markdown

Paste a long Reddit thread, an article, or any formatted web content, and save it as clean Markdown in one click. Works on desktop and phone. Runs entirely in your browser: nothing is uploaded, no account, no tracking, works offline.

Live demo: https://clip2md.heidrich-digital.de

clip2md

clip2md on a phone

Why

Copying from the web and getting usable Markdown is usually two or three tools and a lot of cleanup. clip2md collapses that into: paste, press save. Rich HTML from the clipboard is converted to tidy Markdown automatically (via Turndown with GitHub-flavored tables, strikethrough and task lists); plain text is kept verbatim. The filename is proposed for you from the first heading plus the date, so it drops straight into an Obsidian vault, a wiki, or a repo.

Features

  • One-click paste. The Paste button reads the clipboard directly (Async Clipboard API) and picks the HTML version when there is one. Browsers ask once for permission; ⌘V always works too.
  • Smart paste. Formatted HTML (copy from a browser, e.g. Reddit ⌘A → ⌘C) is converted to clean Markdown. Plain text stays raw. Same ⌘V for both, no mode switch.
  • Force raw. ⌘/Ctrl+Shift+V pastes the next clip as plain text, skipping conversion.
  • Live preview. Toggle a side-by-side rendered Markdown view (marked + DOMPurify).
  • Auto filename. Derived from the first heading + date, e.g. 2026-08-11-my-thread.md. Editable — once you type your own, it stops overwriting. Switch to a date+time pattern in settings.
  • YAML front matter. Optional: prepend title, date, source URL and tags for knowledge bases like Obsidian.
  • Conversion options. Links as plain text, strip images, bullet marker (- / * / +), heading style (ATX # / Setext).
  • Open & drop files. Pick or drop an .html, .md or .txt file to load or convert it.
  • Mobile-first. 44 px touch targets, 16 px inputs (no iOS zoom), safe-area aware, settings as a bottom sheet; Save hands the file to the share sheet (Files, Obsidian, mail) on phones.
  • Bilingual. English and German, switchable in the header.
  • Light & dark. Warm paper, one strong blue, clipboard logo; dark mode one click away.
  • Save / copy / clear, word + character count and reading time.
  • Installable PWA, fully offline after first load.

Everything is client-side. No servers, no CDNs, no third-party requests — GDPR-friendly by construction.

Keyboard shortcuts

Action Shortcut
Save .md ⌘/Ctrl + S
Paste (smart) ⌘/Ctrl + V
Paste raw ⌘/Ctrl + Shift + V
Close settings Esc

Tech

  • Single self-contained index.html (inline CSS/JS, OKLCH tokens, Space Grotesk + Space Mono).
  • Vendored, no CDN: Turndown + GFM plugin, marked, DOMPurify, fonts — all under vendor/.
  • Served by nginx:alpine (Dockerfile + nginx.conf) with a service worker for offline use (network-first for pages, cache-first for static assets).
  • No build step, no backend, no database.

Run locally

docker build -t clip2md .
docker run --rm -p 8080:80 clip2md   # http://localhost:8080

Or just open index.html in a browser (the service worker only registers over http/https).

Self-host

Any static host works — point it at this repo. The reference deployment uses Coolify with a Dockerfile build and a reverse proxy for TLS.

Update vendored libraries

npm pack turndown turndown-plugin-gfm marked dompurify @fontsource/space-grotesk @fontsource/space-mono
# turndown/dist/turndown.js                    -> vendor/turndown.js
# turndown-plugin-gfm/dist/turndown-plugin-gfm.js -> vendor/turndown-plugin-gfm.js
# marked/lib/marked.umd.js                     -> vendor/marked.umd.js
# dompurify/dist/purify.min.js                 -> vendor/purify.min.js
# @fontsource/*/files/*-latin-{400,500,700}-normal.woff2 -> vendor/fonts/

Bump the CACHE constant in sw.js whenever an asset changes so clients pick it up.

License

MIT. Turndown, marked, DOMPurify, Space Grotesk and Space Mono are under their respective MIT/Apache/OFL licenses.

Support

clip2md is free. If it saves you time: buy me a coffee via PayPal.

S
Description
clip2md — Paste to Markdown. Reinpasten, ein Klick, .md speichern. (clip2md.heidrich-digital.de)
Readme MIT
1.2 MiB
0 Stars 1 Watchers 0 Forks
Languages
HTML 84.3%
JavaScript 10.6%
CSS 4.6%
Dockerfile 0.5%