Third-party licences
Deduplo stands on a lot of excellent open-source work. Every component we ship, and the licence it carries, is listed here.
Last updated: 14 September 2026
The same list, with the full licence text of each component, is available inside the application under Settings ▸ License ▸ Third-party licenses. Deduplo itself is proprietary software; the components below remain under their own terms, and nothing in our Terms of Service restricts your rights under them.
Core components
| Component | Licence | What it does here |
|---|---|---|
| Qt for Python (PySide6-Essentials) | LGPL-3.0 | The entire user interface |
| shiboken6 | LGPL-3.0 | The binding layer PySide6 runs on |
| Pillow | MIT-CMU | Reading images, thumbnails, hashing |
| NumPy | BSD-3-Clause | Image fingerprinting and fast matching |
| Send2Trash | BSD-3-Clause | Recoverable deletes to the Recycle Bin / Trash |
| SQLCipher (via sqlcipher3-wheels) | BSD-3-Clause (SQLCipher) / zlib (wrapper) | Encrypting the on-disk scan cache |
OpenSSL 3 (statically linked inside sqlcipher3's _sqlite3.cp3xx extension) | Apache-2.0 | The cipher SQLCipher encrypts with |
| SQLite (sqlite3.dll) | Public domain | The cache database format |
| Python (python3.dll / python3xx.dll) | PSF-2.0 | The runtime |
| typing_extensions | PSF-2.0 | Type annotations several of the libraries above rely on |
| setuptools | MIT | Arrives with cffi, py7zr and the packager's start-up hook; Deduplo never calls it |
| packaging | Apache-2.0 / BSD-2-Clause | Arrives with setuptools; Deduplo never calls it |
| tomli | MIT | Arrives with setuptools; Deduplo never calls it |
| PyYAML | MIT | Arrives with NumPy and watchdog; Deduplo never calls it |
| charset-normalizer | MIT | Arrives with NumPy; Deduplo never calls it |
| defusedxml | PSF-2.0 | Safer XML parsing, reached through Pillow and openpyxl |
Optional components
These enable extra formats and features. Deduplo runs without any of them, with the corresponding capability simply absent.
| Component | Licence | What it does here |
|---|---|---|
| OpenCV | Apache-2.0 | Video frames, AI-similar matching |
| FFmpeg (bundled inside OpenCV) | LGPL-2.1 | Decoding the video files OpenCV opens |
| LibRaw (via rawpy) | LGPL-2.1 / CDDL-1.0 | Camera RAW decoding (NEF, CR2, CR3, ARW, DNG, RAF…) |
| libheif + libde265 (via pi-heif) | LGPL-3.0 | iPhone .heic / .heif photos (decode only) |
| psutil | BSD-3-Clause | The live CPU / RAM / disk readout during a scan |
| watchdog | Apache-2.0 | Real-time folder watching |
| tinytag | MIT | Reading audio tags |
| libsndfile (via SoundFile) | LGPL-2.1 | Audio decoding for acoustic fingerprints |
| cffi | MIT-0 | The bridge SoundFile calls libsndfile through |
| pycparser | BSD-3-Clause | Used by cffi |
| PDFium (via pypdfium2) | BSD-3-Clause / Apache-2.0 | Text extraction from PDFs |
| python-docx | MIT | Text extraction from .docx |
| lxml | BSD-3-Clause | XML parsing for python-docx |
| openpyxl | MIT | Text extraction from .xlsx |
| et_xmlfile | MIT | XML handling for openpyxl |
| py7zr | LGPL-2.1-or-later | Reading inside .7z archives |
| pybcj | LGPL-2.1-or-later | BCJ filters inside .7z archives |
| pyppmd | LGPL-2.1-or-later | PPMd decompression inside .7z archives |
| inflate64 | LGPL-2.1-or-later | Deflate64 decompression inside .7z and .zip archives |
| multivolumefile | LGPL-2.1-or-later | Multi-volume .7z archives |
| pycryptodomex | BSD / Public domain | Password-protected .7z archives |
| brotli | MIT | Brotli-compressed entries inside .7z archives |
| texttable | MIT | Arrives with py7zr; Deduplo never calls it |
Runtime libraries
Shipped beside the components above, as the compilers and interpreter they were built with require. They are not Python packages, so each is named here by its file.
| Library | Licence | Why it is there |
|---|---|---|
| GNU libstdc++ (libstdc++-6.dll, MinGW-w64) | GPL-3.0-or-later WITH GCC Runtime Library Exception | The C++ runtime libheif and libde265 were built against |
| GCC support library (libgcc_s_seh-1.dll) | GPL-3.0-or-later WITH GCC Runtime Library Exception | Same build, same reason |
| mingw-w64 winpthreads (libwinpthread-1.dll) | MIT / BSD-3-Clause | Same build, same reason |
| Microsoft Visual C++ Runtime (VCRUNTIME140*.dll, MSVCP140*.dll) | Microsoft redistributable licence | The runtime Python and most of the wheels were built with |
Typeface
The Deduplo interface uses Inter by Rasmus Andersson, under the SIL Open Font License 1.1. This website uses the system's own fonts and loads none of its own.
Deduplo deliberately ships nothing under the plain GPL. Where a convenient library was GPL-licensed we chose the permissive or decode-only alternative instead, so that no part of this list places obligations on you as a user. The two GCC runtime libraries above carry the GCC Runtime Library Exception, which is what permits their use in a program under these terms.
LGPL components
Qt (PySide6-Essentials and shiboken6), LibRaw, libheif, libde265, libsndfile, the FFmpeg build bundled with OpenCV, and the 7z stack — py7zr, pybcj, pyppmd, inflate64 and multivolumefile — are used under the LGPL, unmodified, as separately replaceable files (shared libraries, or Python modules for the pure-Python ones). If you would like the object files needed to relink Deduplo against a modified version of any of them, write to [email protected] and we will provide them.
Corrections
If you believe a component is missing from this page or attributed incorrectly, please tell us at [email protected] and we will fix it.