Comparison
Open-source PDF tools you can read and run yourself
“Where does my document go?” is normally answered by a privacy policy, and a privacy policy is the one kind of answer you cannot test. The thing it describes — what a program does after it receives your file — is not observable from where you are standing, so a careful site and a careless one can write the identical paragraph and you have no way to tell them apart.
That is the whole job the licence does here. It replaces a sentence you have to believe with a repository you can read and a container you can run. It is not a claim to be better than anyone. It is a claim to be checkable, which is a much smaller and much more useful thing.
The licence position, in full
- MIT, copyright 2026 OpenTools Contributors. You may use, copy, modify, merge, publish, distribute, sublicense and sell it, including commercially, provided the notice travels with it.
- The whole site is the repository. Not a client-side demo with the real work behind an API — there is no API. The tool engines, the interface, the tests and the Worker that serves it are all in the same tree at github.com/mgbuilderos/opentools.
- No account, no licence key, no phone-home — on the public site and in the container alike.
| Dependency | What it does | Licence |
|---|---|---|
| pdf-lib | Reads and writes the PDF page graph | MIT |
| @pdf-lib/upng, pngjs, pako | PNG and stream compression | MIT, Zlib |
| onnxruntime-web | Runs the background-removal model in the tab | MIT |
| u2netp.onnx | The background-removal model weights | Apache-2.0 |
| qrcode, dijkstrajs | QR generation | MIT |
| React, Base UI React | The interface | MIT |
| Lucide React | The icons | ISC |
| vinext | The build and the Worker runtime output | MIT |
Exact versions, tarball integrity values and the complete transitive graph are in THIRD_PARTY_NOTICES.md and package-lock.json in the repository.
Run the whole site on your own machine
No Cloudflare account and no toolchain. The published image runs the same Worker runtime the live site does:
docker compose up -d
# then open localhost:8796Building from source instead is a two-stage docker build against a digest-pinned Node base image; the resulting image was about 692 MB when it was measured on 18 September 2026, and it grows as pages are added, so re-check rather than trust that figure. The full instructions, the environment variables and the optional access gate for an instance on a private network are in docs/SELF_HOSTING.md.
The container was measured serving with no network at all. Started with --network none, with the probe running inside it, the home page, the PDF tools, the guides and the sitemap all answered 200 while carrying connect-src 'none' in the response policy. The one route in that run served differently is /image/background-remover, which gets connect-src 'self' because it loads its ONNX model and runtime from the same origin — as does /image/editor, which shares that runtime. An outbound request from inside the container fails to resolve, as it should.
What reading the source settles
These are the questions a privacy policy can only answer with a sentence, and that the repository answers with a file you can open:
- Does a tool ever send my file anywhere?
lib/tools/local-source-policy.test.tsscans every engine, worker, component and route source for network primitives and literal remote addresses and fails the build when one appears. - What stops it at runtime?
lib/security/content-security-policy.ts— thirty-odd lines deciding what every route is served. - Does the claim get re-checked?
e2e/egress-proof.spec.tsattacks the site on every release and publishes what it measured, with the date it ran. - What does a tool refuse to do? Each engine’s test file. The refusals are tested as carefully as the successes — a scanned PDF handed to PDF-to-Word is rejected by name rather than returned as an empty document, and there is a test that fails if that ever stops being true.
What open source does not give you
If this section were missing, everything above it would be advertising.
- It is not a warranty
- The MIT licence says so in capital letters: the software is provided “as is”, without warranty of any kind. If a tool mangles a document, the licence gives you no claim against anybody.
- It is not a support contract
- There is no service level, no response time and nobody on call. A commercial service sells exactly that, and for some work it is the right purchase.
- It is not a security audit
- Published source can be read. It does not follow that anyone has read it. No third-party audit of this codebase has been commissioned or completed.
- It is not a guarantee the project continues
- This is a small project. The licence means the code cannot be taken away from you, which is a real protection — but it is not the same as the project being maintained next year.
- Self-hosting moves work to you
- Running your own container means you own its updates, its patches and its TLS. That is a genuine cost, and it is the reason most people should simply use the public site.
Start with a tool
All of these are live, free and need no account.
Or read what each of the thirteen PDF tools will not do, and how to check which architecture any file tool uses.