Open Source Licenses
FileFit is built using third-party open source software (OSS). This page lists the software actually included in FileFit's browser-facing distribution (the site and its Web Workers), as well as software used only at build time — name, version, purpose, license, copyright notice, and official source for each. The full text of each license is available from the text file linked in each entry below.
HEIC decoding (HEIC/HEIF → JPG conversion)
FileFit uses @discourse/heic (version 1.0.0) to decode HEIC/HEIF images. This package itself is an Apache License 2.0 wrapper, but the HEIC-decoding WebAssembly it actually ships to the browser (heic_dec.wasm) includes libheif (version 1.19.7) and libde265 (version 1.0.15). The libheif and libde265 library code is each provided under the GNU Lesser General Public License version 3 (LGPL v3), and the upstream build script (Makefile) statically links these two libraries into a single WASM file. The build configuration does not include x265 or any other HEIC encoder or video codec, and FileFit only decodes (reads) HEIC images — it does not encode (write out) the HEIC format. FileFit's own code only calls the decode() function this package exposes; we have confirmed that neither the WASM binary nor the JS wrapper has been modified.
We provide filefit-heic-decoder-1.0.0-source.tar.gz as the source package corresponding to libheif and libde265 (LGPL v3). This package contains the full source corresponding to the exact versions above (libheif 1.19.7, libde265 1.0.15, and the relevant jSquash commit), rebuild instructions, and relink instructions for modified versions of libheif and libde265 respectively.This package is based on FileFit's own technical and license self-review; it does not represent confirmation by an outside legal professional, legal advice, or a guarantee of legal sufficiency. It also does not assert that LGPL compliance has been completed. For details on exactly what has and has not been technically verified, see theREADME.md inside the package.
For as long as FileFit distributes the corresponding WASM, this corresponding source package will continue to be published free of charge in the same location. If the version is updated, a new, separately versioned package will be published.
@discourse/heic
- Version
- 1.0.0
- Purpose
- JS wrapper for the HEIC/HEIF decoding WASM (from jSquash)
- License
- Apache License 2.0
- Copyright notice
- Copyright [2023] jamsinclair
- Official source
- GitHub: discourse/jSquash
- Full license text
- Apache License 2.0 (full text)
libheif
- Version
- 1.19.7 (statically linked into the HEIC-decoding WASM)
- Purpose
- HEIF/HEIC container handling
- License
- GNU Lesser General Public License v3 (library itself)
- Official source
- GitHub: strukturag/libheif (v1.19.7)
- Full license text
- GNU LGPL v3 (full text) (GNUGPL v3 (full text) is also included, since LGPL v3 references it)
libde265
- Version
- 1.0.15 (statically linked into the HEIC-decoding WASM)
- Purpose
- HEVC (H.265) decoding
- License
- GNU Lesser General Public License v3 (library itself)
- Official source
- GitHub: strukturag/libde265 (v1.0.15)
- Full license text
- GNU LGPL v3 (full text) (GNUGPL v3 (full text) is also included, since LGPL v3 references it)
Emscripten runtime (build toolchain for the HEIC-decoding WASM)
- Version
- 3.1.57
- Purpose
- The HEIC-decoding WASM (
heic_dec.wasm) is built with the Emscripten version above. The generated JS wrapper (heic_dec.js) includes Emscripten's runtime support code. We do not bundle the full Emscripten or musl libc source with this site or the source package (see theREADME.mdinside the source package for why). - License
- MIT License / University of Illinois-NCSA Open Source License (Emscripten itself), MIT License (musl libc)
- Official source
- GitHub: emscripten-core/emscripten
- Full license text
- Emscripten LICENSE (full text) ·musl COPYRIGHT (full text)
For a more detailed technical breakdown of components (libc++, libc++abi, etc.), seeTHIRD_PARTY_NOTICES.md and the source package's SOURCE-METADATA.json and LICENSE-MAP.md.
PNG compression
FileFit uses @upng/upng-js (version 2.2.2) for target-size PNG compression. This package is Photopea's original UPNG.js, published by webLiang under a different npm scope (@upng/upng-js). Its license text and copyright notice match the original. Part of the encoding process uses pako (version 2.2.0).
@upng/upng-js
- Version
- 2.2.2
- Purpose
- PNG encoding (inside a Web Worker, loaded dynamically)
- License
- MIT License
- Copyright notice
- Copyright (c) 2017 Photopea
- Official source (npm distribution)
- GitHub: webLiang/UPNG.js
- Original project
- GitHub: photopea/UPNG.js
- Full license text
- MIT License (full text)
pako
- Version
- 2.2.0
- Purpose
- Deflate compression inside the PNG encoding process (via @upng/upng-js)
- License
- MIT License
- Copyright notice
- Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn
- Official source
- GitHub: nodeca/pako
- Full license text
- MIT License (full text)
UI runtime (pages that load Preact components with client:load only)
The home page and six tool pages (/heic-to-jpg, /compress-image,/compress-image-to-500kb, /remove-exif, /png-to-webp, and/compress-png — seven pages in total, across both locales) load Preact components with client:load, so Preact itself and the Astro Island client runtime (below) are shipped to the browser. This page (/licenses) and the 404 pages are static HTML/CSS-only pages that never load any of this JavaScript.
preact
- Version
- 10.29.7
- Purpose
- UI runtime (shipped on the pages above)
- License
- MIT License
- Copyright notice
- Copyright (c) 2015-present Jason Miller
- Official source
- GitHub: preactjs/preact
- Full license text
- MIT License (full text)
Astro Island client runtime
- Version
- From Astro 7.1.3 (the part built as
client.js) - Purpose
- Boots and hydrates the Preact components marked
client:loadon the pages above. Unlike the part of Astro that generates and compiles static HTML (see "Build tools" below), only this part is shipped to the browser. - License
- MIT License
- Copyright notice
- Copyright (c) 2021 Fred K. Schott
- Official source
- GitHub: withastro/astro
- Full license text
- MIT License (full text)
@astrojs/preact
- Version
- 6.0.1
- Purpose
- Astro/Preact integration. In addition to build configuration (Vite wiring, etc.), it is also shipped to the browser as part of the Astro Island client runtime above.
- License
- MIT License
- Copyright notice
- Copyright (c) 2021 Fred K. Schott
- Official source
- GitHub: withastro/astro (packages/integrations/preact)
- Full license text
- MIT License (full text)
@preact/signals and @preact/signals-core
- Version
- @preact/signals 2.10.0 / @preact/signals-core 1.14.4
- Purpose
- A state-management library that the Astro Island client runtime dynamically loads only when booting a component whose props use Preact Signals. It is included in the build output, but as of July 2026 none of FileFit's components pass props that use Preact Signals, so we have confirmed in real-browser network logs that this module is not actually fetched during normal page loads.
- License
- MIT License
- Copyright notice
- Copyright (c) 2022-present Preact Team
- Official source
- GitHub: preactjs/signals
- Full license text
- MIT License (full text)
Build tools (static HTML generation / compiler part)
The following is the part of Astro used at build time to generate the site as static HTML. The Astro package as a whole is not shipped to the browser, but on the seven pages that useclient:load, the "Astro Island client runtime" from the same Astro package (see the "UI runtime" section above) is shipped to the browser.
Astro (static site generation / compiler part)
- Version
- 7.1.3
- Purpose
- Static HTML generation and compilation (runs only at build time, not shipped to the browser)
- License
- MIT License
- Official source
- GitHub: withastro/astro
- Full license text
- MIT License (full text)