Skip to content

regen-dev/save-to-markdown

Repository files navigation

Save to Markdown

A minimal Chrome extension that converts any web page to clean Markdown with a single click. Built for Obsidian users, but works for anyone who wants readable Markdown from the web.

Features

  • One-click conversion - click the icon, get Markdown
  • Clean output - extracts article content, strips ads/nav/clutter using Mozilla's Readability
  • GFM support - tables, strikethrough, task lists via Turndown + GFM plugin
  • Obsidian-ready - YAML frontmatter with title, source URL, and date
  • Save or copy - download as .md file or copy to clipboard
  • Preview - expandable preview of the generated Markdown
  • No external APIs - everything runs locally in the browser
  • Minimal permissions - only activeTab + scripting (no background access to your browsing)

Install

From GitHub Releases

  1. Download the latest save-to-markdown-chrome-mv3.zip from Releases
  2. Extract the zip
  3. Open chrome://extensions
  4. Enable Developer mode
  5. Click Load unpacked and select the extracted folder

Build from source

git clone https://github.com/regen-dev/save-to-markdown.git
cd save-to-markdown
pnpm install
pnpm build

Then load .output/chrome-mv3/ as unpacked extension in Chrome.

Usage

  1. Navigate to any article or page you want to save
  2. Click the Save to Markdown extension icon
  3. Click Save .md to download or Copy to clipboard

The generated Markdown includes YAML frontmatter:

---
title: "Article Title"
source: "https://example.com/article"
date: 2026-03-07
---

Tech Stack

Component Role
WXT Extension framework (Vite-based, Manifest V3)
Turndown HTML to Markdown conversion
turndown-plugin-gfm GitHub Flavored Markdown support
Readability.js Article content extraction (by Mozilla)

Architecture

popup click
   |
   v
scripting.executeScript  -->  grabs page HTML + title + URL
   |
   v
DOMParser + Readability  -->  extracts clean article HTML
   |
   v
Turndown + GFM plugin    -->  converts to Markdown
   |
   v
download .md / clipboard

Everything runs in the popup context. No content scripts, no background service worker, no external requests.

Permissions

Permission Why
activeTab Access the current tab's content when you click the icon
scripting Inject a minimal script to read the page HTML

No <all_urls>, no persistent background, no data collection.

License

MIT

About

Minimal Chrome extension to save web pages as clean Markdown for Obsidian

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors