zshot/cliDownload

Open Source Compliance

ZShot is built on open-source components. Most are under permissive licenses, and their notices are printed by --open-source-licenses. Two are licensed under the GNU LGPL, which gives you more: the complete source we built them from, and the right to replace them with your own, modified builds.

ComponentWhat it does in ZShotLicense
FFmpegVideo and animated image encoding (the libav* and libsw* libraries)LGPL 3.0
Chromium Embedded Framework (CEF, libcef)The browser engine: Chromium, including its Blink rendering engineParts of Blink under LGPL 2.0 and 2.1; the rest BSD and other licenses

Both are dynamically linked, so either can be swapped without touching the zshot binary. Each one below follows the same order: the source, our binaries, how to replace them.

Latest release

ZShot 0.57.1, released 2026-10-30:

ComponentVersionSourcemacOS binariesLinux x86_64 binariesLinux arm64 binaries
FFmpeg9.0.2tarballtarballtarballtarball
Chromium Embedded Framework156.0.24+gff27aba+chromium-156.0.8078.48CEF, Chromium 156.0.8078.48archivearchivearchive

For older releases, zshot --open-source-licenses of that release prints the same links for the versions it was built with.

FFmpeg

Source

The source tarball is upstream FFmpeg with our patches applied; the patches are also in its zshot-patches/ directory. They add API that libcef uses and change no existing behavior. The configure flags for each library are printed on its Built via line by --open-source-licenses; follow FFmpeg’s standard ./configure && make with them.

Replacing FFmpeg

The libraries are loaded from the directory they ship in, so a replacement needs no renaming or relinking. Build it from our source tarball, or apply our patches to your own FFmpeg: libcef calls the functions they add.

  • macOS: replace the dylibs in zshot_app.app/Contents/Frameworks/. Then clear the quarantine and re-sign the bundle (ad-hoc shown; use your own identity if you need one):

    xattr -dr com.apple.quarantine zshot_app.app
    codesign --force --deep --sign - zshot_app.app
  • Linux: replace the .so files in /usr/lib/zshot/ (deb) or lib/zshot/ (tarball). The binary’s RPATH ($ORIGIN) loads them from there.

  • Docker: build a derived image that copies your libraries into /usr/lib/zshot/:

    FROM scaleassembly/zshot:<version>
    USER root
    COPY my-ffmpeg/lib/ /usr/lib/zshot/
    USER zshot

Confirming the replacement

Run zshot --open-source-licenses again: each library’s Built via line is read from the library actually loaded, so it shows your build’s configuration. To try this without building FFmpeg yourself, swap in our canary build from https://ffmpeg.zshot-app.com/ffmpeg-zshot-canary-<version>-<platform>.tar.gz (the <platform> of the binaries above); its Built via line carries a distinct marker. We do this ourselves on macOS and Linux before every release.

Chromium Embedded Framework

Source

  • CEF source tarball: CEF with all of our changes, the scripts that build it, the build records (GN arguments, the FFmpeg it links), and SOURCE.txt, which explains how to rebuild.
  • Chromium tarball: a mirror of Google’s official release tarball for the Chromium version CEF is built on.

Every change we make to CEF or Chromium is in the CEF tarball.

Replacing CEF

Rebuild CEF from the source above, with your changes, and put your build in place of ours. libcef’s V8 snapshot and resource files are tied to the build that produced them, so replace them all together, not libcef.so alone.

  • macOS: replace zshot_app.app/Contents/Frameworks/Chromium Embedded Framework.framework with your build’s, then clear the quarantine and re-sign the bundle as for FFmpeg.
  • Linux: replace the CEF files in /usr/lib/zshot/ (deb) or lib/zshot/ (tarball) with every file from your build’s Release/ and Resources/ directories: libcef.so, chrome-sandbox (keep it root-owned with mode 4755), v8_context_snapshot.bin, the .pak files, locales/, icudtl.dat and the SwiftShader files.
  • Docker: a derived image, as for FFmpeg, copying those files into /usr/lib/zshot/.

Notices

CHROMIUM-CREDITS.html lists the license of every third-party component in libcef. It ships in every package: in zshot_app.app/Contents/Resources/ on macOS, and next to libcef.so on Linux and in the Docker images. The full Blink license, with the LGPL 2.0 and 2.1 texts, is printed by --open-source-licenses.

Your rights

Nothing in the EULA restricts the rights these licenses give you. In particular, you may modify the FFmpeg and CEF libraries, use your modified versions with ZShot, and reverse engineer ZShot as far as needed to debug those modifications.