Markdown Printer

May 11, 2026 ยท View on GitHub

Save web pages as Markdown files with preserved formatting. Zero setup required - just install and start saving!

Perfect for documentation, articles, and note-taking.

Chrome Web Store Version Mozilla Add-on Version

โœจ 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

Install from Edge Add-ons โญ

Firefox

Install from Firefox Add-ons โญ

Manual Installation (For Development)

Note: The extension-chrome/ and extension-firefox/ directories are generated by the build script. Run pnpm install && pnpm run build after cloning.

Chrome/Edge:

  1. Clone this repository, then run pnpm install && pnpm run build
  2. Open Chrome/Edge and navigate to chrome://extensions/ or edge://extensions/
  3. Enable "Developer mode" in the top right
  4. Click "Load unpacked"
  5. Select the extension-chrome/ directory
  6. Done! ๐ŸŽ‰

Firefox:

  1. Clone this repository, then run pnpm install && pnpm run build
  2. Open Firefox and navigate to about:debugging
  3. Click "This Firefox" in the left sidebar
  4. Click "Load Temporary Add-on"
  5. Navigate to the extension-firefox/ directory and select manifest.json
  6. Done! ๐ŸŽ‰

๐Ÿ“– Usage

Method 1: Right-Click Menu

  1. Navigate to any webpage
  2. Right-click anywhere on the page
  3. Select "Save as Markdown"
  4. Choose where to save in the dialog

Method 2: Extension Icon

  1. Navigate to any webpage
  2. Click the Markdown Printer icon in the toolbar
  3. Click "Save Page as Markdown"
  4. 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

FeatureStandardPro
InstallationOne-clickRequires setup script
Browser SupportChrome, Edge, FirefoxChrome, Edge, Firefox
Save locationChoose each timeConfigurable 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:

  1. Edit files in src/
  2. Run pnpm run build to (re)generate extension-chrome/ and extension-firefox/
  3. Load the unpacked extension from extension-chrome/ or extension-firefox/
  4. Run pnpm run format && pnpm run test && pnpm run lint before committing

Made with โค๏ธ by Lev Gelfenbuim