Convert rich clipboard HTML into clean, validated Markdown in the browser.
Live demo: sbolel.github.io/paste-to-markdown
| Ready to convert | Markdown output |
|---|---|
![]() |
![]() |
- Pastes rich HTML from documents, email, webpages, and editors.
- Converts content to Markdown locally in the browser.
- Supports raw Markdown and preview views.
- Lets you copy or download the result.
- Keeps recently cleared content restorable for the current page session.
Paste to Markdown runs conversion in your browser. Pasted content is not sent to an app server by this tool, and cleared content is only kept in memory for the current page session so it can be restored. Display preferences such as Markdown flavor may be stored in browser local storage.
Use the live demo, or run it locally:
Supported Node.js versions are ^20.19.0 || >=22.12.0. The .nvmrc file pins
the validated local development version. If you use nvm, run:
nvm useInstall dependencies:
npm installStart the local development server:
npm run devBuild for production:
npm run buildPreview the production build:
npm run previewRun the baseline checks:
npm run typecheck
npm run lint
npm run build
npm run audit:prod- Pull request titles must follow Conventional Commits so squash merges produce release-ready commits.
fix:creates a patch release.feat:creates a minor release.feat!:orBREAKING CHANGE:creates a major release.- Releases and GitHub tags are created automatically after merges to
main. - npm publishing is disabled; releases are GitHub-only.
This app is built with React, TypeScript, and Vite. Markdown conversion uses Turndown and GitHub Flavored Markdown helpers. Markdown preview HTML is sanitized before rendering.
Feedback is welcome on conversion quality, pasted-content edge cases, and README clarity. Please open an issue with a small reproduction if something converts poorly or behaves unexpectedly.

