Markdown to PDF
Convert Markdown files (.md, .markdown) — READMEs, docs, blog posts, technical writing — into a styled PDF document with rendered headings, code blocks, tables, and links. Files are processed in your browser.
Markdown to PDF converts .md and .markdown files into a styled PDF document. The Markdown is parsed by marked (a CommonMark/GFM-compliant parser), rendered as styled HTML inside your browser, captured by html2canvas, and embedded into a PDF using pdf-lib. Pick a theme (Light, Sepia, Print-friendly), font, page size, and margin. Headings, code blocks, tables, lists, and links all render correctly.
What is Markdown to PDF?
Markdown is the lightweight markup language created by John Gruber in <strong>2004</strong> and standardised as <a href="https://commonmark.org/" target="_blank" rel="noopener">CommonMark</a> in 2014. It uses simple punctuation — pound signs for headings, asterisks for emphasis, backticks for code — to produce structured documents that read naturally as plain text. GitHub, GitLab, Reddit, Discord, Notion, Obsidian, and most static-site generators use Markdown as their primary content format. README files, API documentation, technical writing, and blog posts are overwhelmingly Markdown.
Converting Markdown to PDF is common when you need to share a Markdown document with someone who isn't going to open it in a Markdown viewer — think clients, executives, students, anyone outside the developer-tools world. PDF is the universal sharing format. Most online Markdown-to-PDF tools upload your file to a remote server, which is awkward for unreleased product specs, internal documentation, or anything else you don't want sitting on someone else's disk. This tool runs the conversion entirely in your browser.
How does the in-browser Markdown conversion work?
Pikowl reads each Markdown file via the Blob.text() API, parses it with marked (CommonMark + GitHub Flavored Markdown extensions including tables, task lists, strikethrough), and renders the resulting HTML inside a hidden styled container in the page. html2canvas captures the rendered output as a 2× DPI image, which is sliced into page-height chunks and embedded as PDF pages using pdf-lib. The chosen theme drives the CSS applied to the container — Light (default white background, dark text), Sepia (warm cream paper for low-eye-strain reading), or Print-friendly (high-contrast black on white, optimised for printing). Nothing is sent to any server.
Is it safe to convert sensitive Markdown documents here?
Yes. Open the network tab in DevTools while you use the tool — you'll see the marked and html2canvas chunks download once on first use, and zero outbound requests after that. Markdown files are read locally via the File API, parsed inside the browser, and the resulting PDF lives only in your browser's memory until you download it. Internal documentation, unreleased technical specs, and confidential notes never cross the network.
What Markdown features are supported?
marked supports the full CommonMark specification plus most GitHub Flavored Markdown (GFM) extensions: tables, task lists, strikethrough, autolinking, and fenced code blocks with language tags. Inline HTML inside Markdown is rendered. Not supported: syntax highlighting inside code blocks (rendered as plain monospace), Mermaid diagrams, math (LaTeX/KaTeX), footnote definitions, custom directive syntax. The output is unicode-complete via the browser's font stack — Chinese, Japanese, Korean, Cyrillic, Arabic, and emoji all render correctly.
What are the limits and why?
Up to 50 Markdown files per conversion, 10 MB per file, with a soft warning at 100 MB combined and a hard cap at 150 MB. A 10 MB Markdown file is exceptional — most README and documentation files are well under 100 KB. The html2canvas rasterisation step can take several seconds per page on long documents; if your PDF will exceed ~50 pages, expect a noticeable wait.
How does Pikowl compare to Smallpdf and iLovePDF for Markdown?
Smallpdf and iLovePDF don't offer dedicated Markdown-to-PDF tools — both run Markdown through generic text-to-PDF pipelines that strip formatting. The substantive differences are formatting fidelity, processing location, and pricing. Numbers below reflect the public free-tier offers from each service as of April 2026.
| Feature | Pikowl | Smallpdf | iLovePDF |
|---|---|---|---|
| Where files are processed | Your browser | Remote server | Remote server |
| Sign-up required | No | Optional | Optional |
| Output options | Themes · 3 fonts · 3 page sizes | No Markdown rendering | No Markdown rendering |
| Max file size (free) | 10 MB | 5 MB | 200 MB (combined) |
| Price | Free | $9/mo for unlimited | $7/mo for premium |
Sources: smallpdf.com/pricing and ilovepdf.com/pricing, retrieved April 2026.
Common Uses
- README to client deliverable: Convert a project's GitHub README into a PDF you can attach to a client status email or a sales follow-up — without sharing the GitHub link.
- Technical documentation: Export an API reference or runbook chapter as a styled PDF for inclusion in a vendor packet or compliance audit.
- Notion / Obsidian export: Many note-taking apps export notes as Markdown — convert them into a single PDF for archival or printable distribution.
- Blog post archival: Convert a static-site blog post (Hugo, Jekyll, Eleventy) into a printable PDF for offline reading or syndication.
- Course materials: Combine a series of Markdown lecture notes into one paginated PDF for student handouts.
- Pull-request templates and changelogs: Convert CHANGELOG.md or RELEASE-NOTES.md into a release-ready PDF for distribution.
FAQ
Are GitHub Flavored Markdown features supported?
Most of them: tables, task lists (- [ ] checkbox syntax), strikethrough (~~text~~), autolinking, fenced code blocks. Not supported: syntax highlighting inside code blocks (rendered as plain monospace), Mermaid diagrams, footnote definitions, math (LaTeX/KaTeX), and GitHub-specific image alignment attributes. For most README and docs use cases this is sufficient.
Will Markdown tables render correctly in the PDF?
Yes. GFM table syntax (pipe-separated columns with a header row) renders as a styled HTML table with borders, header background, and proper alignment in the output PDF.
Can I get syntax-highlighted code blocks?
Not in this version. Code blocks render with a monospace font and a subtle background tint, but without per-language syntax highlighting (Prism or Highlight.js integration). If you need highlighted code, an interim approach is to copy the highlighted version from your editor as HTML and use the HTML to PDF tool.
What's the difference between Light, Sepia, and Print-friendly themes?
Light is the default — white background with dark grey text, modern sans-serif. Sepia uses a warm cream background with brown-grey text, easier on the eyes for long reading sessions. Print-friendly is pure black on white with high contrast, optimised for paper output and saving toner.
Do non-Latin characters (Chinese, Japanese, Cyrillic) render correctly?
Yes — unlike TXT to PDF (which is limited by pdf-lib's WinAnsi fonts), Markdown to PDF uses html2canvas which renders via the browser's full font stack. CJK, Cyrillic, Devanagari, Arabic, and emoji all render correctly using the system fonts available in your browser.
Is the text in the resulting PDF selectable?
No — the html2canvas pipeline rasterises rendered HTML, so the resulting PDF pages are images, not selectable text. This is the trade-off for full styling fidelity. For selectable text, save your Markdown as plain TXT and use TXT to PDF — you'll lose styling but gain Cmd+F search.
Are Markdown files uploaded to a server?
No. The conversion runs entirely in your browser — open DevTools' network tab and you'll see the marked and html2canvas libraries download once on first use, and zero outbound requests after that. Markdown content is read from your disk via the File API, parsed in the browser, rendered to canvas, and embedded into a PDF using pdf-lib.
By the Numbers
- Markdown was created by John Gruber in 2004 as a way to write web content in plain text; CommonMark formalised the spec in 2014, and GitHub Flavored Markdown extends it with tables and task lists.
- marked, the parser this tool uses, processes Markdown at several thousand lines per millisecond in modern browsers — the parsing step is essentially instant; the html2canvas rasterisation is the time-consuming phase.
- Markdown is the default content format for GitHub READMEs, GitLab wikis, Notion pages, Obsidian notes, Hugo / Jekyll / Eleventy static sites, and Discord messages — making it arguably the most-written structured-document format on the modern web.