Benchmarks

Faster by design

A static Go binary against two JVM validators, on the same 773-file corpus.

gopdfrab validates PDF/A-1b at 2,939 files per second in batch mode, against 155 for Apache PDFBox Preflight and 130 for veraPDF — roughly 19× to 23× faster. On cold single-file runs the difference is larger still, because both alternatives pay JVM startup on every invocation: 9.5 ms versus 295 ms and 991 ms. It also uses under a tenth of the memory and ships as a single static binary that needs no JRE.

Results

gopdfrab, veraPDF and Apache PDFBox Preflight over the same 773-file PDF/A-1b corpus, measured 2026-08-04. Each row states its unit and whether higher or lower is better.
Metric gopdfrabPDFBox PreflightveraPDF
Batch throughput files / sec · higher is better2,939155130
Cold single-file latency ms · lower is better9.5295991
Peak memory MB · lower is better80945728
Deployment footprint MB · lower is better12.311.715.3

Batch throughput

files / sec · higher is better
gopdfrab2,939
PDFBox Preflight155
veraPDF130

Whole 773-file corpus in one process. gopdfrab finishes in 0.27 s.

Cold single-file latency

ms · lower is better
gopdfrab9.5
PDFBox Preflight295
veraPDF991

One process per file, median corpus file, including process/VM startup.

Peak memory

MB · lower is better
gopdfrab80
PDFBox Preflight945
veraPDF728

Max RSS over the batch run.

Deployment footprint

MB · lower is better
gopdfrab12.3
PDFBox Preflight11.7
veraPDF15.3

Stripped static binary vs. CLI jars. The binary sizes are close — the difference is that the jars additionally need a JRE, another 40 to 200 MB, and the gopdfrab binary contains fonts and colorspaces for the PDF/A conversion functionality.

Methodology

One run of the benchmark harness in the gopdfrab repo (commit 1834292, 2026-08-04) over the combined Isartor + veraPDF PDF/A-1b corpora (773 files), on one Intel Core Ultra 7 255H running linux/amd64, against veraPDF 1.30.2 and PDFBox Preflight 3.0.7. Cold runs one process per file and includes VM startup, batch runs one process for the whole corpus and isolates the engine. Startup alone is 7.9 ms for gopdfrab against 102 ms for Preflight and 648 ms for veraPDF. Absolute numbers depend on hardware and other factors.

Measured
2026-08-04
Hardware
Intel Core Ultra 7 255H, linux/amd64
gopdfrab
commit 1834292, go1.26.5
veraPDF
1.30.2
PDFBox Preflight
3.0.7
Corpus
773 files (Isartor + veraPDF PDF/A-1b)
Read both regimes together
Batch throughput isolates the validation engine; cold latency includes process and VM startup and is what a CI step or a serverless invocation actually pays. Neither number alone describes the tool.

What this comparison does not say

veraPDF and PDFBox Preflight are mature, widely trusted projects with broader scope than gopdfrab has today. veraPDF covers PDF/A-1, -2, -3 and -4 as well as PDF/UA; gopdfrab currently implements PDF/A-1b only, with the other parts on the roadmap. If you need PDF/A-2 or PDF/A-3 validation right now, veraPDF is the correct tool and this benchmark is not an argument against it.

gopdfrab passes 569 of 569 files in veraPDF's own corpus and 204 of 204 in the Isartor Test Suite, and documents it converts pass independent veraPDF validation. The benchmark is not about correctness or coverage, it is about cost per validation within PDF/A-1b.

Frequently asked questions

Try it on your own documents

Run the same engine in your browser, or install the CLI and point it at a directory.