PDF compression
The first internal preservation check is available below with downloadable fixtures and results. Representative browser and competitor benchmarks remain pending.
Our lossless compression check.
Three synthetic PDFs were processed through the actual compression adapter. PDF.js independently read and rendered all five input/output pages. Extracted text and rendered pixels matched at scale 1 in this Windows/Node test.
| Fixture | Input bytes | Output bytes | Saved | Text layer |
|---|---|---|---|---|
| cv | 1,823 | 1,167 | 35.98% | Retained |
| scan | 8,670 | 8,241 | 4.95% | Absent before and after |
| brochure | 27,538 | 25,871 | 6.05% | Retained |
The source fixtures used uncompressed object streams. These reductions do not predict results for already-optimized files. Forms, signatures, attachments, accessibility and browser/mobile performance were not certified by this check.
Download and reproduce the evidence
- cv: input PDF · output PDF
- scan: input PDF · output PDF
- brochure: input PDF · output PDF
Versions, method and SHA-256 hashes (JSON) · Raw results (CSV)
Reproduction: run npm test -- tests/tool-evidence.test.ts in the project checkout. The downloadable report records the environment. Timing is a single Node adapter run, not a browser speed score.
Full benchmark protocol
- Generate synthetic small, medium, large, malformed and boundary-case inputs with known properties.
- Record engine version, browser, operating system, memory and processor. Use the same device and settings for each comparison.
- Run a warm-up, then at least five measured repetitions. Report median and spread alongside failures.
- Check outputs independently for preserved content and declared losses. Keep the original and generated artifacts available for reproduction.
- Test cancellation, offline reload, repeated-job memory usage and a network-marker input.
Results table
Pending. No zero-time, zero-upload, compression-ratio or quality score is invented here.