Legal · Licences
Open-source engines we ship
Local tools here run on your device, which means the code doing the work is downloaded to your browser from us rather than executed on a server. The two AI generators are separately labelled cloud tools. Where a licence asks us to name a component, state its version, and tell you how to get the source, that is what this page does.
libheif 1.23.2
- LicenceLGPL-3.0-or-later
- CopyrightDirk Farin and contributors
- Upstream projecthttps://github.com/strukturag/libheif
- Corresponding sourcehttps://github.com/strukturag/libheif/releases/tag/v1.23.2
- Binary we serve/tools/imagetools/vendor/libheif/1.23.2/libheif.wasm
- Licence text/tools/imagetools/vendor/libheif/1.23.2/LGPL-3.0-libheif.txt
- Used forReading HEIC and HEIF files inside the convert and compress tools.
Served as the published WebAssembly build from the libheif-js project (https://github.com/catdad-experiments/libheif-js), unmodified. That build links the libde265 decoder listed below, so the binary carries both.
libde265 1.0.x as bundled by libheif-js 1.23.2
- LicenceLGPL-3.0-or-later
- CopyrightPure Logic GmbH and contributors
- Upstream projecthttps://github.com/strukturag/libde265
- Corresponding sourcehttps://github.com/strukturag/libde265/releases
- Binary we serve/tools/imagetools/vendor/libheif/1.23.2/libheif.wasm
- Licence text/tools/imagetools/vendor/libheif/1.23.2/LGPL-3.0-libheif.txt
- Used forThe HEVC picture decoding that libheif calls when it opens an iPhone photo.
Not shipped as a separate file: it is compiled into the libheif WebAssembly binary above.
gif.js 0.2.0
- LicenceMIT
- CopyrightJohan Nordberg
- Upstream projecthttps://github.com/jnordberg/gif.js
- Corresponding sourcehttps://registry.npmjs.org/gif.js/-/gif.js-0.2.0.tgz
- Binary we serve/tools/imagetools/vendor/gifjs/0.2.0/gif.js
- Licence text/tools/imagetools/vendor/gifjs/0.2.0/MIT-gifjs.txt
- Used forAssembling and quantizing the frames of an animated GIF in the make and compress tools.
Served unmodified together with its companion worker, gif.worker.js, from the same folder, so the encoder runs in a Web Worker instead of blocking the page.
omggif 1.0.10
- LicenceMIT
- CopyrightDean McNamee
- Upstream projecthttps://github.com/deanm/omggif
- Corresponding sourcehttps://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz
- Binary we serve/tools/imagetools/vendor/omggif/1.0.10/omggif.js
- Licence text/tools/imagetools/vendor/omggif/1.0.10/MIT-omggif.txt
- Used forReading the frames, delays, and disposal rules of an existing GIF before it is rebuilt smaller.
Unmodified. The upstream repository publishes no LICENSE file, so the MIT notice printed in the package README is stored next to the code.
tesseract.js 7.0.0
- LicenceApache-2.0
- CopyrightKevin Kwok, Guillermo Webster, Jerome Wu and contributors
- Upstream projecthttps://github.com/naptha/tesseract.js
- Corresponding sourcehttps://registry.npmjs.org/tesseract.js/-/tesseract.js-7.0.0.tgz
- Binary we serve/tools/imagetools/vendor/tesseractjs/7.0.0/tesseract.min.js
- Licence text/tools/imagetools/vendor/tesseractjs/7.0.0/APACHE-2.0-tesseractjs.txt
- Used forDriving the OCR worker that turns the text in a picture into selectable text.
Unmodified dist/tesseract.min.js and dist/worker.min.js, served from the same folder. The webpack third-party notices that upstream ships beside them (tesseract.min.js.LICENSE.txt, worker.min.js.LICENSE.txt) are published next to the files.
tesseract.js-core 7.0.0
- LicenceApache-2.0
- Copyrightantimatter15 and contributors
- Upstream projecthttps://github.com/naptha/tesseract.js-core
- Corresponding sourcehttps://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-7.0.0.tgz
- Binary we serve/tools/imagetools/vendor/tesseractjs/7.0.0/core/tesseract-core-simd-lstm.wasm.js
- Licence text/tools/imagetools/vendor/tesseractjs/7.0.0/core/APACHE-2.0-tesseract-core.txt
- Used forThe compiled Tesseract engine itself, running as WebAssembly inside the worker.
Unmodified. Only the SIMD LSTM build is served, which covers every browser with WebAssembly SIMD; the non-SIMD build upstream ships is not vendored, so an old engine is refused with a clear message rather than failing quietly.
eng.traineddata (tessdata_fast) 4.1.x, main branch
- LicenceApache-2.0
- CopyrightThe Tesseract OCR project
- Upstream projecthttps://github.com/tesseract-ocr/tessdata_fast
- Corresponding sourcehttps://github.com/tesseract-ocr/tessdata_fast/raw/main/eng.traineddata
- Binary we serve/tools/imagetools/vendor/tesseractjs/7.0.0/lang/eng.traineddata.gz
- Licence text/tools/imagetools/vendor/tesseractjs/7.0.0/lang/APACHE-2.0-tessdata_fast-eng.txt
- Used forThe English language model the OCR page loads alongside the engine.
Byte-for-byte the upstream file, stored gzipped because that is the form the worker requests; the browser decompresses it locally. The license is checked against the repository rather than assumed: its README states that all data in it is licensed under Apache-2.0, and the LICENSE file beside eng.traineddata is the Apache-2.0 text stored next to it here.
MediaPipe Tasks Vision 1.0.1
- LicenceApache-2.0
- CopyrightGoogle LLC and contributors
- Upstream projecthttps://github.com/google-ai-edge/mediapipe
- Corresponding sourcehttps://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-1.0.1.tgz
- Binary we serve/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/vision_bundle.js
- Licence text/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/APACHE-2.0-mediapipe.txt
- Used forRunning the face finder that draws a box around each face on the blur and pixelate pages, and the segmentation engine behind the portrait background remover.
Three unmodified files from the npm package: vision_bundle.js, wasm/vision_wasm_internal.js, and wasm/vision_wasm_internal.wasm. The bundle is published upstream as vision_bundle.mjs and renamed here so it is served as JavaScript without a server MIME rule. Only the SIMD WebAssembly build is vendored; a browser without WebAssembly SIMD is refused with a clear message rather than carrying an extra 11 MB duplicate. The npm package ships no LICENSE file but declares Apache-2.0 in its package.json, so the license text stored beside the code is the one from the upstream repository. One behaviour found by testing rather than by reading: the bundle carries a usage logger that POSTs anonymized protobuf to odml.pa.googleapis.com from the visitor’s own browser on a timer. Nothing of your picture is in that payload, but a request leaving the tab still contradicts what this site promises, so the code refuses that host before the bundle is loaded and the engine runs without phoning home.
BlazeFace short-range face detector (float16) 1
- LicenceApache-2.0
- CopyrightGoogle LLC and contributors
- Upstream projecthttps://ai.google.dev/edge/mediapipe/solutions/vision/face_detector
- Corresponding sourcehttps://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite
- Binary we serve/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/blaze_face_short_range.tflite
- Licence text/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/APACHE-2.0-mediapipe.txt
- Used forThe trained weights the face finder loads to locate faces inside your picture.
Unmodified 230 KB model downloaded from the Google model bucket. The file carries no license text of its own, so the terms were checked against the source that states them: Google's model card for this detector, whose PDF is archived beside the model rather than left as a link that could move. It says Apache-2.0. It stays on your device and runs locally: no image is sent anywhere while it works.
MediaPipe Selfie Segmenter (float16) latest, 249,537 bytes, sha256 191ac952
- LicenceApache-2.0
- CopyrightGoogle LLC and contributors
- Upstream projecthttps://ai.google.dev/edge/mediapipe/solutions/vision/image_segmenter
- Corresponding sourcehttps://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter/float16/latest/selfie_segmenter.tflite
- Binary we serve/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/selfie_segmenter.tflite
- Licence text/tools/imagetools/vendor/mediapipe/tasks-vision/1.0.1/APACHE-2.0-mediapipe.txt
- Used forThe trained weights that decide which pixels in your photo are the person and which are the background.
Unmodified model from the Google model bucket, verified against the card PDF archived with it as Apache-2.0. Scope note worth stating out loud: this model segments the prominent human in a frame and nothing else. It is not a general cutout engine, which is why the page it serves is written for portraits rather than for products, animals, or objects. Its own card also warns that masks are not pixel perfect and that people beyond roughly four metres, or several people at different scales, are outside what it was built for.
Your rights under the GNU LGPL version 3
Components listed under LGPL-3.0-or-later are used in a compiled WebAssembly form. You may copy and redistribute that binary, and modify it for your own debugging and modification purposes, provided the licence travels with it and any recipient can replace the parts they need to. The links above point at the exact upstream release each binary was built from and at the build scripts that produced it, so nothing is withheld. We do not restrict reverse engineering for the purpose of debugging those modifications, and this service is provided without the warranty sections 15 and 17 of the licence would otherwise disclaim, in as far as we may.
Requesting a copy in another form
If a link above ever breaks, or you would rather have the complete corresponding source as files than as instructions for fetching them, write to [email protected] naming the component and version and we will send it. This offer is made to anyone who receives a build from us and stays open as long as we offer the tool.