Convert HTML to PDF — Free, in Your Browser
No account. No upload. Just the tool.
You wrote some HTML — a styled invoice, a one-off report, a landing page mockup, an emailable summary — and now you need it as a PDF. Most “HTML to PDF” services want you to upload your markup, register an account, or run a CLI. Signegy doesn’t. Paste the HTML or drop the .html file, hit a button, get a PDF. The conversion happens entirely in your browser.
How to Convert HTML to PDF with Signegy
- Open the tool above. No login.
- Pick Paste HTML to type or paste your markup directly, or Upload .html to drop a file. Both modes feed into the same renderer.
- As soon as your markup loads, you’ll see a side-by-side editor and live preview. Edit on the left, see the rendered version on the right.
- Click Download PDF. The PDF saves to your device using
document.pdfas the default name (or your filename if you uploaded one).
That’s the whole flow. No queue, no email confirmation, no “your PDF is ready” link. The bytes are generated, downloaded, and gone the moment you close the tab.
What Renders Reliably
This tool is built on html2canvas plus jsPDF — the same combination that powers our Word to PDF and Image to PDF converters. The result is a screenshot-grade rendering: pixels match what the browser would show on screen.
That means:
- Headings, paragraphs, lists, tables — all standard HTML elements render exactly as they would in a browser tab.
- Inline and embedded CSS —
style=""attributes and<style>tags work fully. Flexbox, grid, custom properties, gradients, transforms — all supported. - System and CDN-hosted fonts — common system fonts render natively. Google Fonts, Adobe Fonts, and any CORS-friendly font CDN load before capture.
- SVG inline graphics — vector shapes, icons, charts encoded as SVG render crisply at any zoom level.
- Embedded images (data URIs) — base64-encoded images embedded directly in the HTML render reliably.
- Print-specific CSS —
@page,@media print, andpage-break-*properties are honoured during capture.
What Doesn’t Work, Honestly
We’d rather tell you up-front than have you discover it after a botched export.
- JavaScript is not executed. This is intentional and important. If your HTML relies on scripts to populate content (a React app, Vue SPA, or any template that renders client-side), the PDF will capture only the empty shell. Render your app first in your browser, copy the resulting DOM, and paste that static HTML in.
- External resources need CORS. External CSS files, image URLs, web fonts — they have to be served with
Access-Control-Allow-Originheaders permissive enough for the browser to read them. Most public CDNs satisfy this; many private servers do not. The safe path is to inline critical CSS and embed images as data URIs. - No syntax highlighting or LaTeX. If you need code blocks coloured (Prism, highlight.js) or math equations (KaTeX, MathJax), render them in your source first and paste the resulting HTML. The tool itself doesn’t ship with these libraries — that would bloat the page for the 90% of users who don’t need them.
- Cross-origin iframes are blocked.
<iframe src="https://other-site.com">content can’t be captured due to browser sandboxing. Iframes with same-origin content work.
When This Tool Is the Right Choice
Quick one-off PDFs. A statement, a receipt, a custom report, a snapshot of a styled email — anything you’d rather paste once than build a templating pipeline for.
Privacy-sensitive content. Internal financial summaries, draft NDAs, anything with names and numbers you’d rather not upload to a free third-party converter that might cache it. Signegy never sees your markup.
No-install conversion from any device. Works on a Chromebook, an iPad, a locked-down corporate Windows machine — anywhere a modern browser runs. No CLI, no Docker container, no headless Chrome to manage.
Designers prototyping print layouts. Drop in your HTML mockup, iterate on the CSS in the textarea, and re-export until the page-break rules and margins look right.
When Headless Chrome or Puppeteer Beats This Tool
If you’re generating thousands of PDFs from a server (invoices, statements, exam papers), you want a server-side pipeline with Puppeteer or Playwright. Browser-based conversion is great for one-off exports; it’s the wrong tool for high-volume automation. Likewise, if you need pixel-identical rendering of a JavaScript-driven SPA at exactly the dimensions of a specific print medium, headless Chrome will give you tighter control over the capture.
For everything else — for the document you’re holding right now in a tab — paste it and download.
Pair With Other Free Tools
Once you have a PDF, the rest of the toolkit picks up:
- Sign PDF online to add an electronic signature with a free verifiable audit certificate.
- Compress PDF if the result is too big to email.
- Merge PDFs to combine your converted HTML with attachments or a cover letter.
- Add a watermark to mark the export as DRAFT or CONFIDENTIAL.
- Markdown to PDF if your source is
.mdrather than.html.
Everything stays in the browser. Nothing uploads.
Signegy provides general information, not legal advice. Consult a qualified legal professional for advice specific to your situation and jurisdiction.
Frequently Asked Questions
Does my HTML file get uploaded?
No. The whole conversion runs in your browser. Your markup is parsed by html2canvas and printed to a PDF by jsPDF, both client-side libraries. Nothing is sent to a server, nothing is logged, nothing is stored once you close the tab.
What about external CSS, fonts, and images referenced by URL?
External resources only render if the host serves them with permissive CORS headers. Most CDN-hosted assets (Google Fonts, jsDelivr, unpkg, Cloudflare-fronted images) work fine. Resources from servers without CORS are blocked by the browser before html2canvas can capture them. The safe move is to inline critical CSS in a <style> tag and embed images as data URIs, or paste a self-contained HTML file.
Will JavaScript inside my HTML run?
No. JavaScript inside the pasted or uploaded HTML is intentionally not executed. The tool renders the static markup as-is — what you see is what gets printed. If your final layout is generated by JS (a SPA, React app, or template hydration), render it first in your browser, then save the resulting DOM as a static .html file before converting.
Does print-specific CSS like @page and @media print work?
Yes, html2canvas honours print media queries and most @page rules (margins, orientation hints). You can use page-break-before: always; on a heading to start a new PDF page, or @media print { ... } to hide elements that should only show on screen.
What page size does the PDF use?
A4 portrait by default with 12mm margins on all sides. The renderer paginates automatically — if your content overflows one A4 page, it spills onto a second page at the natural break, or wherever your CSS page-break rules say.