Your files stay on your device HTML to PDF: Sanitized Authoring, pdf.js-Verified Author a PDF from HTML in your browser: sanitized input, real paged rendering, bundled fonts, every output reopened with pdf.js before download. HTML sourceOutput modePaperMargin (px, all sides)LandscapeHeader textFooter textOutline from headingsTagging PDF/UA modes validate the document. They require a title, so turn metadata on and set one. PDF/ALanguageWrite metadataLocal fontsAdd fontsWOFF2/WOFF/TTF/OTF as bytes, set the family name your CSS references.Image bundleAdd imagesReference them in the HTML as . Resolved from the bundle, never fetched.AttachmentsEmbed filesUp to 20 files show in the viewer's attachment panel .Render PDF - Scripts never run; style elements and remote stylesheets are stripped and counted. - CSS is a document-oriented subset, not Chromium; @page, blur, drop-shadow, and backdrop-filter are out. - Remote assets are never fetched, images survive as data URLs or user-bundled refs; GIF images are refused. - Fonts ship as bundled Latin/Latin-ext bytes ( takumi-pdf@0.13.1 ); a glyph no registered font covers fails the render with the char and codepoint. - Every output is reopened with pdf.js. Page count and page size must match or no file is offered. - Complex webpage capture is not supported: this is document authoring, not a site printer. Nothing in yet Paste, drop, or type to begin. Everything stays on this device. paste HTML, pick options, render Next door in Files - Markdown to PDF (/files/markdown-pdf) - SVG sanitizer (/files/svg) - Markdown ⇄ HTML (/text/markdown) All files tools (/files) Canonical HTML: https://nutter.tools/files/html-pdf Markdown version: https://nutter.tools/files/html-pdf/index.md Plain-text version: https://nutter.tools/files/html-pdf/index.txt Agent index: https://nutter.tools/llms.txt