Markdown to PDF Converter
Markdown in, a clean, print-ready PDF out — tables, code, footnotes and all.
Markdown
No text yet.
Preview
In the print dialog that opens:
- Set Destination (or Printer) to Save as PDF — on Windows you can also pick Microsoft Print to PDF.
- Keep Margins on Default and Scale at 100%: the page size and margins you chose here are already applied.
- Turn on Background graphics if colours or shading are missing, and turn off the browser’s own Headers and footers if you don’t want its date and address lines.
- On iPhone or iPad, use the share button in the print screen and choose Save to Files.
The pages of your PDF appear here as you write: type or paste Markdown, open a file, or press Example.
About the Markdown to PDF Converter
Write or paste Markdown, or open a .md file, and see it laid out as pages with a clean theme — then press Save as PDF. It understands CommonMark plus the GitHub Flavored Markdown extensions people actually use: tables with column alignment, task lists, strikethrough, automatic links and footnotes. Fenced code is coloured for more than thirty languages, and you can add a table of contents, page numbers and page breaks.
Your browser’s print engine writes the PDF, so the text stays real, selectable and searchable in every script — Hindi, Tamil, Arabic or Chinese included. The Markdown is turned into HTML on your device, cleaned of anything active (scripts, event handlers, embedded frames) and shown in a frame that cannot run code. Nothing is uploaded.
How to use it
- Type or paste Markdown in the box, open a
.mdfile, or press Example to see what is supported. Pictures your Markdown refers to by file name () can be added with Add pictures. - Pick a Theme, the text size, page size, orientation and margins, and tick the extras you want: page numbers, a table of contents, coloured code, or a new page for each top-level heading.
- Check the Preview — it updates as you type and shows the page width and margins you chose.
- Press Save as PDF and choose Save as PDF as the destination in the print dialog.
Examples
# My library | Option | Default | | --- | --- | | `cache` | `true` | ```js import lib from "my-library"; ```
A PDF with the title, a bordered table and a coloured JavaScript block that wraps instead of being cut off at the page edge
[TOC] ## Part one … \pagebreak ## Part two
A linked contents list where [TOC] was written, and “Part two” starting on a new page
Common uses
- Turning a README, release notes or API docs into a PDF to attach or print.
- Exporting notes written in Obsidian, Joplin, Typora or VS Code as a tidy document.
- Writing a CV, a cover letter or a report in Markdown and sending it as a PDF.
- Printing lecture notes or a lab manual with code listings and tables.
What Markdown is supported
- CommonMark 0.31.2: headings, emphasis, lists, block quotes, code spans and blocks, links, pictures, horizontal rules and HTML blocks (parsed by markdown-it, which follows the specification).
- GitHub Flavored Markdown: tables (
:--,:-:and--:set the column alignment), task lists (- [x] done), strikethrough (~~old~~) and links written as plain web addresses. - Footnotes:
text[^1]and[^1]: the note— notes are collected at the end with links back. - Extras:
[TOC]on a line of its own inserts the table of contents;\pagebreak,\newpageor<!-- pagebreak -->on a line of its own starts a new page; a YAML front matter block (---…---) is not printed and itstitle:names the PDF. - Right-to-left text: a document written mostly in Arabic, Urdu or Hebrew is laid out right to left (or set
dir: rtlin the front matter), and every paragraph, heading and list item takes the direction of its own text, so an English paragraph in an Urdu document stays left to right. Code blocks are always left to right.
Headings get anchors made the way GitHub makes them (lower case, punctuation removed, spaces as hyphens), so links such as [see Install](#install) work in the PDF too.
Safety and privacy
Raw HTML in Markdown is allowed (you can turn that off) but cleaned with DOMPurify first: scripts, event handlers, frames, objects and javascript: links are removed, and the result is shown in a frame that has no permission to run scripts. Pictures from the web are blocked unless you tick Load pictures from the web, because loading them tells those sites your IP address; pictures you add yourself never leave your device.
Limitations
- Page numbers in the footer are printed by Chrome and Edge from version 131. In Firefox and Safari, turn on the print dialog’s own headers and footers instead.
- The table of contents lists the headings but cannot show page numbers — browsers don’t calculate them.
- Maths (LaTeX), Mermaid diagrams and emoji short codes such as
:smile:are not converted; they appear as written. - Exactly where pages break depends on your browser. Pictures and table rows are kept whole where they fit on a page, so a page can end a little early.
- Documents up to 3 million characters are supported. The Markdown engine loads on first use, so it needs an internet connection.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
Is my Markdown uploaded anywhere?
No. It is converted to HTML in your browser, shown in a frame on this page and printed to PDF by your browser. Neither the text nor your pictures are sent to a server.
Will the text in the PDF be selectable?
Yes. The browser writes real text, not a picture, so you can select, copy and search it — in any language your device can display.
How do I start a new page?
Put \pagebreak (or \newpage, or <!-- pagebreak -->) on a line of its own. To start every top-level # heading on a new page, tick Start each top-level heading on a new page.
Why are my pictures missing?
Pictures with a web address are blocked until you tick Load pictures from the web. Pictures with a file name (images/logo.png) must be added with Add pictures — they are matched by file name.
Can I use my own CSS?
Yes, with Allow HTML in the Markdown on: a <style> block in your Markdown is applied after the theme, so it can change fonts, colours or spacing. Remote stylesheets and fonts are not loaded.