Skip to content

Open Source Notices

Last updated: 2026-09-27

Open source components

The list below covers only what the code actually loads. Anything that happens to be installed but is never used is left out.

Components used for file conversion

pdf-lib (MIT): creating, merging, splitting, rotating and compressing PDFs, and embedding images into a PDF.

pdf.js (Apache-2.0): rendering PDF pages to images.

Conversions run inside your browser, so these two components run on your device rather than on our server.

Components used for the interface and for running the service

Next.js (MIT), React (MIT): building the interface and linking the pages together.

Tailwind CSS (MIT): styling the interface.

Zod (MIT): checking that the values we send and receive have the shape we expect.

qrcode (MIT): drawing the QR code when an administrator enrols in two-factor authentication.

otplib (MIT): generating and verifying the one-time codes for administrator two-factor authentication.

Drizzle ORM (Apache-2.0), postgres.js (Unlicense): connecting to the database. It holds conversion statistics, administrator accounts and two-factor data, the audit log, ad slot settings and business details.

ioredis (MIT): connecting to the fast temporary store. It holds visit counters, request rate limits, and administrator sign-in sessions and re-authentication tokens.

Handled without a library

Converting between image formats (JPG, PNG and WebP), resizing and adjusting quality are done with the browser’s built-in OffscreenCanvas rather than a library. No open source component is involved there, so there is nothing to disclose for it.

License compliance

Every component above is under a permissive license: MIT, Apache-2.0 or Unlicense. We use the original packages unmodified.

We use no component distributed under the GPL or the AGPL. That is the result of checking the full set of installed dependencies.

The Apache-2.0 components (pdf.js, Drizzle ORM) require the original copyright notice and a copy of the license to be kept, and we leave the text shipped in the package exactly as it is.

The full license text of each component ships inside that project’s own package.