Markdown Printer
Save web pages as Markdown files with preserved formatting. Zero setup required - just install and start saving!
Perfect for documentation, articles, and note-taking.
β¨ Features
- π No setup required - works immediately after installation
- π Preserves formatting (headers, links, code blocks, lists, tables)
- πΎ Save anywhere with familiar "Save As" dialog
- β‘ Fast client-side conversion using Turndown.js
- π― Right-click menu + extension popup
- π Adds metadata (source URL, save date) to saved files
π― Installation
Chrome
Install from Chrome Web Store β
Edge
Firefox
Install from Firefox Add-ons β
Manual Installation (For Development)
Note: The
extension-chrome/andextension-firefox/directories are generated by the build script. Runpnpm install && pnpm run buildafter cloning.
Chrome/Edge:
- Clone this repository, then run
pnpm install && pnpm run build - Open Chrome/Edge and navigate to
chrome://extensions/oredge://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked"
- Select the
extension-chrome/directory - Done! π
Firefox:
- Clone this repository, then run
pnpm install && pnpm run build - Open Firefox and navigate to
about:debugging - Click "This Firefox" in the left sidebar
- Click "Load Temporary Add-on"
- Navigate to the
extension-firefox/directory and selectmanifest.json - Done! π
π Usage
Method 1: Right-Click Menu
- Navigate to any webpage
- Right-click anywhere on the page
- Select "Save as Markdown"
- Choose where to save in the dialog
Method 2: Extension Icon
- Navigate to any webpage
- Click the Markdown Printer icon in the toolbar
- Click "Save Page as Markdown"
- Choose where to save in the dialog
π Output Format
Files are saved with the format: Page-Title-YYYY-MM-DD.md
Example:
# Getting Started Guide
**Source:** https://example.com/docs/getting-started
**Saved:** 2025-10-01T12:00:00.000Z
_Generated with [markdown-printer](https://github.com/levz0r/markdown-printer) (v1.1.0) by [Lev Gelfenbuim](https://lev.engineer)_
---
[Your page content in Markdown format]
π§ Pro Version
Need advanced features? Check out the Pro Version in the extension-pro/ folder:
- β Custom save location (no dialog every time)
- β Auto-open files in your editor after saving
- β Folder browser to pick save location
- β Persistent settings
Trade-off: Requires additional setup (native messaging host installation)
See Pro Version README for installation instructions.
π Comparison
| Feature | Standard | Pro |
|---|---|---|
| Installation | One-click | Requires setup script |
| Browser Support | Chrome, Edge, Firefox | Chrome, Edge, Firefox |
| Save location | Choose each time | Configurable default |
| Auto-open files | β | β |
| Settings | β | β |
| Chrome Web Store | β Available | β Can't publish |
| Edge Add-ons | β Available | β Can't publish |
| Firefox Add-ons | β Available | β Can't publish |
π οΈ Technical Details
- Extension Type: Manifest V3
- Conversion: Turndown.js (client-side)
- Permissions: activeTab, downloads, scripting, contextMenus
- File Format: Markdown (.md)
- Browser Support: Chrome, Edge, Firefox (121+)
- Cross-browser: Separate builds for Chrome and Firefox due to Manifest V3 differences
π License
MIT License - see LICENSE file for details
π€ Contributing
Contributions welcome! Feel free to open issues or submit pull requests.
Development
The extension uses a single shared source tree for Chrome and Firefox:
src/ # Source of truth β edit files here
background.js
popup.html
popup.js
turndown.js
icon{16,48,128}.png
_locales/ # Shared translations
build.js # Generates extension-{chrome,firefox}/ from src/
extension-chrome/ # Generated (gitignored)
extension-firefox/ # Generated (gitignored)
Workflow:
- Edit files in
src/ - Run
pnpm run buildto (re)generateextension-chrome/andextension-firefox/ - Load the unpacked extension from
extension-chrome/orextension-firefox/ - Run
pnpm run format && pnpm run test && pnpm run lintbefore committing
π Links
- Chrome Web Store - Install for Chrome
- Edge Add-ons - Install for Edge
- Firefox Add-ons - Install for Firefox
- GitHub Repository
- Report Issues
Made with β€οΈ by Lev Gelfenbuim