Paste a block of HTML, or choose an .html file from your computer, pick a page size, orientation and margin, and download a PDF. The markup is laid out by your own browser at the width of the printable area, photographed page by page, and the pictures are placed on PDF pages. Inline styles and <style> blocks apply, so a styled invoice, a report template or an email draft comes out looking the way the browser shows it.
The whole job runs in the page you are looking at. Your HTML is never sent to a server, and the PDF is built on your device. Because the output is an image of the rendered page, the text inside it cannot be selected, searched or copied, which is the trade this approach makes for working without a server.
Page size, orientation and margin
A4 and US Letter are offered in portrait or landscape. The margin, in millimetres, is applied on all four sides and the HTML is laid out to fit the width that remains, so a wide table at a 25 mm margin has less room than at 10 mm. Content that is taller than one page continues on the next.
Page breaks are placed on the nearest blank row of pixels above the natural cut, so a line of text is not sliced across two pages. There is no way to force a break at a particular element, and CSS page-break properties are ignored, because the page is rendered as one continuous strip and divided afterwards.
What is removed before rendering
The markup is passed through a sanitiser first. Script tags, inline event handlers, iframes, embeds and links to external stylesheets are stripped out. The cleaned document is then loaded into an isolated frame with scripting disabled, so even something the sanitiser missed has no way to run. JavaScript in your HTML will not execute, and anything it would have drawn on the page will not appear.
Styles written in a <style> block or a style attribute are kept. If your page depends on an external stylesheet, paste its rules into a <style> block in the document before converting.
Images and fonts from other sites
An image or web font hosted elsewhere loads only if that host allows cross-origin use. The browser refuses to let a page read pixels from an image whose server did not opt in, so such an image renders as a blank area in the PDF. Images embedded as data URLs, and any image or font served with permissive cross-origin headers, work as expected. The tool waits up to eight seconds for images and fonts to load before it takes the picture.
Quality and file size
Pages are rendered at twice the usual screen density, which reads well on screen and is acceptable in print for text at ordinary sizes. Each page is stored as a PNG when that is compact, which it is for text and flat colour, and as a JPEG when a page is dominated by photographs. A text-only A4 page is typically around half a megabyte, so a long document produces a far larger file than a text-based PDF of the same content would.
If you need a PDF whose text is selectable, use your browser's own Print to PDF command on the page instead. This tool exists for the cases where you have raw HTML and no page to open, or where you want a fixed page size and margin without touching print settings.
Frequently asked questions
Is my HTML sent anywhere?
No. The markup is sanitised, laid out and photographed inside your browser, and the PDF is assembled on your device. Nothing leaves it.
Why can't I select or search the text in the PDF?
Each page is an image of the rendered HTML, not text. That is what allows the conversion to run without a server, and it means the words are pixels in the PDF. If you need real text, print the page to PDF from your browser instead.
Why are some images missing?
Images hosted on another site appear only if that site permits cross-origin use. A browser will not let the page read pixels from an image that was not opted in, so the space is left blank. Embed such images as data URLs, or host them somewhere that sends permissive headers.
Does JavaScript in my HTML run?
No. Scripts are removed by the sanitiser and the rendering frame has scripting disabled. Anything a script would have generated will not be in the PDF, so paste the finished markup, not a page that builds itself on load.
Can I control where the pages break?
Not by element. The page is rendered as one tall strip and cut into page-sized pieces, with each cut moved up to the nearest blank row so lines of text stay whole. CSS page-break rules have no effect.
What file name does the PDF get?
If you chose an .html file, the PDF takes its name with the extension changed to .pdf. Pasted markup is saved as document.pdf.
Why is the PDF so large for a few pages of text?
Every page is stored as an image at double screen density, and an image of text is far larger than the text itself. A picture-based PDF will always be heavier than a text-based one; if size matters more than a fixed layout, print the page to PDF from your browser instead.
Related Utilities You Might Need
Scanned PDF Converter
Simulate real scanned sheets from loaded PDF pages by adding skews, blurs, and scanner noise.
Merge PDF
Combine several PDFs into one file in any order. Runs entirely in your browser, so nothing you merge is ever uploaded.
Split PDF
Cut a PDF into separate files, every few pages or by an exact range. Processed on your device, never uploaded.
