HTML to PDF
Paste HTML or drop a file, see it laid out on the page you've chosen, and save it as a PDF with text that stays text.
Runs entirely in your browser — nothing is uploaded
Your browser's print window opens. Choose Save as PDF as the destination — that's the same engine that renders this page, so the text stays text.
What this does
Paste HTML — or drop a .html file — and see it laid out on the paper size you choose. When it looks right, create the PDF. The text in the result is real text: selectable, searchable, and sharp at any zoom, with the fonts embedded.
Why it uses your browser's print window
This is worth explaining, because it looks like a shortcut and is the opposite of one. Turning HTML into a PDF means laying out text, resolving the whole of CSS, breaking it across pages and embedding fonts. Your browser already contains a typesetter that does all of that and writes PDFs natively. Nothing written in JavaScript comes close.
The tools that promise a one-click download take one of two routes, and both cost you something. Most photograph the page onto a canvas and put the picture in a PDF — so the result has no selectable text, no searchable content, and goes soft the moment it's printed or zoomed. The rest re-implement a slice of CSS and quietly get the rest wrong, which you discover after sending the file to someone. Handing the job to the engine that was built for it gives a proper PDF, and this page's contribution is making sure the paper size, margins and page breaks are already set before the dialog opens, so what you saw is what you get.
Setting the page up properly
A few things are done for you that catch people out when printing a web page:
- The paper size and margins are written into the document using the CSS
@pagerule, so the print dialog opens already set the way you chose rather than defaulting to whatever it used last time. - Background colours are printed. Browsers drop them by default, which is why a dark or coloured design usually prints as white with the text still light. Leave the option ticked and they come through.
- Page breaks are nudged into sensible places — headings stay with the text below them, and images, table rows and code blocks aren't sliced in half.
- Oversized images are held to the width of the paper, the usual reason a printed page comes out clipped down one side.
Is it private?
Yes, and there's a real subtlety here that most converters don't mention. Your HTML is never uploaded — it is rendered in this page and printed by your own browser. But HTML canrefer to things on other servers: an image, a webfont, a stylesheet, a tracking pixel. Loading those means your browser contacts those servers, which is a disclosure even though the document itself never moved.
So remote content is blocked by default. The preview is given a content policy that refuses every outside request, and the tool tells you when the page you pasted contains such references. Untick the option if you need them and you understand the trade.
Scripts never run at all. The preview is sandboxed with JavaScript switched off, so pasting someone else's HTML can't execute anything — the flip side being that a page which draws itself with JavaScript will come out empty, and you'll be told if the markup contains any.
Frequently asked questions
Where's the download button?
In the print window: choose Save as PDF (or Microsoft Print to PDF on Windows) as the destination and press Save. That step is the conversion — it's your browser's PDF writer doing the work.
Can I use my own CSS?
Yes. Inline <style> blocks in the HTML you paste are kept and applied. You can use print-specific rules too — @media print,break-before: page to force a new page, and @page if you'd rather set the paper yourself.
Why does my Google Font not appear?
Because it lives on another server and remote content is blocked. Untick that option to allow it, or embed the font as a data URI to keep everything local.
Can I convert a website by pasting its address?
No — fetching another site's pages from your browser is blocked by the web's own security rules, and doing it for you would mean running a server that downloads pages on your behalf, which is exactly the arrangement this site exists to avoid. Use your browser's own Print command on the page instead; it's the same engine.