Compiling Czkawka from sources


If you only want the terminal version without a GUI, just skip all the packages with gtk in their names.

FFmpeg is not included here because it is not needed to build - it is dynamically loaded.

Support for heif images is optional and require to install libheif library.

Program Min What for
Rust 1.60 Czkawka, aims to support the latest available version of Rust on Ubuntu 20.04
GTK 3.24 Only for the GTK backend

Debian / Ubuntu

sudo apt install -y curl git build-essential # Needed by Rust update tool
curl --proto '=https' --tlsv1.2 -sSf | sh # Download the latest stable Rust
sudo apt install -y libgtk-4-dev

Fedora / CentOS / Rocky Linux

curl --proto '=https' --tlsv1.2 -sSf | sh # Download the latest stable Rust
sudo yum install gtk3-devel glib2-devel


You need to install Rust via Homebrew, GTK Libraries and optionally heif library(to have support for heic files, which are quite popular on mac)

/bin/bash -c "$(curl -fsSL"
brew install rustup
brew install gtk+3 adwaita-icon-theme librsvg libheif


Will be available in the future

For Linux-to-Windows cross-building instruction look at the CI.


docker build ./misc/docker/ --tag cargo-gtk


Czkawka can be installed with Debug or Release build.
With Debug build additional checks, e.g., variables overflow, are available, but depending on the usage it works very slow, so it should be used only for development purposes.
Compilation with --release flag will optimize binaries, so they can be used with good performance (official binaries are built with this flag)

Compilation with Docker

docker run -t --rm --volume $PWD:/app --workdir /app cargo-gtk cargo build --release --bin czkawka_gui

Run the binary:


Additional features

For now, finding broken audio files is temporarily disabled by default, because app crashes when audio libraries are not found on the computer.
I’m waiting for ability to disable audio playback feature, so after that I will be able to re-enable by default this feature (

To enable checking for broken audio files, just add ` –all-features`

cargo run --all-features --bin czkawka_cli -- broken  -d /home/rafal/ -f "results.txt"