Convert HTML to PDF
Web pages to PDF, in your browser.
Drop your .html file
or click to browse · max 50MB
or paste with ⌘V
Converting HTML to PDF wraps a web page (or any HTML file) into a printable, shareable PDF. It's the right choice for archiving an article, generating a report from a templated HTML file, packaging an invoice or receipt, or producing a printable version of any web content. The conversion happens entirely in your browser — your file is never uploaded.
When you'd use it
Archive a blog post or article
Save a copy of a web page as a PDF that won't change when the original site updates or goes offline. Drop your saved HTML file in, get a paginated PDF.
Generate invoices and receipts
If you template invoices or receipts as HTML (Handlebars, Liquid, plain templates), convert each rendered page to a PDF for emailing or filing — no server-side rendering pipeline needed.
Email-friendly reports
Some email gateways and corporate workflows prefer PDFs over HTML attachments. Convert the HTML once, send the PDF.
How it works
-
Your file never leaves the browser.
-
Conversion runs locally via WebAssembly and Canvas.
-
Download. No account, no history.
Technical notes
This converter renders your HTML in an A4-width container (760px), captures the rendered output with html2canvas at 2x scale, and packages the result with jsPDF into a multi-page A4 PDF. Important trade-offs: the resulting PDF text is rasterized — readable and printable, but not selectable, copyable, or searchable. For an archive-grade PDF with selectable text, use your browser's built-in 'Print → Save as PDF' instead. Also: external resources (remote images, CDN fonts, external CSS files) may not load due to CORS — pages with everything inlined work cleanest. We strip script tags and inline event handlers before rendering as a basic security measure.
Frequently asked
What happens to my HTML files?
Nothing leaves your browser. The conversion runs locally on your device using WebAssembly and the Canvas API. No file is uploaded to a server — including ours.
Is the converted PDF identical to the original?
PDF preserves the input image exactly — embedJpg embeds your JPG bytes verbatim, embedPng embeds the PNG losslessly. The page size matches your image's pixel dimensions.
Is there a file size limit?
There is no hard cap, but very large files (hundreds of MB) may be slow on older devices because everything happens in your browser's memory.
Do you collect data on my file or my use?
Your file is invisible to us — it never leaves your browser. For aggregate page-view counts we use Cloudflare's server-side edge logs (no JavaScript beacon runs in your browser). We display Google AdSense ads on conversion result pages; the AdSense script loads on every page and may set advertising cookies after you accept the consent banner (Google Consent Mode v2 asks first). The ads see the page URL and standard browsing signals — they never see your file, because the file never leaves your device.
Can I copy text from the resulting PDF?
No. The text is rasterized as part of the captured image. For a selectable-text PDF, use your browser's Print → Save as PDF dialog on the original page instead — it produces a proper text-layered PDF.
Will external images and stylesheets load?
Sometimes. Resources that allow cross-origin requests (most CDNs do) will load. Resources that don't (private servers, unconfigured assets) won't render. For best results, inline images as data URIs and embed CSS in style blocks before converting.
Will JavaScript run?
No — we strip script tags and inline event handlers before rendering. If your HTML relies on JavaScript to render its content (single-page apps, dynamic templates), the converted PDF will only show the initial static markup. Pre-render the HTML before converting.
Why not just use Print → Save as PDF?
That's actually better for most cases — it produces selectable text, respects print stylesheets, and handles external resources properly. This tool exists for situations where you have an HTML *file* (not an open page) and want to convert it without opening it in a browser tab first.