Pagecraft

HTML to PDF

Set a page of HTML on paper, with the page size, margins and breaks it asks for.

Drop files here

Or paste them, or pick them from this device. Nothing is uploaded: the work happens in this tab.

Files in this tab

Nothing is loaded yet.

Options

What the PDF will be called.

The size and margins in the file, or A4 with 20mm where it names none.

pt

A multiple of the text size. 1.4 is what a book uses.

Even word spacing; an uneven right edge.

Helvetica.

Advanced

A TrueType or OpenType font to set the text in. Needed for anything the built-in typefaces cannot draw — Greek, Cyrillic, Arabic, Chinese. The file is read here, in this tab, and embedded in the PDF.

Drawn at the top of every page, in place of the file's own. Understood: {n}, {total}, {filename}, {date}.

Drawn at the foot of every page, in place of the file's own. Understood: {n}, {total}, {filename}, {date}.

Make the PDF

Add a file to get started.

    What this does

    This sets a page of HTML on paper, reading the stylesheet for the things that matter on paper: the page size and margins in @page, where the page breaks may and may not fall, and the type. A header or footer at the top level of the body becomes the running head or foot on every page, and it can carry the page number, the total, the filename and the date.

    What it will not do

    Every tool here says what it cannot do, in its own words, before you rely on it.

    Questions people ask

    Why does my page not look like it does in the browser?

    Because this is not a browser. Nothing is fetched and no script is run, and layout beyond the type is ignored — no floats, grid, flexbox or positioning — so a page laid out in columns is set as one column.

    Can I get a running header on every page?

    Yes. Put a <header> or <footer> directly inside <body> and it becomes the running head or foot. It understands {n}, {total}, {filename} and {date}.

    Is my file uploaded anywhere?

    No. The work happens in this browser tab, on your own machine. There is no server in this product to send a file to, which is why the promise is checkable rather than something you have to take on trust: open your browser's network panel and watch it do the work without making a request.

    Is there a size limit, or a limit on how many files?

    None that we impose. The limit is your own machine's memory, because that is where the work happens — a few hundred megabytes is comfortable on a laptop, and less on a phone. There is no daily task counter, no queue and no account.

    What does it cost, and what is the catch?

    Nothing, and there is no paid tier that unlocks features: the whole product is the free one. That is affordable because running it costs us nothing — your computer does the work — so there is no per-file cost to recover, no advertising and no data to sell.