Why PeachPDF?
Because you already know how to build documents — you've been doing it in HTML and CSS for years. PeachPDF turns that knowledge into professional vector PDFs, entirely in-process, completely free.
The skills you already have are the API
Most PDF libraries ask you to learn their world. PeachPDF meets you in yours.
No new API to learn
Describe your invoice, report, or contract in HTML and CSS — not in a proprietary document object model or a fluent builder API you'll only ever use for PDFs. If you can write a web page, you can already write a PeachPDF document.
No manual layout
No coordinate math, no measuring strings to see where the next line goes, no hand-rolled pagination. The layout engine handles text flow, tables, flexbox, page breaks, and running headers and footers — you say what the document is, not where every piece sits.
Design tooling you already own
Iterate on your template in a browser, keep it in version control as plain HTML, and hand it to anyone who knows the web. Designers can restyle a document without ever reading C#.
Graphics without a graphics API
Charts, logos, seals, and diagrams go in as inline or standalone <svg> and come out as true vector PDF content — crisp at any zoom, never rasterized, no drawing code required.
Bring your own templating
PeachPDF takes an HTML string, so however you already produce HTML works: Razor, Scriban, Handlebars, or plain string interpolation. No vendor template language, no proprietary document format.
Accessibility from your markup
The semantic HTML you already write — headings, lists, tables, alt text — becomes an optionally tagged, accessible PDF with a real structure tree. Tune the tagging per element with a CSS property, not a separate accessibility API.
See exactly what's supported in the HTML & CSS compatibility matrix and the SVG feature list.
Free and open source — actually
No asterisks. No trial watermarks. No surprises at renewal time.
BSD-3-Clause licensed
One of the most permissive licenses there is. Use PeachPDF in commercial products, closed-source products, SaaS platforms — anywhere — with no obligation beyond keeping the license notice.
No license keys or fees
No per-developer seats, no per-server pricing, no revenue thresholds that flip a "community" license into an invoice once your business grows. The library is unconditionally free for everyone.
Developed in the open
Every line of source is on GitHub. Read it, audit it, debug into it, fork it. Optional paid support and sponsorship exist for teams that want them — the library never depends on either.
Runs on every supported .NET
PeachPDF supports .NET 8 and newer, in step with Microsoft's own .NET support policy, and is ready for trimmed and AOT-compiled deployments. When a new .NET lands, PeachPDF is there — no legacy runtime shims to carry.
Read the full license and FAQ.
How PeachPDF compares
The .NET HTML-to-PDF landscape splits three ways: wrap a browser, wrap a native binary, or make you lay out the PDF in code. PeachPDF takes a fourth path — a real HTML/CSS layout engine written in managed .NET. The .NET runtime support column shows which runtimes each targets.
| Library | License & cost | HTML & CSS input | How it renders | Accessible (tagged) PDF | Native / external dependencies | .NET runtime support | Containers & serverless | Status |
|---|---|---|---|---|---|---|---|---|
| PeachPDF | Free — BSD-3-Clause | ✅ HTML, CSS, and SVG | Own layout engine, fully in-process | ✅ Optional tagged output with a structure tree; tag mapping customizable per element via CSS (-peachpdf-pdf-tag-type, including none for decorative content) |
None — pure managed .NET | ✅ .NET 8 and newer — every currently-supported .NET version | Excellent — no browser, no native binaries, works in trimmed and AOT deployments | Actively developed |
| IronPDF | Commercial — paid per developer | ✅ Chromium-grade | Embedded Chromium renderer | ⚠️ PDF/A and PDF/UA export options; no per-element tag control | Ships Chromium native binaries with the package | .NET Framework 4.6.2+, .NET Standard 2.0, .NET Core / .NET 5–10 | Works, but images grow by hundreds of MB | Actively developed |
| PuppeteerSharp | Free — MIT | ✅ Chrome-grade | Drives a headless Chrome in a separate process | ⚠️ Chrome can emit tagged PDFs; no tag customization | Downloads a full Chromium build (hundreds of MB) | .NET Standard 2.0 and .NET 8+ | Hard — browser install, sandbox flags, and extra memory in every image | Actively developed |
| DinkToPdf | Free — MIT | ⚠️ 2012-era WebKit; no flexbox or modern CSS | Wraps the native libwkhtmltox library |
❌ Untagged output | Per-platform native library you deploy yourself | .NET Standard 2.0 / .NET Core (dormant) | Fragile — native loading issues and long-standing thread-safety problems | Dormant — no releases in years |
| wkhtmltopdf | Free — LGPL | ⚠️ 2012-era WebKit; no flexbox or modern CSS | External command-line process | ❌ Untagged output | Native binary installed on the host | Language-agnostic external CLI | Possible, but you're baking an archived tool into new images | Archived — deprecated by its maintainers |
| Prince (PrinceXML) | Commercial — paid per server | ✅ Excellent, best-in-class paged-media CSS | External native process | ✅ Strong tagged / PDF-UA support with CSS tag customization | Native binary installed on the host | Language-agnostic external process | Works, but every container counts as a licensed server | Actively developed |
| QuestPDF | Free under $1M annual revenue, paid above | ❌ None — code-first fluent C# API | Own engine drawing through SkiaSharp | ⚠️ PDF/A and PDF/UA conformance in recent versions, from code-first layouts | SkiaSharp native binaries | .NET Framework 4.x, .NET Standard 2.0, .NET 6+ | Good, but every layout is C# code your developers maintain | Actively developed |
| PDFsharp / MigraDoc | Free — MIT | ❌ None — drawing and document object model | Direct PDF drawing; you position content | ⚠️ Tagged / PDF-UA output via UAManager in recent versions; structure marked up in code |
None | .NET Framework 4.6.2+, .NET Standard 2.0, .NET 6+ | Good, but all layout is manual | Actively developed |
| Aspose.PDF | Commercial — paid per developer | ⚠️ HTML conversion with partial CSS fidelity | Own converter inside a large general-purpose PDF suite | ✅ Tagged PDF via a programmatic tagging API | Large closed-source library | .NET Framework, .NET Standard 2.0, .NET 6+ | Works | Actively developed |
Licensing and pricing details are as of this writing and change over time — always check each vendor's site before deciding.
Where PeachPDF isn't the right fit: it doesn't execute JavaScript, and pixel-perfect Chrome parity isn't the goal — if your documents are rendered by client-side scripts, a browser-based tool is the honest recommendation. For everything else, the compatibility matrix tells you exactly what you get.
Ready to render?
dotnet add package PeachPDF
Get started in a few lines, or browse the feature showcase to see real output first.