MarkPaste is an isomorphic tool that converts rich text to Markdown. It works seamlessly in both the browser as a web application and in Node.js as a library.
index.html.MarkPaste can be used programmatically in Node.js environments. It uses linkedom to provide a lightweight DOM implementation for the conversion logic.
import {convert} from './src/index.js';
const html = '<h1>Hello World</h1><p>This is <b>bold</b> text.</p>';
// Basic usage (defaults to Turndown)
const markdown = await convert(html);
console.log(markdown);
// Using Pandoc
const pandocMarkdown = await convert(html, {converter: 'pandoc'});
console.log(pandocMarkdown);
// Disabling HTML cleaning
const rawMarkdown = await convert(html, {clean: false});
To run MarkPaste locally:
Clone & Install:
git clone https://github.com/paulirish/markpaste.git
cd markpaste
pnpm install
Start the Web UI:
pnpm start
Access the application at http://localhost:7025.
The project uses a dual-testing strategy:
pnpm test:node).pnpm test:web).Run all tests with:
pnpm test
The pandoc.wasm and pandoc.js files used in this project originate from the haskell-wasm/pandoc-wasm project. Since GitHub Actions artifacts are cleaned up after ~90 days and the upstream repository hadn't run its CI recently, a fork was created to generate fresh build artifacts. The files in this project were obtained from that fork's GitHub Actions build artifacts.
This project is licensed under the Apache License 2.0. See LICENSE for details.