libheif (HEIC images): LGPL-3.0
When your browser can’t open a HEIC photo itself, we use libheif-js 1.23.5 (libheif and the libde265 HEVC decoder, compiled to WebAssembly). It runs in your browser only, and only when needed.
- Licence: GNU Lesser General Public License v3.0. Full licence text.
- We serve it unmodified, as its own replaceable file: /vendor/codecs/libheif.wasm. Its JavaScript loader is bundled, unmodified, in
/vendor/img-codec.worker.js. - Source code for the exact version we use: libheif-js v1.23.5 on GitHub and the npm package. Upstream projects: libheif and libde265.
- Written offer: for at least three years from when we last serve this file, we will send a copy of the matching source code to anyone who asks, at no more than the cost of sending it. Contact: UNKNOWN: contact address. (Draft wording, needs legal review.)
PDF.js: Apache-2.0
Pages, thumbnails, search, compare and OCR use PDF.js by Mozilla (pdfjs-dist 6.4.299), licensed under the Apache License 2.0.
Other files we serve
- Image codecs: jSquash AVIF and WebP encoders, Apache-2.0 (AVIF, WebP).
- OCR: Tesseract.js and tesseract.js-core, Apache-2.0; English, French and Arabic language data from the tessdata project.
- Image models (onnxruntime-web, MIT): Real-ESRGAN general x4v3, BSD-3-Clause; U²-Net (u2netp), Apache-2.0; Ultra-Light-Fast-Generic-Face-Detector, MIT.
- Fonts for PDF output: DejaVu Sans (Bitstream Vera licence, free), Liberation Sans/Serif/Mono (SIL OFL 1.1), Noto Sans CJK (SIL OFL 1.1; our subset is a modified version). Licence texts: DejaVu, Liberation, Noto CJK.
- Site typeface: Bricolage Grotesque, SIL OFL 1.1.
Server tools (switched off today)
Server tools are switched off today, so this software doesn’t run yet. When they are switched on, it runs on our server, not in your browser: LibreOffice (MPL-2.0), Chromium (BSD-3-Clause and others), qpdf (Apache-2.0), OCRmyPDF (MPL-2.0), Tesseract (Apache-2.0) and Ghostscript (AGPL-3.0). UNKNOWN: licensing of Ghostscript (AGPL) for server use is pending legal review.
All npm packages in the app
From a scan of every package installed with the app. Some (sharp, @napi-rs/canvas) are used only when the site is built, and are never sent to your browser.
| Package | Version | Licence |
|---|---|---|
| @cantoo/pdf-lib | 2.11.1 | MIT |
| @img/colour | 1.1.0 | MIT |
| @img/sharp-libvips-linux-x64 | 1.3.4 | LGPL-3.0-or-later |
| @img/sharp-linux-x64 | 0.35.5 | Apache-2.0 |
| @jsquash/avif | 2.1.1 | Apache-2.0 |
| @jsquash/webp | 1.5.0 | Apache-2.0 |
| @napi-rs/canvas | 1.1.0 | MIT |
| @napi-rs/canvas-linux-x64-gnu | 1.1.0 | MIT |
| @next/env | 16.4.3 | MIT |
| @next/swc-linux-x64-gnu | 16.4.3 | MIT |
| @noble/hashes | 2.4.0 | MIT |
| @pdf-lib/fontkit | 1.1.1 | MIT |
| @pdf-lib/standard-fonts | 1.0.0 | MIT |
| @pdf-lib/upng | 1.0.1 | MIT |
| @peculiar/utils | 4.1.0 | MIT |
| @protobufjs/aspromise | 1.1.2 | BSD-3-Clause |
| @protobufjs/base64 | 1.1.2 | BSD-3-Clause |
| @protobufjs/codegen | 2.0.5 | BSD-3-Clause |
| @protobufjs/eventemitter | 1.1.1 | BSD-3-Clause |
| @protobufjs/fetch | 1.1.1 | BSD-3-Clause |
| @protobufjs/float | 1.0.2 | BSD-3-Clause |
| @protobufjs/path | 1.1.2 | BSD-3-Clause |
| @protobufjs/pool | 1.1.0 | BSD-3-Clause |
| @protobufjs/utf8 | 1.1.2 | BSD-3-Clause |
| @swc/helpers | 0.5.23 | Apache-2.0 |
| @tesseract.js-data/ara | 1.0.0 | MIT |
| @tesseract.js-data/eng | 1.0.0 | MIT |
| @tesseract.js-data/fra | 1.0.0 | MIT |
| @types/node | 26.6.6 | MIT |
| asn1js | 4.0.0 | BSD-3-Clause |
| baseline-browser-mapping | 2.11.34 | Apache-2.0 |
| bidi-js | 1.1.0 | MIT |
| bmp-js | 0.1.0 | MIT |
| bytestreamjs | 3.0.0 | BSD-3-Clause |
| caniuse-lite | 1.0.30001820 | CC-BY-4.0 |
| client-only | 0.0.1 | MIT |
| culori | 4.0.2 | MIT |
| detect-libc | 2.1.2 | Apache-2.0 |
| fflate | 0.8.3 | MIT |
| flatbuffers | 25.9.23 | Apache-2.0 |
| gifenc | 1.0.3 | MIT |
| guid-typescript | 1.0.9 | ISC |
| html-entities | 2.6.0 | MIT |
| idb-keyval | 6.3.0 | Apache-2.0 |
| is-url | 1.2.4 | MIT |
| libheif-js | 1.23.5 | LGPL-3.0 |
| long | 5.3.2 | Apache-2.0 |
| nanoid | 3.3.20 | MIT |
| next | 16.4.3 | MIT |
| node-fetch | 2.7.0 | MIT |
| node-html-better-parser | 1.5.9 | MIT |
| onnxruntime-common | 1.31.1 | MIT |
| onnxruntime-web | 1.31.1 | MIT |
| opencollective-postinstall | 2.0.3 | MIT |
| pako | 1.0.11 | (MIT AND Zlib) |
| pdf-lib | 1.17.1 | MIT |
| pdfjs-dist | 6.4.299 | Apache-2.0 |
| picocolors | 1.1.1 | ISC |
| pkijs | 4.0.1 | BSD-3-Clause |
| platform | 1.3.6 | MIT |
| postcss | 8.5.23 | MIT |
| protobufjs | 7.6.6 | BSD-3-Clause |
| react | 19.3.1 | MIT |
| react-dom | 19.3.1 | MIT |
| regenerator-runtime | 0.13.11 | MIT |
| require-from-string | 2.0.2 | MIT |
| scheduler | 0.28.0 | MIT |
| semver | 7.8.5 | ISC |
| sharp | 0.35.5 | Apache-2.0 |
| source-map-js | 1.2.2 | BSD-3-Clause |
| styled-jsx | 5.1.6 | MIT |
| tesseract.js | 7.0.0 | Apache-2.0 |
| tesseract.js-core | 7.0.0 | Apache-2.0 |
| tr46 | 0.0.3 | MIT |
| tslib | 1.14.1 | 0BSD |
| tslib | 2.9.1 | 0BSD |
| undici-types | 8.9.0 | MIT |
| utif2 | 4.1.0 | MIT |
| wasm-feature-detect | 1.9.0 | Apache-2.0 |
| webidl-conversions | 3.0.1 | BSD-2-Clause |
| whatwg-url | 5.0.0 | MIT |
| zlibjs | 0.3.1 | MIT |
PDF to Word layout engine (our server)
Used only when Preserve layout is on. PyMuPDF is AGPL-3.0.
| Package | Version | Licence |
|---|---|---|
| pdf2docx | 0.5.13 | MIT |
| PyMuPDF | 2.1 | AGPL-3.0 or Artifex commercial (Includes the PyMuPDF Layout and 4LLM code, AGPL since 2.0. AGPL: offering this engine as a public service needs the service source under AGPL or a commercial licence.) |
| python-docx | 1.2.0 | MIT |
| fontTools | 4.68.0 | MIT |
| opencv-python-headless | 5.0.0.93 | Apache-2.0 |
| numpy | 2.5.4 | BSD-3-Clause |
| LibreOffice (optional, page-fit check) | any | MPL-2.0 |