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 the README.md inside 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:load on 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)