Open source

Most of this product is other people's work.

DocAccessible opens, repairs, and validates documents using 76 open source projects that we did not write and do not own. This page names every one of them, with the version we run, the license it carries, and a link to its source. It is written for the maintainers as much as for procurement.

projects credited
76
distinct licenses
20
inventory last verified
August 28, 2026

Why this page exists

A credit page that can be checked.

Document accessibility work is only possible because a long line of people solved the hard parts first and gave the result away. Reading a PDF's object model, recovering text from a scan, deciding whether a file conforms to PDF/UA: none of that is our invention. We assemble it, we run it carefully, and we are answerable for the result, but the engines belong to the people listed below.

Most acknowledgement pages are a wall of names typed once and never revisited. This one is built from the repository. Python versions and licenses were read from the installed distribution metadata, Node versions and licenses from the resolved packages in the lockfile, and service versions from the pinned image tags in the deployment file. Every source link was requested and confirmed to resolve before it was published. The inventory was last verified on August 28, 2026.

If you are here for procurement rather than curiosity, the license column is the one you want, and the license obligations section states what we do about copyleft. Commercial vendors that receive data are a different question, answered on the subprocessor page.

17 projects

Document engines

These projects do the part of the work customers actually pay for. A PDF is opened, its structure is read or rebuilt, its text is recovered, and the result is validated. None of that machinery is ours.

Document engines: project name, source repository, version in use, license, and what it does inside DocAccessible.
ProjectVersionLicenseWhat it does here
pikepdfgithub.com/pikepdf/pikepdf10.5.1MPL-2.0Reads and writes the PDF object model. Every tag structure we add to a PDF is written through pikepdf, in place, without redrawing the page.
QPDFgithub.com/qpdf/qpdflibqpdf, via pikepdfApache-2.0The C++ engine underneath pikepdf. It is the reason a rewritten file stays structurally valid instead of merely opening in one viewer.
pdfminer.sixgithub.com/pdfminer/pdfminer.six20260107MITLays out the page to recover reading order when a PDF has no usable tags, and re-reads the text layer when we score how much meaning survived a conversion.
veraPDFgithub.com/veraPDF/veraPDF-library1.30.2GPL-3.0 or MPL-2.0The PDF/UA validator behind every machine conformance result we report. We run it as a pinned service and publish its findings unmodified.
OCRmyPDFgithub.com/ocrmypdf/OCRmyPDF17.8.1MPL-2.0Recovers a real text layer from a scanned PDF and writes it back as invisible text, leaving the scanned image exactly as it was.
Tesseract OCRgithub.com/tesseract-ocr/tesseractin the OCR imageApache-2.0The recognition engine inside OCRmyPDF. We ship English, Spanish, French, and German language data in the image rather than downloading it at runtime.
Ghostscriptgithub.com/ArtifexSoftware/ghostpdlin the OCR imageAGPL-3.0PDF rasterization and normalization inside the OCR service. It arrives as an OCRmyPDF dependency rather than something our code calls directly.
python-docxgithub.com/python-openxml/python-docx1.2.0MITReads Word files so an authored DOCX keeps its real headings, lists, and table structure instead of being flattened into paragraphs.
ReportLabgithub.com/MrBitBucket/reportlab-mirror4.4.10BSDGenerates PDF output where a document has to be produced rather than repaired.
fpdf2github.com/py-pdf/fpdf22.8.7LGPL-3.0-onlyA second PDF writer, used where a small tagged file has to be built from scratch.
fontToolsgithub.com/fonttools/fonttools4.62.1MITReads embedded font programs so text encoded with a broken or custom glyph map can still be recovered as real characters instead of mojibake.
Liberation Fontsgithub.com/liberationfonts/liberation-fontsbundledSIL OFL 1.1Metric-compatible fonts shipped with the API so a repaired PDF can embed a real font rather than depend on whatever the reader substitutes.
Pillowgithub.com/python-pillow/Pillow12.3.0MIT-CMUReads and normalizes images extracted from a document before they are described or re-embedded.
lxmlgithub.com/lxml/lxml6.1.0BSD-3-ClauseXML and HTML parsing across extraction, tag trees, and generated output.
defusedxmlgithub.com/tiran/defusedxml0.7.1PSF-2.0Parses XML that came from somewhere else, including validator reports, without exposing the parser to entity expansion attacks.
langdetectgithub.com/Mimino666/langdetect1.0.9MITDetects document language so the output carries a correct language attribute instead of an assumed one.
axe-coregithub.com/dequelabs/axe-core4.12.1MPL-2.0Runs against our own pages in the end-to-end suite, so an accessibility product is itself tested for accessibility on every change.

26 projects

Backend runtime

The API, the job queue that runs remediation off the request path, and the data layer underneath both.

Backend runtime: project name, source repository, version in use, license, and what it does inside DocAccessible.
ProjectVersionLicenseWhat it does here
FastAPIgithub.com/fastapi/fastapi0.139.0MITThe HTTP API that the web application and the free tools talk to.
Starlettegithub.com/Kludex/starlette1.3.1BSD-3-ClauseThe ASGI foundation underneath FastAPI: routing, middleware, and request handling.
Uvicorngithub.com/Kludex/uvicorn0.45.0BSD-3-ClauseThe ASGI server that runs both the API and the OCR sidecar.
Pydanticgithub.com/pydantic/pydantic2.13.3MITValidates every request, job payload, and audit report, which is why a malformed document cannot quietly become a malformed result.
pydantic-settingsgithub.com/pydantic/pydantic-settings2.14.2MITTyped configuration, so a misconfigured deployment fails at boot instead of at the first upload.
SQLModelgithub.com/fastapi/sqlmodel0.0.38MITThe database models shared between the API and the worker.
SQLAlchemygithub.com/sqlalchemy/sqlalchemy2.0.49MITThe query and session layer underneath SQLModel.
Alembicgithub.com/sqlalchemy/alembic1.18.4MITSchema migrations, applied as their own deployment step before any new code serves traffic.
psycopggithub.com/psycopg/psycopg3.3.3LGPL-3.0-onlyThe PostgreSQL driver used by both the API and the worker, including connection handling.
Taskiqgithub.com/taskiq-python/taskiq0.12.2MITThe task queue that runs conversion, tagging, and validation in a worker, so a slow document never blocks a request.
taskiq-redisgithub.com/taskiq-python/taskiq-redis1.2.2MITThe broker and result backend that connects Taskiq to Valkey.
redis-pygithub.com/redis/redis-py7.4.0MITThe client library used to reach the Valkey instance.
HTTPXgithub.com/encode/httpx0.28.1BSD-3-ClauseThe async HTTP client that calls the validator and OCR services.
aiohttpgithub.com/aio-libs/aiohttp3.14.1Apache-2.0 and MITAn additional async HTTP stack used inside parts of the worker path.
boto3github.com/boto/boto31.42.93Apache-2.0The S3-compatible client for private object storage.
SlowAPIgithub.com/laurentS/slowapi0.1.9MITRate limiting, which is what keeps the free tools free and available rather than drained by one caller.
structloggithub.com/hynek/structlog25.5.0MIT or Apache-2.0Structured logs, so an incident can be traced by job and document rather than by grep.
orjsongithub.com/ijl/orjson3.11.8MPL-2.0 and (Apache-2.0 or MIT)Fast JSON serialization for large audit and block payloads.
bcryptgithub.com/pyca/bcrypt5.0.0Apache-2.0Hashing for passwords and for share-link secrets.
cryptographygithub.com/pyca/cryptography49.0.0Apache-2.0 or BSD-3-ClauseThe primitives underneath TLS and token handling.
python-multipartgithub.com/Kludex/python-multipart0.0.32Apache-2.0Parses multipart uploads, which is the first code any customer document meets.
zipstream-nggithub.com/pR0Ps/zipstream-ng1.9.2LGPL-3.0-onlyStreams export archives to the browser without buffering a whole workspace to disk first.
python-slugifygithub.com/un33k/python-slugify8.0.4MITURL-safe slugs for documents, collections, and workspaces.
email-validatorgithub.com/JoshData/python-email-validator2.3.0UnlicenseAddress validation on invitations and account email.
Sentry SDK for Pythongithub.com/getsentry/sentry-python2.58.0MITError reporting from the API and the worker, with PII capture disabled and customer content scrubbed.
Anthropic SDK for Pythongithub.com/anthropics/anthropic-sdk-python0.96.0MITThe client for AI-assisted image description and fidelity comparison. The SDK is open source; the API behind it is not.

16 projects

Web application

The marketing site, the product interface, the document editor, and the free tools all run on the same React application.

Web application: project name, source repository, version in use, license, and what it does inside DocAccessible.
ProjectVersionLicenseWhat it does here
Next.jsgithub.com/vercel/next.js16.2.10MITThe application framework: routing, server rendering, and the build.
Reactgithub.com/react/react19.2.5MITThe interface layer, including the block editor where a document's structure is corrected by hand.
TypeScriptgithub.com/microsoft/TypeScript5.9.3Apache-2.0Types across the whole web codebase, checked in CI on every commit.
Tailwind CSSgithub.com/tailwindlabs/tailwindcss4.2.4MITThe styling system behind every page on this site, this one included.
PostCSSgithub.com/postcss/postcss8.5.17MITThe CSS pipeline Tailwind runs through when the site is built.
Better Authgithub.com/better-auth/better-auth1.6.23MITSessions, sign-in, organizations, and invitations.
node-postgresgithub.com/brianc/node-postgres8.20.0MITThe PostgreSQL client used by the web tier for auth and portal reads.
Lucidegithub.com/lucide-icons/lucide0.469.0ISCEvery icon on the site, marked decorative so a screen reader is not asked to announce it.
Sonnergithub.com/emilkowalski/sonner2.0.7MITToast notifications for save, upload, and job state.
clsxgithub.com/lukeed/clsx2.1.1MITBuilds conditional class name strings across the shared component library.
tailwind-mergegithub.com/dcastil/tailwind-merge2.6.1MITResolves conflicting Tailwind classes so a component override behaves predictably.
class-variance-authoritygithub.com/joe-bell/cva0.7.1Apache-2.0Variant definitions for the shared button and control components.
Standard Webhooksgithub.com/standard-webhooks/standard-webhooks1.0.0MITVerifies signatures on inbound billing webhooks.
PostHog JSgithub.com/PostHog/posthog-js1.407.5Apache-2.0 and MITProduct analytics in the browser, loaded only after consent.
PostHog Nodegithub.com/PostHog/posthog-js-lite5.46.1MITServer-side event capture and feature flags.
Sentry SDK for JavaScriptgithub.com/getsentry/sentry-javascript10.65.0MITBrowser and server error reporting for the Next.js application.

8 projects

Infrastructure we run

These are whole systems, not libraries. Each one runs as its own container inside our infrastructure, and each one replaces a managed service we would otherwise rent.

Infrastructure we run: project name, source repository, version in use, license, and what it does inside DocAccessible.
ProjectVersionLicenseWhat it does here
PostgreSQLgithub.com/postgres/postgres17PostgreSQL LicenseThe database of record for accounts, documents, jobs, versions, and audit history.
Valkeygithub.com/valkey-io/valkey8BSD-3-ClauseThe queue broker and cache. We run the community fork rather than the relicensed original.
MinIOgithub.com/minio/minioRELEASE.2025-09-07AGPL-3.0Private S3-compatible object storage for uploaded and generated files.
MinIO Clientgithub.com/minio/mcRELEASE.2025-08-13AGPL-3.0Creates the buckets and access policies on first boot, so private storage is never left open by default.
ClamAVgithub.com/Cisco-Talos/clamav1.4GPL-2.0Scans every uploaded file before the pipeline is allowed to open it.
veraPDF RESTgithub.com/veraPDF/veraPDF-rest1.30.2GPL-3.0 or MPL-2.0The service wrapper that exposes veraPDF validation over HTTP. Pinned by image digest so the validator cannot change under a mutable tag.
Docker Composegithub.com/docker/composev2Apache-2.0Defines the whole stack as one file, which is also how a new environment is stood up.
Coolifygithub.com/coollabsio/coolifyself-hostedApache-2.0The deployment platform. Open source infrastructure hosting an open source stack.

9 projects

Build, test, and quality tooling

Nothing ships without passing through these. They are the reason a change to the tagging pipeline cannot quietly break the editor.

Build, test, and quality tooling: project name, source repository, version in use, license, and what it does inside DocAccessible.
ProjectVersionLicenseWhat it does here
uvgithub.com/astral-sh/uv0.11.7Apache-2.0 or MITResolves and installs Python dependencies from a frozen lockfile, in the image and in CI.
Ruffgithub.com/astral-sh/ruff0.15.11MITLints and formats the Python codebase, including the security rule set.
pytestgithub.com/pytest-dev/pytest9.0.3MITThe backend test suite, including the round-trip checks that gate automatic PDF tagging.
Vitestgithub.com/vitest-dev/vitest3.2.6MITThe web unit test suite, run on every commit before a build is allowed.
Playwrightgithub.com/microsoft/playwright1.59.1Apache-2.0End-to-end tests across Chromium, Firefox, and WebKit, including the accessibility checks that run against our own pages.
jsdomgithub.com/jsdom/jsdom25.0.1MITThe DOM implementation the web unit tests run against.
ESLintgithub.com/eslint/eslint9.39.4MITStatic analysis for the web codebase, wired to the framework rule set.
Prettiergithub.com/prettier/prettier3.8.3MITFormatting, so review comments are about behavior rather than whitespace.
pnpmgithub.com/pnpm/pnpm9.15.0MITThe package manager and workspace tool for the JavaScript side of the repository.

License obligations we hold ourselves to.

Taking copyleft software seriously is part of using it. These are the commitments that come with the components above.

Copyleft libraries are used unmodified

pikepdf, OCRmyPDF, axe-core, orjson, fpdf2, psycopg, and zipstream-ng carry MPL-2.0 or LGPL-3.0 terms. We use them as published libraries and do not patch them in place. If we ever have to modify one of those files, the license requires us to publish that modified file, and we will.

AGPL components run as separate services

MinIO and Ghostscript are AGPL-3.0. Both run as their own services inside our infrastructure rather than being linked into application code, and neither is redistributed to customers. Their source is published by their own authors at the repositories linked above.

Bundled files keep their license text

The Liberation font files shipped inside the API image carry their SIL Open Font License text alongside them, because a font that travels into a customer's repaired PDF has to travel with its license.

Versions are pinned, and two are pinned by digest

The veraPDF and OCR services are pinned by image digest rather than by a mutable tag. A maintainer's release can never be silently swapped underneath a validation result we have already published to a customer.

What on this page is not open source.

A credit page that quietly counts commercial software as open source is a marketing page. These are the components a reader could reasonably mistake, named on purpose.

GSAP

Used for animation on this site and free to use, but published under the GreenSock standard license rather than an OSI-approved open source license. It is not counted in the inventory above.

The Anthropic API

The Python SDK is MIT licensed and credited above. The model service it calls is a commercial API.

Sentry, PostHog, and Dodo Payments

Their client SDKs are open source and credited above. The hosted services we send data to are commercial products, and are listed on the subprocessor page instead.

If you maintain one of these.

We run your code against a corpus of real public sector documents, which is a good way to find the file that breaks something. If your project is listed above and you want a reproduction case, a failing document, or the numbers we have on how a specific version behaved, ask and we will send them. The contact form reaches a person.

If something on this page is wrong, that is a defect and we want to hear about it. Wrong license, outdated version, a project named the way we happen to type it rather than the way its maintainers write it, a repository that has since moved: tell us and it gets corrected.

Our own conversion research is published rather than kept as a competitive asset, for the same reason. The research program and the PDF-to-HTML benchmark set out the method and the corpus, so a claim we make about conversion quality can be argued with instead of taken on faith.

Built in the open, answerable in the open.

The same standard applies to what we build on top: the free tools state what they can and cannot prove, the benchmark publishes its corpus, and an automated pass is never presented as a conformance claim.