Weblitz Preview

The measurements

Weblitz's own measurements: every document beside Chrome 156's PDF of it, the web's own tests area by area, the other HTML to PDF libraries on the same documents, and how each was made. Each figure carries its date.

Compare two outputs yourself · The summary

17 documents beside Chrome's own PDFs measured 2026-11-07

Documents of the kind people print, each compared with Chrome 156's PDF of it: the number of pages, every element's box (within half a pixel), every line of text, and the PDF's text. A score of 100% prints as Chrome prints.

  • An invoice100%
  • A bank statement100%
  • A letter100%
  • A newsletter100%
  • A Bootstrap invoice100%
  • A Tailwind dashboard100%
  • A React app (Northwind)100%
  • A Chart.js report100%
  • Tables100%
  • Flexbox100%
  • Grid100%
  • SVG and pictures100%
  • Paged media: headers, footers, page numbers100%
  • Inline text100%
  • CSS 2.1 blocks100%
  • Backgrounds and borders100%
  • International text: Arabic, Hebrew, Thai, Hindi, Chinese, Japanese, emoji100%

The web's own tests, area by area measured 2026-11-07

The Web Platform Tests are what browsers are checked against. In each area: Weblitz passes X of the Y rendering tests that Chrome 156 passes when it prints.

Complete in every area. In each of the 54 areas below, Weblitz passes every rendering test Chrome 156 passes when it prints. The 622 tests a printed page cannot have are left out, each listed with its reason.

AreaWeblitz passes
CSS 2 (the core of CSS layout)6,084 of the 6,084
Grid1,667 of the 1,667*
Text1,223 of the 1,223*
Writing modes1,117 of the 1,117*
Fragmentation (page and column breaks)1,077 of the 1,077*
Flexbox1,008 of the 1,008*
User interface (outlines, carets, appearance)948 of the 948*
Transforms778 of the 778
Backgrounds and borders691 of the 691
Overflow615 of the 615*
Sizing537 of the 537
Gaps and gap decorations527 of the 527*
HTML canvas517 of the 517*
Masking and clipping486 of the 486
Multi-column462 of the 462*
Images and gradients441 of the 441*
Containment423 of the 423
Fonts320 of the 320
Filters314 of the 314
Colour297 of the 297
HTML rendering293 of the 293
WOFF2 fonts291 of the 291
HTML elements278 of the 278*
MathML263 of the 263*
Positioning249 of the 249
Text decoration241 of the 241*
Counter styles238 of the 238
Pseudo-elements231 of the 231
Shapes231 of the 231
Selectors225 of the 225*
Anchor positioning220 of the 220*
Paged media (@page)194 of the 194
Custom properties179 of the 179
Conditional rules and container queries170 of the 170*
Values and units163 of the 163
Tables161 of the 161
Lists and counters156 of the 156*
Inline layout152 of the 152*
Display147 of the 147
CSS Layout API134 of the 134*
HTML DOM127 of the 127
CSS Paint API114 of the 114*
Custom highlights106 of the 106*
Viewport105 of the 105
Ruby97 of the 97
Shadow DOM styling97 of the 97*
Motion paths95 of the 95
Borders and corner shapes93 of the 93*
Printing38 of the 38
Other CSS modules567 of the 567*
SVG499 of the 499*
Other web platform areas147 of the 147
Other HTML112 of the 112
Image formats112 of the 112

* Some of these tests Chrome 156 passes only with its experimental web platform features on. Weblitz passes them the same way: with ExperimentalWebFeatures on (off by default, like a stable Chrome). Without it, Weblitz renders these features as stable Chrome does.

How we count: every rendering test of these suites that Chrome 156 passes when it prints, its experimental features on. A feature Weblitz does not support yet counts as failed, never as left out. Left out: only what a printed page cannot have (view transitions, media playback, permission prompts, scrolling and scroll-driven animations, editing, selection, validation bubbles, windows and navigation), and the few tests Chrome itself fails on our machine when run again. The list of every test left out, with its reason. Script tests are not in this table: in their areas too, every subtest that applies agrees with Chrome's, measured the same day.

Beside other HTML to PDF libraries scores measured 2026-11-04 times and sizes 2026-11-07

The same 17 documents, the same fonts for every library, each scored against Chrome 156's PDF (headless Chrome, driven by Puppeteer): 100% prints as Chrome prints. "Exact" counts only what did not move at all. Each library ran in the licence mode shown, on an Apple M4 Pro laptop with .NET 10; the evaluation modes' marks were left out of the scores.

LibraryScoreA one-page PDFEngine size
Weblitzits own, no browser · 2.0 preview100%1.8 ms119 MB
Puppeteer with ChromeChrome itself · PuppeteerSharp 25.15.0, Chrome 156 · open sourcethe reference12 ms441 MB
Playwright with ChromeChrome itself · 1.64.1, Chrome 156 · open sourcethe reference12.6 ms876 MB
Syncfusion HTML-to-PDFChromium (Blink) inside · 35.1.43 · trial, no key99.2%414 ms695 MB
HiQPdf NextChromium inside · 19.0.3 · demo, no serial number99.1%296 ms384 MB
SelectPdfChromium inside · 26.5.0 · evaluation, no key99.0%78 ms472 MB
EVO HTML to PDF NextChromium inside · 15.0.3 · demo, no key98.9%296 ms384 MB
Princeits own print engine · 17 · free non-commercial licence85.9%10.9 ms43 MB
Aspose.HTML for .NETits own engine · 26.10.0 · evaluation (first 4 pages of a document)81.7%17.5 ms10 MB
iText pdfHTMLits own engine, no JavaScript · 6.3.4 (iText 9.8.0) · AGPL-3.067.5%9.4 ms18 MB

Timed 2026-11-07 on the same Mac, every library warm (started first, then a warm-up), in its trial or evaluation mode, Weblitz unlicensed too: "A one-page PDF" is the median time per document over 200 one-page letters, one after another on one thread; "The 17 documents" the median time for the bench's documents, one after another. Engine size: what the library puts on a Linux x64 server, measured 2026-11-07: what dotnet publish -r linux-x64 adds to an application, plus the browser it downloads (Puppeteer: Chrome; Playwright: Chrome and Chrome's headless shell) or the program it installs (Prince). Weblitz's size includes its fonts, V8 and the parts of SSRS2's engine it prints with. Aspose.HTML's evaluation mode converts the first 4 pages of a document: its score and its time count those pages; on Linux it also needs libgdiplus. iText pdfHTML runs no JavaScript. Prince, Aspose.HTML and iText printed fewer pages or less text than Chrome on 2, 5 and 6 of the documents. Syncfusion's package for Macs carries an Intel Chromium, which ran translated by Rosetta 2.

Where each runs, and what it costs read 2026-11-07

LibraryRuns on, as its vendor saysList price
WeblitzWindows, Linux and macOS (x64, ARM64), Alpine with gcompat; Azure App Service on Windows, checked page for pageIn the SSRS2 licence: USD 799 a year for the whole company, with SSRS2's report engine
Puppeteer with ChromeWindows, macOS, LinuxFree (MIT); you install and patch Chrome
Playwright with ChromeWindows 11 and Server 2019 or later, macOS 14 or later, Debian and Ubuntu (x64, ARM64); not AlpineFree (open source); you install and patch the browsers
Syncfusion HTML-to-PDFWindows, Linux, macOSUSD 1,199 per developer a year (Document SDK); a free Community licence for small companies
HiQPdf NextWindows and Linux (x64, ARM64), macOS (Apple Silicon); Azure App Service on Windows and LinuxUSD 1,095 once for any number of developers (Enterprise), renewal at half price
SelectPdfWindows (x64, x86; not ARM64), Linux (x64, ARM64), macOS 13 or later (Apple Silicon); Azure App Service from the Basic planUSD 1,599 once for unlimited developers (Enterprise OEM), then USD 999 a year
EVO HTML to PDF NextWindows and Linux (x64, ARM64), macOS 12 or later (Apple Silicon); Azure App Service on Windows from the B1 planUSD 1,200 once for unlimited developers (Company), then USD 550 a year
PrinceWindows and Linux (x64, ARM64, Alpine too), macOS, FreeBSDUSD 3,800 per server (Server licence)
Aspose.HTML for .NETWindows, Linux, macOS (x64 listed; ARM64 not stated)USD 999 for one developer and one location (Developer Small Business)
iText pdfHTMLNot stated on its pageAGPL (your application's source disclosed) or a commercial licence on quote

What each vendor's own pages say, read 2026-11-07: each cell links the page it comes from. List prices in US dollars, excluding tax; a licence sold once includes a year of updates. On Alpine, Weblitz needs the gcompat package (Platforms).

In a Docker image measured 2026-11-07

  • Weblitz on Microsoft's .NET 10 runtime image, with libfontconfig1330 MB
  • Puppeteer's own image (ghcr.io/puppeteer/puppeteer, Puppeteer 25.16.0)2.05 GB
  • Playwright's .NET image (mcr.microsoft.com/playwright/dotnet, v1.64.1-noble: the .NET SDK and three browsers)3.59 GB

Linux x64 images as docker images reports them. Weblitz's renders a PDF in the container; Microsoft's runtime image alone is 203 MB.

Azure App Service on Windows measured 2026-11-06

Weblitz ran inside App Service's Windows sandbox (a B1 plan): the 17 bench documents and a Chart.js page printed there score what they score on our Mac, page for page. Nothing to install on the plan, and no browser process for the sandbox to refuse. Some Chromium-based libraries now say they run there too, from a Basic plan (where each runs).