---
title: "Open-source libraries used by the PicWay web tools"
description: "The third-party libraries behind the tools on this site, with licenses, versions and source links, including the LGPL-3.0 notice for the HEIC decoder in libheif-js."
url: "https://picway.app/licenses/"
lang: "en"
type: "pages"
updated: "2026-11-04"
published: "2026-11-04"
keywords: "PicWay web tools licenses"
---

# Open-source libraries used by the PicWay web tools

URL: https://picway.app/licenses/
Markdown: https://picway.app/licenses/index.md
Last updated: 2026-11-04

The web tools use ten open-source libraries: libheif-js, exifr, piexifjs, mp4box, mp4-muxer, @jsquash/webp, @jsquash/avif, UTIF.js, gifenc and UPNG.js. libheif-js is LGPL-3.0 and contains libheif and libde265, which are also LGPL-3.0. The HEIC tool loads it as a separate file when needed. The image converter loads its WebP, AVIF, TIFF and GIF writers only when you choose those formats, and the image compressor loads UPNG.js only when it compresses a PNG.

## Libraries in the tools {#libraries}

| Library | Version | License | Used for |
|---|---|---|---|
| [libheif-js](https://github.com/catdad-experiments/libheif-js) | 1.23.5 | LGPL-3.0 (see below) | HEIC to JPG and PNG |
| [exifr](https://github.com/MikeKovarik/exifr) (lite build) | 7.1.3 | MIT | Reading photo info |
| [piexifjs](https://github.com/hMatoba/piexifjs) | 1.0.6 | MIT | Writing photo info |
| [mp4box](https://github.com/gpac/mp4box.js) | 2.5.0 | BSD-3-Clause | Reading MP4 and MOV files |
| [mp4-muxer](https://github.com/Vanilagy/mp4-muxer) | 5.2.2 | MIT | Writing MP4 files |
| [@jsquash/webp](https://github.com/jamsinclair/jSquash) | 1.5.0 | Apache-2.0 (contains libwebp, BSD-3-Clause) | Writing WebP files |
| [@jsquash/avif](https://github.com/jamsinclair/jSquash) | 2.1.1 | Apache-2.0 (contains libavif, BSD-2-Clause) | Reading and writing AVIF files |
| [UTIF.js](https://github.com/photopea/UTIF.js) | 3.1.0 | MIT (uses pako, MIT and Zlib) | Reading and writing TIFF files |
| [gifenc](https://github.com/mattdesl/gifenc) | 1.0.3 | MIT | Writing GIF files |
| [UPNG.js](https://github.com/photopea/UPNG.js) | 2.1.0 | MIT (uses pako, MIT and Zlib) | Making PNG files smaller |

## LGPL-3.0 notice for libheif and libde265 {#lgpl}

libheif-js is published under the LGPL-3.0 license, and the file it ships contains compiled copies of [libheif](https://github.com/strukturag/libheif) and [libde265](https://github.com/strukturag/libde265), which are also licensed under the GNU Lesser General Public License version 3 (LGPL-3.0). The license text is at [gnu.org/licenses/lgpl-3.0](https://www.gnu.org/licenses/lgpl-3.0.html).

- **Source code:** the source of libheif and libde265 is at the two links above. The source of libheif-js is at the libheif-js link in the table.
- **How it is loaded:** the HEIC tool loads libheif-js on demand, as a separate script file, only when the browser can’t decode HEIC itself.
- **Your own build:** libheif-js and libheif are open source. To use your own build of libheif, build libheif-js (or any compatible decoder) from source with your version of libheif.

## Image converter libraries {#converter}

The image converter writes WebP and AVIF with the jSquash packages (Apache-2.0), which contain compiled copies of libwebp (BSD-3-Clause) and libavif with the AV1 codec libaom (BSD-2-Clause). TIFF is read and written with UTIF.js and GIF is written with gifenc (both MIT). Each of these is loaded as a separate file only when you pick that format, and none of them is under the GPL.

The image compressor uses the same code as the image converter, plus UPNG.js (MIT, uses pako) to make PNG files smaller. UPNG.js is loaded as a separate file only when a PNG is compressed.

If you have a question about these notices, write to the address on the [support page](https://picway.app/support/).
