Catch the wrong version before it reaches the press. Protect your team from reprint costs, rework penalties, and client disputes — with a single command that runs on any machine, no setup required.
$ pdfjob -original contract-v1.pdf -modified contract-v2.pdf
[PDFJOB-CE] Community Edition — free to use, max 10 pages, max 150 DPI
[PDFJOB-CE] File A: 8 pages | File B: 8 pages | Comparing: 8 pages
[PDFJOB-CE] Rendering A+B [████████████████████████░░░░░░░░░░░░░░░░] 12/16
[PDFJOB-CE] Comparing [████████████████████████████████████████] 8/8
[PDFJOB-CE] Report [████████████████████████████████████████] 5/5
[PDFJOB-CE] Done. 3/8 pages differ. Report: diff_report.pdf
See it in action
Designed for QA, legal review, and document version control.
Every pixel is compared with a configurable colour-distance threshold. Catches changes invisible to the naked eye.
Two-pass coarse/fine shift search compensates for global page offsets between versions, reducing false positives.
Generates a PDF with a cover page, summary table, and side-by-side pages showing original, modified, and differences in red.
A and B render simultaneously. Configurable render and comparison worker pools saturate all available CPU cores.
PDFium compiled to WebAssembly is embedded in the binary. No Poppler, no cgo, no system libraries. Runs on Alpine, Debian, Ubuntu, Fedora.
Optional box-blur pre-processing suppresses rendering noise and sub-pixel anti-aliasing artefacts before comparison.
Both editions share the same comparison engine and produce the same report format.
Community Edition
Perfect for evaluating the tool, personal use, and small documents. No license required — just download and run.
# no license = Community Edition
pdfjob -original a.pdf -modified b.pdf
Professional
For professional and production use. Unlimited pages and DPI, bound to your machine with an Ed25519-signed license.
# Get your machine ID
pdfjob -machine-id
# Run with license
pdfjob -original a.pdf -modified b.pdf \
-dpi 300 -license pdfjob.lic
| Feature | CE | Pro | Site License |
|---|---|---|---|
| License required | No | Yes (.lic file) | Yes (.lic file) |
| Max pages per comparison | 10 | Unlimited | Unlimited |
| Max render resolution | 150 DPI | Unlimited | Unlimited |
| Pixel-level diff with threshold | ✓ | ✓ | ✓ |
| Auto-alignment (global shift) | ✓ | ✓ | ✓ |
| Anti-alias blur filter | ✓ | ✓ | ✓ |
| Parallel render + comparison workers | ✓ | ✓ | ✓ |
| PDF diff report (cover + summary + diff pages) | ✓ | ✓ | ✓ |
| Batch processing (hotfolders) | ✗ | ✓ | ✓ |
| JSON / XML data extraction | ✗ | ✓ | ✓ |
| Exit codes for RIP / pipeline integration | ✗ | ✓ | ✓ |
| Installs | 1 machine | 1 server | Unlimited (same site) |
| Zero runtime dependencies | ✓ | ✓ | ✓ |
| Linux (AMD64 / ARM64), Mac (Apple Silicon / Intel), Windows | ✓ | ✓ | ✓ |
Built with Go 1.26+. The binary is self-contained — no runtime setup required.
# no -license flag = Community Edition
pdfjob \
-original contract-v1.pdf \
-modified contract-v2.pdf \
-o report.pdf
# Outputs: report.pdf
# Get your machine ID
pdfjob -machine-id
# → AAAA-BBBB-CCCC-DDDD-EEEE-FFFF-0000-1111-XY
# Compare (with license)
pdfjob \
-original contract-v1.pdf \
-modified contract-v2.pdf \
-dpi 300 -license pdfjob.lic
-t value colour threshold (default 0.05)
-dpi value render DPI (default 150)
-pages range e.g. "1-10" or "1,3,7-12"
-align auto-align pages (default true)
-anti-alias-blur n blur radius (0 = off)
-render-workers n parallel render (default 2)