Lightweight Markdown to PDF converter. No headless browser, no Puppeteer, no Chrome — just pure JavaScript.
Renders GitHub-style PDFs with syntax-highlighted code blocks, tables, images, and clean typography.
npm install -g mrkdwn-pdf-cliOr use directly with npx:
npx mrkdwn-pdf-cli README.md# Basic — outputs README.pdf alongside the input file
mdpdf README.md
# Custom output path
mdpdf README.md -o docs/readme.pdf
# Letter size with wider margins
mdpdf README.md --page-size Letter --margin 60
# Set PDF title metadata
mdpdf README.md --title "Project Documentation"| Option | Short | Default | Description |
|---|---|---|---|
--output <path> |
-o |
<input>.pdf |
Output file path |
--title <title> |
-t |
filename | PDF document title |
--page-size <size> |
-s |
A4 |
Page size (A4, Letter, Legal, etc.) |
--margin <points> |
-m |
40 |
Page margins in points |
- Headings (h1–h6)
- Bold, italic,
strikethrough - Links
- Ordered and unordered lists (with nesting)
- Tables
- Code blocks with syntax highlighting (190+ languages)
- Inline
code - Blockquotes
- Images (local files embedded as base64, remote URLs)
- Horizontal rules
import { convert } from "mrkdwn-pdf-cli";
const outputPath = await convert({
input: "README.md",
output: "readme.pdf",
title: "My Project",
pageSize: "A4",
margin: 40,
});- Parse — Markdown is parsed with markdown-it (CommonMark + GFM extensions)
- Highlight — Code blocks are syntax-highlighted with highlight.js
- Convert — HTML is transformed to a document layout via html-to-pdfmake
- Render — PDF is generated with pdfmake using built-in Helvetica and Courier fonts
No browser engine involved at any step.
MIT