Skip to content
← Home

Open-source licences

Last updated: 5 October 2026

Kathaleaf is built with open-source software. Most of it is part of the app's own code under permissive licences (MIT, BSD, ISC, Apache-2.0). One component, the HEIC decoder, is under the GNU Lesser General Public License and is handled separately, as described below.

libheif and libde265 — HEIC decoder (LGPL-3.0)

When you add an iPhone photo (HEIC) and your browser cannot open it itself, Kathaleaf loads libheif-js version 1.23.2: a WebAssembly build of libheif and libde265. It runs in your browser only; your photo is never sent anywhere to be converted.

Using your own build of the decoder

The LGPL lets you run Kathaleaf with a modified version of the library. Kathaleaf loads the decoder at run time from the path above and only calls its HeifDecoder interface, so any build of libheif-js that exposes the same interface works:

  1. Build libheif-js (or modify libheif/libde265 and build it) to a single ES module that, like libheif-bundle.mjs, exports a function returning the library.
  2. Serve your file in place of ours: in Chrome or Edge, DevTools → Sources → Overrides lets you replace /vendor/libheif/1.23.2/libheif-bundle.mjs with your own file; in a self-hosted copy of Kathaleaf, put it in ui/public/vendor/libheif/<version>/ (the script ui/scripts/vendor-libheif.mjs does this from the npm package) and set LIBHEIF_VERSION and LIBHEIF_SHA256 in ui/lib/local/heicVersion.ts.
  3. Kathaleaf checks the decoder's SHA-256 before running it, so a copy changed by anyone else is refused. To run yours on this site, tell your own browser its hash: in the DevTools console, run localStorage.setItem("folio.libheifSha256", "<your file's SHA-256, in hex>") . (Remove it to go back to ours.)
  4. Reload Kathaleaf and add a HEIC photo.

Fonts (SIL Open Font License 1.1)

Kathaleaf serves its own copies of these typefaces, taken from the google/fonts repository. Each is free software under the SIL Open Font License 1.1; the licence text and copyright for each family is linked below and is also kept inside every font file. Lato, Quicksand, Comfortaa, Dancing Script and Lobster are served unmodified; the others are reduced to the Latin characters Kathaleaf uses. How each file was made, with its source and SHA-256, is recorded in ui/app/fonts/NOTICE.md in Kathaleaf's source.

Other components used on your device

  • exifr (MIT) — reads the date a photo was taken.
  • @noble/hashes (MIT) — fingerprints each photo (SHA-256) so the same photo is not added twice.
  • @noble/curves (MIT) — the Ed25519 key that proves, without revealing it, that your device holds your backup's key.
  • @simplewebauthn/browser (MIT) — passkey sign-in, loaded only when you use a passkey.
  • go-webauthn (BSD-3-Clause) — checks passkeys on Kathaleaf's server.