How to convert a markdown report to a formatted pdf
- Step 1Finalise the report in Markdown — Make sure section headings use
#/##/###so they render as headings. Keep paragraph lines under ~100 characters so nothing is truncated. - Step 2Open the converter and drop the report — Load the Markdown to PDF converter and drop the
.mdfile. Accepted:.md,.markdown,.txt. Conversion runs locally. - Step 3Let it convert and review the PDF — There are no settings — the tool converts on drop. Open the PDF and scan for any table rows or wide figures that got cut at 100 characters.
- Step 4Re-route tables and charts — If the report depends on tables, code listings, or charts, those won't render as elements here. Convert the report to HTML and use HTML to PDF for those sections.
- Step 5Handle page breaks manually — There is no page-break control. Pages fill top to bottom automatically. If you need a section to start on a fresh page, build it that way in HTML, or split/merge the PDF afterwards with PDF Split by Range and PDF Merge.
- Step 6Download and distribute — Download the PDF (named
<filename>.markdown-to-pdf.pdf) and send it to stakeholders or add it to the project archive. Add Bates or page numbers afterwards if the archive requires them.
Report elements and how they render
Reports lean on tables, figures, and page breaks — this matrix shows exactly which survive and which need the HTML path.
| Report element | In the PDF | If you need it properly |
|---|---|---|
# Executive Summary heading | 16 pt bold line | Works here |
### Methodology sub-heading | 12 pt bold line | Works here |
| Body paragraphs | 10 pt, truncated at 100 chars/line | Wrap lines short; works here |
| GFM data table | Literal pipe text, not a grid | Render via HTML to PDF |
| Code / config listing | Plain text, no box or colour | Render via HTML to PDF |
| Chart / figure image | Literal ![…] text | Image to PDF, or HTML to PDF |
| Page-break directive | Literal text, ignored | Split + Merge, or HTML to PDF |
**bold** emphasis | Markers removed, regular weight | HTML to PDF for true bold |
Report conversion contract
Hard facts you can rely on for a stakeholder deliverable.
| Property | Value | Why it matters for reports |
|---|---|---|
| Input | .md, .markdown, .txt | Export from any report tool to Markdown and drop it |
| Page size | US Letter, fixed (612×792 pt) | No A4 — convert via HTML if your org standard is A4 |
| Free size cap | 2 MB | A long report is fine; Pro lifts it |
| Tables | Not drawn as grids | Single biggest reason to use HTML to PDF for data reports |
| Page breaks | Not supported | Pages fill automatically; control via Split/Merge |
| Line width | ~100 chars, truncated | Wide numeric rows and long figures can be cut |
| Privacy | Client-side (pdf-lib) | Financials and client data never leave the browser |
Cookbook
Report fragments and the PDF they produce — so you can decide what stays here and what moves to the HTML path.
A narrative report section converts cleanly
Headings plus prose — the part of a report this tool handles well. Emphasis markers are stripped to clean text.
report.md: # Q1 Performance Review ## Executive Summary Revenue grew **12%** quarter over quarter, driven by enterprise renewals. ## Outlook We expect the trend to continue into Q2. PDF output: Q1 Performance Review ← 16 pt bold Executive Summary ← 14 pt bold Revenue grew 12% quarter over quarter, driven by enterprise renewals. Outlook ← 14 pt bold We expect the trend to continue into Q2.
A data table degrades to raw pipes
The most common report problem. A KPI table prints as literal Markdown — plan to move data tables to the HTML path.
report.md: ## KPIs | Metric | Q1 | Q2 | | ------ | -- | -- | | MRR | 1.2M | 1.4M | PDF output: KPIs ← 14 pt bold | Metric | Q1 | Q2 | ← literal | ------ | -- | -- | ← literal | MRR | 1.2M | 1.4M | ← literal For a real grid: render the report to HTML, then HTML to PDF.
A page-break directive is ignored
Reports often try to force section breaks. This tool prints the directive as text and keeps filling the page.
report.md: ## Appendix A <div style="page-break-before: always"></div> Detailed methodology follows. PDF output: Appendix A ← 14 pt bold <div style="page-break-before: always"></div> ← literal text Detailed methodology follows. To start Appendix A on a fresh page: split + merge the PDF, or use HTML.
A wide figure line gets truncated
Long reference lines or wide numeric rows exceed 100 characters and are cut. Break them up before converting.
report.md: Note: figures reconciled against the audited ledger entries 1001 through 1899 inclusive as of the close of the fiscal quarter. PDF output: Note: figures reconciled against the audited ledger entries 1001 through 1899 inclusive as of t ← cut Fix: split the sentence across two lines in the source.
Deep heading levels share the 10 pt floor
Heading size is max(18 - level*2, 10), so H4, H5, and H6 all render at 10 pt — the same as body, but bold. Plan your outline depth accordingly.
report.md: # H1 sees 16 pt ## H2 sees 14 pt ### H3 sees 12 pt #### H4 sees 10 pt (bold) ##### H5 also 10 pt (bold) PDF output: H1 and H2 read as clear headings; H4+ are only distinguishable from body text by being bold, not by size.
Edge cases and what actually happens
Data tables don't render as grids
Not renderedGFM tables print as literal pipe-delimited text, not aligned columns. For a report whose value is in its tables, this tool is the wrong fit — render the report to HTML and use HTML to PDF, which lays out <table> properly.
Page-break directives are ignored
Not supportedThere is no page-break control and HTML directives like page-break-before print as literal text. Pages fill top to bottom automatically. To start a section on a new page, build the report in HTML, or assemble sections with PDF Split by Range and PDF Merge.
Code and config listings aren't boxed
By designFenced code blocks render as plain 10 pt text with no monospace font, shading, or highlighting. A report with embedded YAML/JSON/log samples will look raw. Use the HTML-to-PDF path where <pre><code> renders correctly.
Charts and figures don't embed
Not embeddedImage syntax prints as literal text; charts, screenshots, and logos won't appear. Convert images separately with Image to PDF, or assemble a mixed text-and-image report via HTML to PDF.
Wide rows and long figures get truncated
TruncatedEach line is cut at 100 characters with no wrap, so a wide numeric line or a long footnote loses its tail. Break long sentences across multiple source lines before converting.
Only US Letter output
FixedPages are 612×792 pt (US Letter). Reports destined for A4-standard organisations need the HTML path (set the page box in CSS) or a downstream resize. There is no page-size selector in this tool.
Emphasis is dropped, not styled
Stripped**bold** and *italic* markers are removed and the text prints at regular weight; only # headings get a weight change. If a report uses bold to flag risks or totals, that emphasis is lost — use HTML to PDF where inline bold survives.
No table of contents or page numbers
Manual stepThe tool doesn't generate a TOC or page numbers. Add page numbers afterwards with PDF Page Numbers, or Bates stamps for a legal/archive context with PDF Bates Numbering.
Report file near the 2 MB free cap
2 MB free limitFree conversions accept up to 2 MB. A long narrative report is usually well under, but a report with base64-embedded data could exceed it. Strip embedded blobs, or upgrade to Pro. Output page count is determined automatically.
HTML embedded for layout
Literal textReports sometimes mix raw HTML for callout boxes or columns. This tool prints HTML tags as text and does not act on them. For any HTML-driven layout, convert via HTML to PDF.
Frequently asked questions
Can I add a page break before each section?
No — this tool has no page-break control, and HTML directives like page-break-before: always print as literal text rather than forcing a break. Pages fill automatically. To start each section on a fresh page, render the report in HTML and use HTML to PDF, or split the output by range and reassemble it with PDF Merge.
Will Mermaid or other diagrams render?
No. Diagrams require a JavaScript renderer and this tool does no rendering of fenced ``` mermaid ``` blocks — they print as their raw source text. Pre-render the diagram to an image or SVG, then place it via Image to PDF, or build the report in HTML (with the diagram inlined as SVG) and use HTML to PDF.
What page size is used by default?
US Letter (612×792 points), and it is fixed — there is no US Letter / A4 / custom selector in this tool. If your organisation standardises on A4, render the report via HTML where the page box is set in CSS, or resize the resulting PDF with a dedicated resize tool.
Will my report's data tables keep their columns?
No. Tables written with | … | rows print as literal pipe text, not aligned grids. This is the main reason data-heavy reports should go through the HTML path: render the Markdown to HTML and convert with HTML to PDF, which lays out tables properly.
Will bold text used to flag risks survive?
No. Inline **bold** markers are stripped and the text prints at regular weight; only # headings change weight. If you rely on bold to highlight risks or totals, use the HTML-to-PDF route, where inline emphasis is preserved.
Can I add a cover page, table of contents, or page numbers?
Not in this tool. It produces a plain paginated body. Add page numbers afterwards with PDF Page Numbers, prepend a cover page by creating it separately and combining with PDF Merge, and add legal Bates stamps with PDF Bates Numbering.
Is my report data uploaded anywhere?
No. Conversion runs entirely in your browser with pdf-lib; proprietary or client data in the report is never sent to a server. Only an anonymous run counter is recorded when signed in, and that is optional.
Why are some lines cut off in the middle?
Lines are truncated at 100 characters with no word-wrap. Wide numeric rows, long reference citations, or unwrapped paragraphs lose their tail. Break those lines across multiple lines in your source Markdown before converting.
Can I apply our brand fonts and colours?
No. The output style is fixed (Helvetica, fixed sizes, black text) and there is no CSS or theme input. For a branded report, render the Markdown to HTML, apply your stylesheet, and use HTML to PDF.
Can I paste the report text or do I need a file?
You need a file — the tool reads a dropped or browsed .md/.markdown/.txt file and has no paste box. Save the report to a file first; conversion then runs automatically.
How do I combine several report sections into one PDF?
Convert each section's Markdown to a PDF here (one file per run), then merge them in the order you want with PDF Merge. That also lets you slot in a separately-made cover page or appendix.
What is the downloaded file named?
It is named after your source file with a .markdown-to-pdf.pdf suffix — for instance q1-report.markdown-to-pdf.pdf. Rename it for distribution after downloading.
Privacy first
All PDF processing runs locally in your browser using PDF-lib and pdf.js. No file is ever uploaded — only metadata counters are saved for signed-in dashboard stats.