Documents and knowledge · Edition No. 11 · 5 Sep 2026

Stirling-Tools/Stirling-PDF

About fifty PDF operations in one self-hosted container — nothing leaves the machine.

← Documents and knowledgeRead the whole edition →

91.5k stars · MIT at the root, with app/proprietary/, app/saas/, engine/ and several frontend directories carved out under separate licences · v2.14.3 (2026-08-06) · Track this in Scout

About fifty PDF operations in one self-hosted container — nothing leaves the machine.

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

What it is

A self-hosted web application offering around fifty PDF operations — split, merge, compress, convert, OCR, redact, sign, fill forms, rotate — through a browser interface, running entirely on your own hardware. One Docker container, no upload to anybody else.

What it is good for. Two threads in this ledger end in PDFs. Typst (Ed. 8 #7) produces a bilingual lead magnet to trade for an email address, and it will want compressing before it goes on the site. And the whole document-ingest question — Docling (Ed. 3 #9) against Marker (Ed. 9 #9), which Edition 9 said to settle on ten real PDFs — needs a corpus of genuinely messy multi-page files, which means splitting, rotating and OCR-ing documents that are already to hand. Doing either on a free upload-your-file website means posting unreleased marketing material and other people's documents to a company you know nothing about. This is the wildcard for a reason: it earns nothing this month, and then one afternoon it saves you.

Stars91.5k
LicenceMIT at the root, with app/proprietary/, app/saas/, engine/ and several frontend directories carved out under separate licences
Latestv2.14.3 (2026-08-06)checked 7 Sep 2026
Written inJava
NeedsDocker
RunsSelf-hosted on your own server
Setup effort
2 / 5
Payoff
2 / 5
Good
  • Around fifty operations in one container, entirely offline — nothing leaves the machine.
  • Very actively released; v2.12.0 in June brought large memory improvements to merging.
  • Useful across a whole workflow, not just one corner of one product.
Watch for
  • The licence is no longer simply MIT — see the note above. The root is MIT; app/proprietary/, app/saas/ and engine/ are not.
  • A JVM application that wants real memory headroom. Read Beszel (Ed. 5 #8) before adding it to a small server.
  • Never expose it to the internet unauthenticated. It will happily process whatever anyone uploads, at your expense.
  • juspay/hyperswitch — 43.0k ★, Apache-2.0, v1.123.1 (19 May 2026). Verified alive and genuinely impressive: an open payments orchestration layer across many processors. Dropped as far too heavy — this is what you adopt when you have three processors and a fraud problem, not when you have no checkout at all. Backlogged.
  • killbill/killbill — 5.7k ★, Apache-2.0. The veteran open-source subscription billing platform, but no release date could be read from the page, and it is a Java and Tomcat deployment. Lago covers the same ground with a provable weekly cadence. Backlogged.
  • usesend/useSend — 4.7k ★, AGPL-3.0. A self-hosted alternative to Resend that would sit neatly in front of Listmonk, and the missing sending layer that checkdmarc (Ed. 8 #1) exists to police. Dropped because the repository shows no releases at all, so recency could not be proven to the standard the other twelve met. Redirect: unsend-dev/unsend → usesend/useSend. Worth re-checking.
  • Rikorose/DeepFilterNet — 4.6k ★, MIT / Apache-2.0. Real-time noise suppression, considered for cleaning up screencast narration before ElevenLabs. No dated releases and no readable commit dates, so recency is unprovable from this sandbox. Backlogged; re-check later.
  • google/schema-dts — 1.2k ★, Apache-2.0, v2.0.0 (23 March 2026). Verified healthy and a real gem candidate: typed JSON-LD for Schema.org, which is the structured-data half of everything geo-optimizer-skill (Ed. 8 #3) has been asking for. Dropped only for slate fit — this page already carries two compliance items and a third would have made it a chore. Backlogged, and worth surfacing soon.
Install
docker run -d -p 8080:8080 --name stirling-pdf stirlingtools/stirling-pdf:latest
Screenshots
Stirling-Tools/Stirling-PDF: GitHub preview cardStirling-Tools/Stirling-PDF: Screenshot 1

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.