Documents and knowledge · Edition No. 34 · 28 Sep 2026

pdfcpu/pdfcpu

One downloaded program that validates, merges, splits, shrinks, encrypts, signs, stamps and extracts text and images from PDFs, up to PDF 2.0.

← Documents and knowledgeRead the whole edition →

8,746 stars · Apache-2.0, read from /blob/master/LICENSE.txt on 2026-09-28 after both /blob/main/LICENSE and /blob/master/LICENSE returned 404; the standard text, but the copyright line is the unfilled appendix template, "Copyright [yyyy] [name of copyright owner]" · v0.15.0 (2026-08-11), read from /releases/latest and confirmed by ungh to the second; v0.16.0-rc.1 of 2026-09-20 is newer but is a release candidate, which is why /releases/latest correctly serves the stable · Track this in Scout

One downloaded program that validates, merges, splits, shrinks, encrypts, signs, stamps and extracts text and images from PDFs, up to PDF 2.0.

▶Repo detailsthe review · specs · pros & cons · install

What it is

A PDF toolkit, available both as a command-line program and as a Go library. It validates, optimises, encrypts, signs, merges, splits, extracts images and text, adds watermarks and stamps, rearranges pages and fills forms, up to PDF 2.0.

What it is good for. Anyone who handles PDFs regularly and has been uploading them to a website to do it. Contracts, scans, invoices and reports are exactly the documents nobody should be uploading to a free converter. It is also the right answer for doing the same job to two hundred files, because a command in a loop costs nothing and a web form costs an afternoon.

Stars8,746
LicenceApache-2.0, read from /blob/master/LICENSE.txt on 2026-09-28 after both /blob/main/LICENSE and /blob/master/LICENSE returned 404; the standard text, but the copyright line is the unfilled appendix template, "Copyright [yyyy] [name of copyright owner]"
Latestv0.15.0 (2026-08-11), read from /releases/latest and confirmed by ungh to the second; v0.16.0-rc.1 of 2026-09-20 is newer but is a release candidate, which is why /releases/latest correctly serves the stable
Good
  • One static file with no dependencies, installable through Homebrew, MacPorts or Fedora's package manager, or just downloaded. Upgrading means replacing the file.
  • Apache-2.0, read from the licence file, with no restriction on commercial or hosted use.
  • Nine years old and still shipping. Version 0.15.0 came eight days after 0.14.0 to fix what that release turned up, which is the behaviour of a maintainer who is paying attention.
Watch for
  • Everything is flags on a command line and there is no visual interface. The README is a signpost, so the real instructions live on the project's website, and nobody will be productive from the repository alone.
  • It has been on version 0.x for nine years, and the Go library interface is still being reshaped — the current release candidate describes an updated API with a new configuration design. The command line is far more stable than the library.
  • No memory or disk figures are published. Whole-file processing in memory is normal for this kind of tool, so very large scanned PDFs are the risk. The project added a progress flag for long batch runs, which suggests big collections take real time.
Similar repositories
  • qpdf/qpdf

    5,346 stars, code on 22 August 2026; structural PDF surgery from a command line, deliberately content-preserving, so it does not stamp text or lay out new content, and it is the engine underneath several other tools.

    Track this in Scout
  • py-pdf/pypdf

    10,168 stars, code on 21 August 2026; the same page-level work as a pure Python library, so it is for embedding in Python code and has no command-line tool, and it is slower on large files.

    Track this in Scout
  • Hopding/pdf-lib

    8,605 stars, and its last code landed on 17 July 2024, about twenty-six months ago, despite still being the usual recommendation for PDF work in JavaScript.

    Track this in Scout
Install
# macOS
brew install pdfcpu
# Fedora
sudo dnf install golang-github-pdfcpu
# or with a Go toolchain
go install github.com/pdfcpu/pdfcpu/cmd/pdfcpu@latest
# then check it
pdfcpu version
pdfcpu merge merged.pdf in1.pdf in2.pdf
Screenshots
pdfcpu/pdfcpu: GitHub preview cardpdfcpu/pdfcpu: Screenshot 1pdfcpu/pdfcpu: Screenshot 2pdfcpu/pdfcpu: Screenshot 3pdfcpu/pdfcpu: Screenshot 4

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.