borb
Dual-licensed pure-Python library for creating and manipulating PDFs, with an automatic page-layout engine and no non-Python dependencies.
Opens the vendor's own site.
Jobs covered
Open a task to see exactly what the vendor documentation supports.
Convert
Browse all convert toolsPDF creation plus Markdown-to-PDF and OCR add-ons; not a Word or Excel file converter
Merge
Browse all merge toolsmerging existing PDF documents and manipulating their page trees with the pure-Python borb library
Edit
Browse all edit toolsediting a PDF with the borb Python library, editing document metadata and appending pages to the page tree, with borb described as a Python library for creating and manipulating PDFs and dual licensed under AGPL and a commercial licence
Where your files are processed
No server involved
A Python library that processes files inside the calling process, so documents stay local. One nuance belongs with that verdict: borb sends usage telemetry by default - read and write events posted to a vendor endpoint, with a pseudonymous identifier derived from the connection IP, queued in memory until exit. No document content, metadata or filenames are sent, and it is opt-out rather than opt-in. This is the first record in the index where a locally installed library is network-active by default. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.
The document itself never leaves the machine: it is an in-process Python package with no hosted component, and borb's privacy policy states plainly that 'No document content, metadata, or filenames are transmitted'. But borb is not silent on the network.
By default it posts usage statistics - event type, document and page counts, version, operating system, licence validity window and company, plus a pseudonymous identifier derived from the connection IP address - to a vendor-managed endpoint when it reads or writes a PDF, and it queues those events in memory until a threshold is reached or the process exits. That is opt-out via UsageStatistics.opt_out(), not opt-in, and it happens from inside a locally installed library rather than from a service you chose to use.
What it does
borb is a pure-Python PDF library that both writes new documents and manipulates existing ones. Content is described as Python objects - paragraphs, tables, lists, images, charts, barcodes, form fields and annotations - and a layout engine places them automatically, handling margins, padding, leading and multi-page flow.
It models a PDF as a JSON-like tree of lists, dictionaries and primitives rather than a rendered page, which is how it opens documents, moves and removes individual pages from the page tree, appends one document to another, edits document metadata such as title and author, and extracts text and images.
Best for
Python developers who want a pip-installable library with no compiled dependencies, are comfortable creating documents in code rather than from templates, and whose licence position allows AGPL or can fund a commercial tier.
Worth knowing
The AGPL is the whole decision, and it reaches further than most people expect. Using borb in a closed-source product, or in a paid service, requires a commercial licence - borb's own README says commercial use cases require a paid licence, and its pricing page states that any software incorporating borb must itself be open source under the same licence unless you buy one.
The commercial tiers are priced per year against a document volume: 250 EUR for up to 1,000 documents a year, 500 EUR to 5,000, 1,000 EUR to 10,000, 5,000 EUR unlimited. Anything specialised is a separate line item at 250 EUR per year each - redaction, OCR, Markdown-to-PDF, find-and-replace.
Read that redaction point carefully before assuming it is available to you: the open-source library exports a class called RedactAnnotation whose entire body is a docstring, a TODO and pass, so it does nothing whatsoever, and the vendor's own pages disagree about whether the paid add-on removes sensitive content or merely hides it. Two further traps: the AGPL notice in borb's own source adds a Section 7(b) condition that a covered work 'must retain the producer line in every PDF that is created or manipulated using borb', which is a requirement on your output rather than your code; and unless you call UsageStatistics.opt_out(), borb sends read and write usage statistics to a vendor endpoint by default.
The ecosystem is also far thinner than ReportLab's - a solo-maintained project, a few thousand GitHub stars, and answers that mostly come from the maintainer himself. On telemetry the vendor’s own privacy policy is inconsistent: it describes default read and write telemetry with an opt-out, and later says unlicensed data is not sent without opt-in.
That documentary conflict is recorded rather than resolved, so which default applies depends on the version, and claims that document content is excluded are the vendor’s rather than a packet capture.
Details, and where each comes from
Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.
- Versions covered
- Windows · macOS · Linux · Self-hosted
- Website
- borbpdf.com
- Requires an account
- Not applicable
- Free tier
- Yes
- Watermark on the free tier
- Not verified
- Maximum file size
- Not verified
- Batch processing
- Yes
- Data residency
- Multiple regions
- Open source
- Yes
- Self-hostable
- Yes
- Licence
-
Dual-licensed, and the split is by licensee rather than by feature.
Dual-licensed, and the split is by licensee rather than by feature. The same package is available under AGPL-3.0-or-later (PyPI classifier 'GNU Affero General Public License v3 or later (AGPLv3+)'; the repository LICENSE.md offers it 'under a commercial license and under the AGPL license') or under a paid commercial licence whose tiers run from 250 EUR per year for up to 1,000 documents to 5,000 EUR per year unlimited.
The commercial add-ons - borb_redact, borb_ocr, borb_markdown_to_pdf, borb_find_replace - are each a further 250 EUR per year and are gated by a signed licence file that the library verifies against an embedded public key, so they are closed functionality rather than AGPL code with a support contract. Unlike the iText split, the AGPL core and the commercial core are the same artefacts.
- Redaction
- Not determined
- Programmatic access
- Embeddable library
- Last availability check
- Responded in 267 ms 21 October 2026
Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.
Why we have not determined this
What that does not establish
Not determined, and the record’s own material is why. The listing records that the open-source annotation implementation is a placeholder and that the paid descriptions disagree with each other: one page says it ensures redacted content is permanently and correctly removed, while the pricing page describes applying blackouts, overlays or custom placeholders while ensuring the original content is irreversibly hidden.
Hidden and removed are different claims, and the difference is the failure mode this field exists to catch. A versioned implementation and an output test would settle it, so this is a status rather than a finding.
What the vendor says
Claims are labelled rather than repeated as fact. Where we have checked something ourselves, it says so and shows when. Checked means we read the vendor's own page and it says what we recorded - not that we tested the behaviour, unless the note says we did.
-
“borb_redact enables standards-compliant redaction of PDF documents. It implements redact annotations exactly as defined in the PDF specification, ensuring redacted content is permanently and correctly removed.”
Checked by us - the source says this Read 22 September 2026
Confirmed verbatim. The page says of the add-on: "borb_redact enables standards-compliant redaction of PDF documents.
It implements redact annotations exactly as defined in the PDF specification, ensuring redacted content is permanently and correctly removed." The claim is those two sentences unaltered. One technical nuance a reader should have, which the wording invites a wrong reading of: a redact annotation in the PDF specification is a MARKUP, and the specification's own model has a conforming processor apply it afterwards.
So "implements redact annotations exactly as defined" is a statement about creating the annotation correctly, and the permanence comes from the apply step. That is the same two-step shape PyMuPDF documents, and it is not a criticism - it is how the format works.
Worth stating plainly: we have not tested borb_redact, and the vendor here is describing an add-on rather than the free library.
Standing: Re-read and matched byte for byte
Check it yourself: the source, the SHA-256, and how we checked
- Read
- https://borbpdf.com/
- From
- the text a browser renders
- SHA-256
- a858970e776aeb42beb0f71f69abfe79a1f8f683067bb0352611cd4258d34a5f
How we checked
Re-verified verbatim on 2026-09-22: https://borbpdf.com/ re-rendered in headless Chrome with scripts/render-page.mjs and the claim's wording found in the rendered text. Originally verified on 2026-09-21. sourceHash is the SHA-256 of the re-rendered text, held as rv-borbpdf-com-db3e4536.txt.
-
“borb is dual-licensed under AGPL and a commercial license. The AGPL (Affero General Public License) is an open-source license, but commercial use cases require a paid license, especially if you intend to: Offer paid PDF services (e.g., PDF generation in cloud applications); Use borb in closed-source projects; Distribute borb in any closed-source product”
Checked by us - the source says this Read 22 September 2026
Confirmed verbatim: the README carries "borb is dual-licensed under AGPL and a commercial license" and the sentence following it, which is where the claim's three commercial-use examples come from. The same licensing model is used by Artifex for Ghostscript and MuPDF, both verified in the same batch, so the index now records one licence structure across three separate projects rather than treating each as a one-off.
Worth noting for a reader: borb's redaction add-on, recorded earlier in this index, is a commercial add-on rather than part of the AGPL library, which is consistent with what this page says about commercial use. Recorded as the project's description; no control was run.
Standing: Re-read and matched byte for byte
Check it yourself: the source, the SHA-256, and how we checked
- From
- the text a browser renders
- SHA-256
- 547d4fe25c4336213fba25000bf4d29f830d5460045edfe09d4e8270b6c87791
How we checked
Re-verified verbatim on 2026-09-22: https://github.com/borb-pdf/borb re-rendered in headless Chrome with scripts/render-page.mjs and the claim's wording found in the rendered text. Originally verified on 2026-09-21. sourceHash is the SHA-256 of the re-rendered text, held as rv-github-com-borb-pdf-borb-d67d135f.txt.
Each claim is quoted from the vendor's own pages. This section describes what we have and have not checked - it is not a judgement about anyone.
Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.
Related reading
- Which PDF tools keep your file on your machine - what we count as processing on your own device.
- Open source PDF tools, and what their licences require - what open source does and does not tell you.