A userscript that exports the fully rendered text of any webpage to a clean, well-structured Markdown file. Works with Tampermonkey and Violentmonkey.
- Rich Markdown output - preserves headings (H1–H6), paragraphs, bold, italic, strikethrough, inline code, code blocks (with language tags), blockquotes, ordered and unordered lists, definition lists, tables, links, and images
- Visible content only - skips hidden elements,
aria-hiddennodes, scripts, styles, iframes, and other non-content tags - Absolute URLs - all links and image sources are resolved to absolute URLs so they work outside the original page context
- Auto-generated filename - slugified from the page title (e.g.
website-or-page-title.md) - Frontmatter header - each export includes the source URL and export timestamp
- Floating button - draggable
⬇ MDbutton fixed to the bottom-right corner of every page - Keyboard shortcut -
Alt + Shift + Mtriggers the export from anywhere on the page - Menu command - also accessible via the Tampermonkey/Violentmonkey extension menu
- Toast notification - brief on-screen confirmation when the file is saved
- Install Tampermonkey or Violentmonkey in your browser
- Install directly via GreasyFork
- Or install via raw script
Note: Tampermonkey is not open source. Violentmonkey is preferred for that reason :)
Once installed, three ways to export any page:
| Method | How |
|---|---|
| Floating button | Click the ⬇ MD button in the bottom-right corner |
| Keyboard shortcut | Press Alt + Shift + M |
| Extension menu | Click the Tampermonkey/Violentmonkey icon → Export page to Markdown |
The .md file will download automatically to your default downloads folder.
Each exported file begins with a metadata header:
# Page Title
> **Source:** [https://example.com/article](https://example.com/article)
> **Exported:** 2026-04-26 19:00:00 UTC
---Followed by the full page content converted to Markdown.
The following are intentionally excluded from output:
<script>,<style>,<noscript>,<template><iframe>,<canvas>,<svg>,<audio>,<video>- Form elements:
<input>,<textarea>,<select>,<button> - Any element with
display: none,visibility: hidden,opacity: 0, oraria-hidden="true"
Bug reports and pull requests are welcome. Please open an issue before submitting large changes.
MIT