Browser results for 6 QuickMerge tools

Historical cross-engine attempts for a measured subset, with failures retained and platform capabilities detected inside each engine.

Home › Tools › Browser results for 6 QuickMerge tools

Coverage: recorded cross-engine attempts exist for 6 of 34 configured size-ladder routes. Only those 6 appear in the tool matrix; this page does not claim compatibility for the rest of the site.

For supported local browser operations, compatibility depends on the rendering engine and processing library. This page reports historical Chromium, Firefox and Playwright WebKit attempts from August 11, 2026.

How this was tested

  • Test dateAugust 11, 2026 (UTC)
  • Operating systemUbuntu 24.04.4 LTS (linux 6.18.5-fc-v20, x64)
  • CPUIntel(R) Xeon(R) Processor @ 2.80GHz — 4 cores
  • Installed memory15.7 GB
  • Chromium151.0.7922.34
  • Firefox153.0
  • WebKit26.5
  • Browser modeHeadless, default flags, one fresh browser per run
  • Playwright1.62.1
  • Node.jsv22.22.2
  • Per-run timeout180 seconds
  • Library sourceslocal cache (scripts/measure/.engine-cache) — no network during the sweep
  • Fixture seed1366773063

Capability rows come from feature detection executed inside each engine — typeof SharedArrayBuffer, an actual canvas.toBlob encode attempt for each image format, and so on — not from documentation. Tool rows come from the same sweep that produced the limits page: a real file into a real page, with the result blob as the completion signal. Completed raw results are public in measurements.json; the harness source remains private.

WebKit here is not Safari on your iPhone. It is Playwright's Linux WebKit build, which shares WebKit's engine core with Safari but not its platform integration, its JIT configuration, or its per-tab memory limits. Mobile Safari is outside this dataset. A completed WebKit run records only that fixture and environment; it does not establish physical-device compatibility.

Recorded tool attempts by engine

“Completed” means a fixture went in and an output blob came out in that engine during this recorded sweep. The size shown is the largest completed fixture; the full ladder and failure modes are on the limits page.

ToolProcessing libraryChromiumFirefoxWebKit
Merge PDFpdf-libCompleted — to 50 MBCompleted — to 50 MBCompleted — to 50 MB
Split PDFpdf-lib, JSZipCompleted — to 8.6 MBCompleted — to 50 MBCompleted — to 50 MB
Organize PDFpdf-lib, pdf.js, canvas 2DCompleted — to 50 MBfailedCompleted — to 50 MB
Rotate PDFpdf-libCompleted — to 50 MBCompleted — to 50 MBCompleted — to 50 MB
Compress PDFpdf-lib, pdf.js, canvas 2DCompleted — to 100 MBfailedCompleted — to 100 MB
PDF to Wordpdf.js, mammoth.js, FileSaver.js, docx, canvas 2DCompleted — to 50 MBfailednot tested

Platform capabilities, feature-detected

Each row was tested by running the detection in the engine itself. The image-format rows are the strongest form of that test available: the harness creates a canvas, calls toBlob with the format, and checks the MIME type of what comes back — so a browser that silently falls back to PNG is recorded as not supporting the format, which is the answer that matters.

CapabilityChromiumFirefoxWebKitTools depending on itWhat it is for
WebAssemblyYesYesYes4 of 52Runs the PDF password tools (qpdf compiled to WASM) and the OCR engine. Without it those tools cannot start at all.
SharedArrayBufferNoNoNo—Unavailable in the recorded page contexts. Cross-origin isolation is one requirement for exposing this capability; the adjacent row records that context. This does not measure OCR thread count or performance.
OffscreenCanvasYesYesYes—Detected in each recorded engine. The current tool inventory does not declare it as a processing dependency.
File System Access APIYesNoNo—Would allow saving straight to a chosen folder instead of going through the downloads directory. No tool depends on it, so nothing breaks where it is missing.
Web WorkersYesYesYes14 of 52Some pdf.js parsing and Tesseract OCR work uses workers. Many QuickMerge operations and orchestration steps still execute on the main thread, so this is not a promise that the tab remains responsive.
createImageBitmapYesYesYes21 of 52An available path for decoding an image before drawing it to a canvas. The inventory does not treat it as a hard requirement because an image element can provide a fallback path.
performance.memoryYesNoNo—Not a capability any tool uses — it is how the memory column on /limits gets measured, and its absence in two engines is why that column is Chromium-only.
crossOriginIsolatedNoNoNo—Not a feature but a page state, shown here because it is what gates SharedArrayBuffer. False everywhere because the site does not send the required headers.
canvas encode: WebPYesYesYes6 of 52Needed by every tool offering WebP output.
canvas encode: AVIFNoNoNo—Not supported for encoding by any engine tested, and no tool offers AVIF output. Listed because it is the format people most often ask for next.
canvas encode: JPEGYesYesYes11 of 52Needed by everything that writes a JPEG, including the PDF compressor, which rasterises pages to JPEG internally.
canvas encode: PNGYesYesYes9 of 52The canvas default, and the fallback everywhere else.
crypto.subtleYesYesYes3 of 52The Web Crypto digest implementation behind the hash tool.

What this means in practice

3 of 6 recorded routes produced an output in every listed engine. Other cells retain failed, timed-out or untested results. These historical blob checks do not verify every output value or the current release.

Three things are genuinely worth knowing:

  • SharedArrayBuffer was unavailable in the recorded contexts. Cross-origin isolation was also false in that run. Those observations do not establish the current OCR implementation’s thread count or predict the speed of a different release.
  • WebAssembly is required by 4 of them —Protect PDF, Unlock PDF, OCR, Image to Excel. Every engine tested has it. A browser old enough to lack it will not run those tools at all, and there is no fallback path.
  • AVIF encoding does not exist in any of them. Decoding AVIF is widely supported; writing it from a canvas is not, in any engine tested here. That is why no QuickMerge tool offers AVIF output, and it is not an oversight.

For how large a file each of these engines actually got through, see the measured limits.