Clipper performs no analytics, no telemetry, and requires no account. The free edition is open source under MIT — every claim on this page is auditable in the repository.
Markdown Web Clipper ("the extension") is a Chrome extension that converts the page you are looking at into a Markdown file and saves it where you choose. The extension is local-first: it does not have a cloud backend, no analytics, no telemetry, and no remote calls beyond the narrowly-scoped cases listed below in Remote calls.
This policy describes exactly what the extension reads, writes, and sends, and how to control or remove that data. The repo-source version of this document at PRIVACY.md is the single source of truth; the rendered version on this page is a copy maintained alongside it. The GitHub PRIVACY.md is the authoritative version.
Data we read
The extension only reads page data when you invoke the clipping action (toolbar click, keyboard shortcut, or context menu). It does not run on any tab you have not explicitly clipped, and the manifest does not request <all_urls> at install time.
When you invoke a clip, the extension reads:
- Page HTML — the DOM of the active tab at the moment of the click, passed to Defuddle (extraction) and Turndown (HTML→Markdown) inside an offscreen document running locally in your browser.
- Current tab URL — used as the source/canonical URL in the generated Markdown frontmatter.
- Page metadata —
<title>,<meta>tags,<link rel="canonical">, Open Graph tags, JSON-LD blocks. All used to populate the Markdown frontmatter.
Multi-tab batch clipping requires the optional <all_urls> permission, which is off by default and only granted at runtime when you explicitly enable Settings → Privacy → Multi-tab batch. You can revoke it at any time from the same toggle or from chrome://extensions.
Data we write
The extension persists data in four locations, all on your device:
chrome.storage.local— clipping templates, custom site rules, the cached license status (paid / grace-until / last-verified timestamps), the chosen FSA vault folder reference, the debug-log ring buffer, and your image-mode preference (inline / reference / co-located).chrome.storage.sync— small (~≤8 KB) general settings (UI language, default destination, default frontmatter, keyboard shortcut overrides). Synced by Chrome across devices signed in to the same Google account; the extension does not read or transmit this data anywhere else.IndexedDB(viaidb) — theFileSystemDirectoryHandlefor your chosen vault folder, plus highlights and clip history if enabled.- The folder you chose — the converted Markdown files (and co-located image files when image mode is co-located) are written to whichever directory you granted the extension write access to via the File System Access picker. The extension cannot read or write any file outside that folder.
GitHub Personal Access Tokens for the Gist destination are stored in chrome.storage.session by default (cleared when the browser closes). You may opt-in to chrome.storage.local persistence; toggling that option back off cascades a purge of the persisted token.
Remote calls
The extension makes exactly five kinds of remote calls. All are listed below verbatim; nothing else leaves your device.
- Image fetches — when image mode is
referenceorco-located, the extension fetches images from their original source domains (i.e., wherever the page's<img src>already pointed). No extension-specific headers are added; the request mode isno-cors. These are the same network calls your browser would have made when loading the page; the extension does not reach any server beyond the image's own host. - GitHub Gist API (optional) — only when you choose the Gist destination AND provide a Personal Access Token. The extension posts your converted Markdown to
https://api.github.com/gistsusing the PAT as theAuthorizationheader. The PAT is stored inchrome.storage.sessionby default; an opt-in setting persists it tochrome.storage.localand a cascade-purge runs on toggle-off. - Obsidian URI handoff — when the destination is "Obsidian", the extension dispatches an
obsidian://new?vault=…&file=…URL viachrome.tabs.update. This is a local OS scheme; no remote call occurs. Your Obsidian app handles the URL on-device. - License verification — at most once per hour, the service worker calls
https://api.markdownwebclipper.com/api/license/checkto refresh the cached Pro license state. This is a developer-controlled Cloudflare Worker that proxies the upstream license validation request to DodoPayments. The request body contains only the locally-stored DodoPayments license key and a per-install instance UUID; no email, no analytics identifier, no telemetry. The Worker stores hashed-email → license_key mapping in Cloudflare Workers KV; raw email addresses are NEVER logged. - License restore (magic link) — when you use Settings → Pro → Restore Purchase, the extension POSTs your email to
https://api.markdownwebclipper.com/api/restore. If a Pro license is registered to that email, the Worker sends a one-time magic-link email via Resend (10-minute expiry, single-use). Per privacy posture, the response is identical whether the email is registered or not — we do not confirm registration status to defeat email enumeration. Per-email rate-limit (60 seconds) prevents abuse. - Uninstall survey URL (
chrome.runtime.setUninstallURL) — when you uninstall the extension viachrome://extensions, Chrome itself opens a Tally form in a new tab asking why. This is a Chrome platform feature, not a Clipper-initiated remote call. The URL is set once at service-worker activation; you can close the form tab without submitting. The form is unauthenticated and collects only the fields you choose to fill in. Tally privacy policy: tally.so/help/privacy-policy.
Image viewer notes
This is product behavior, not a privacy or data disclosure — included here so the choice is documented in one place.
Remote images in downloaded .md files: by default, Clipper writes image URLs as  (reference mode — zero network use during clipping, fastest output). When you open the .md in a viewer that does not fetch remote URLs (e.g. macOS Preview, QuickLook, some plain-text editors), the images appear blank. Network-capable viewers (Obsidian, browsers, most Markdown editors) render them correctly. To embed images directly into the .md so they work in every viewer offline, change Image Handling mode to "Base64 inline" in Settings.
Freemium model & refund policy
Markdown Web Clipper is freemium from v1. Core clipping functionality is free for everyone, forever, with no time limit and no feature degradation:
- Single-page clipping to inline image mode, to clipboard, to download, or to your FSA folder.
- Built-in templates and built-in site rules.
- Obsidian URI destination.
Pro features require a one-time purchase via DodoPayments (merchant of record, hosted checkout at checkout.dodopayments.com):
- Multi-tab batch (more than 3 tabs at once)
- Co-located image mode (binary image files alongside the
.md) - GitHub Gist destination
- Custom site rules (yours, not the built-in set)
- Custom templates (yours, not the built-in set)
Pricing: $9 launch for the first wave, $19 lifetime thereafter. Single one-time payment; no subscription; no recurring charges.
Refund policy: 14-day money-back guarantee. Email support@markdownwebclipper.com from the address you used at checkout, within 14 days of purchase, for a full refund — no questions asked. Refund propagation may take up to ~37 days to clear the local license cache by design (a 30-day local grace window protects offline users from spurious downgrades); the refund itself is processed immediately.
Your control
You can remove or restrict any of the data above at any time:
- Revoke FSA folder access — Settings → Destinations → "Forget vault folder" (also available from
chrome://settings/content/allby removing the host's File System Access permission). - Clear all stored data — Settings → Advanced → "Reset all data". This wipes
chrome.storage.local,chrome.storage.sync,chrome.storage.session, and the IndexedDB store. The folder contents on disk are not touched (you can delete those manually). - Revoke
<all_urls>(multi-tab) — Settings → Privacy → "Multi-tab batch" toggle off. Equivalent to revoking the optional permission fromchrome://extensions. - Revoke license — email support@markdownwebclipper.com to request a refund or license cancellation. DodoPayments, the merchant of record, processes these.
- Uninstall — removes the extension and clears all
chrome.storage.*data. The contents of the FSA folder remain on disk; the IndexedDB store is removed by Chrome.
Contact
Questions, refund requests, security reports, or trademark concerns: support@markdownwebclipper.com.