4 min read

Czkawka: Find Duplicates and Junk Files Fast (GitHub, Scanned)

A fast, free cleaner that finds duplicate files, similar images, empty folders and other disk junk.

Czkawka logo
✅
Scan: safe. Nothing to warn about. The hits are a Docker build image installing Rust and a Linux helper script that installs build dependencies. Scanned Oct 26, 2026; the full report is below.

Czkawka (Polish for hiccup) is a set of tools for clearing out a disk. It finds exact duplicates by name, size or hash, similar images even after resizing or watermarking, similar videos and music, empty files and folders, big files, broken files, invalid symlinks and files whose extension does not match their contents. It is written in Rust, runs scans across all your cores, and caches results so the second scan is much faster than the first.

The project now has a new face. Krokiet is the current desktop app, built with Slint, and the older GTK app called Czkawka has had its last release at 12.0; both share the same core, and a command-line version and an Android app called Cedinia use it too. The README is explicit that none of them has access to the internet or collects statistics.

It shows you what it found and lets you choose what to delete, so the usual care applies: check before you remove. The similar videos tool needs FFmpeg installed, and some image formats such as HEIF and RAW only work in builds compiled with those features.

  • Repository: github.com/qarmin/czkawka
  • Licence: custom (Other)
  • Language: Fluent. Stars: 34.5K. Forks: 1,232. Last push: Sep 16, 2026.
  • Scan: safe, Oct 26, 2026, commit eb8b91d

Who it is for

Anyone whose drive or photo library has filled up with copies and leftovers, and people who want a duplicate finder that works the same on Linux, Windows and macOS.

Getting started

1. Easiest: download Krokiet for Windows, macOS or Linux from the releases page. Or build it with Rust:

cargo install krokiet --locked

2. Command line: list duplicate files in a folder by hash and save the results

czkawka_cli dup -d ~/Pictures -s hash -f results.txt

For the similar videos tool, install FFmpeg first (brew install ffmpeg on macOS, sudo apt install ffmpeg on Ubuntu).

Safety scan

We cloned qarmin/czkawka at commit eb8b91d on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secrets, no committed binaries and no bare-IP URLs. The network list is short and almost all github.com, which fits the README's claim that the apps never go online.
  • The one pattern hit is misc/docker/Dockerfile running the official rustup installer to set up a build image.
  • misc/install_scripts/install_linux.sh asks to be run as root because it installs the packages needed to compile the project; it is a developer convenience, not part of the apps. Four build.rs files are ordinary Rust build steps.
  • Five known advisories in Cargo.lock plus 13 unrated. The critical one is in the zip crate's extract functions, which apply Unix permissions through symlinks; it matters for unpacking untrusted archives.
  • Five workflows, none using pull_request_target; none of the 9 third-party actions is pinned to a commit. OpenSSF Scorecard rates it 4.1 out of 10, mostly for missing branch protection and token permissions. No security policy, Dependabot or CodeQL.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious code1 pattern hit found and read; every one is listed under the raw findings.
Install-time code4 Cargo build scripts. 3 installer scripts (one can call sudo)
Committed binariesNone.
CI workflows5 workflows. None use pull_request_target. 9 of 9 third-party actions pinned to a tag rather than a commit.
Network hosts10 distinct hosts referenced from source; most often github.com, raw.githubusercontent.com, ffmpeg.org, fftrac-bg.ffmpeg.org. No URLs to bare IP addresses.
Known vulnerabilities18 advisories across 983 pinned packages: 1 critical, 4 high, 0 moderate, 0 low, 13 unrated. Cargo.lock: 983 packages, 18 advisories.
Project hygieneHas none of the usual files. Missing security policy, automated dependency updates, CodeQL, licence file, contributing guide.
OpenSSF Scorecard4.1 out of 10, as of Oct 19, 2026.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Pattern hits (1)
WhereRuleMatch
misc/docker/Dockerfile:9download-piped-to-shellRUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y # Download the latest stable Rust
Installer scripts (3)
Worst known vulnerabilities (18 of 18)
AdvisorySeverityPackageSummary
GHSA-4684-h2q9-2vcpcriticalzip@8.6.0ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the targe…
RUSTSEC-2026-0194highquick-xml@0.37.5Quadratic run time when checking a start tag for duplicate attribute names
RUSTSEC-2026-0195highquick-xml@0.37.5Unbounded namespace-declaration allocation in `NsReader` enables memory-exhaustion denial of service
RUSTSEC-2026-0344highruzstd@0.8.3Decompression bomb in `ruzstd`: a tiny input can exhaust memory (OOM)
GHSA-vv5m-jxxh-4627highzip@8.6.0Insecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation
RUSTSEC-2026-0374unknownbasic-toml@0.1.10`basic-toml` is unmaintained
RUSTSEC-2025-0141unknownbincode@1.3.3Bincode is unmaintained
RUSTSEC-2025-0141unknownbincode@2.0.1Bincode is unmaintained
RUSTSEC-2026-0385unknownctutils@0.4.2Non-constant-time mask generation and `u128` comparisons
RUSTSEC-2026-0221unknownevent-listener@5.4.1`event-listener` allows `!Send` tags to cross thread boundaries via `StackSlot`
RUSTSEC-2024-0436unknownpaste@1.0.15paste - no longer maintained
RUSTSEC-2026-0206unknownrustybuzz@0.20.1`rustybuzz` is unmaintained
RUSTSEC-2026-0192unknownttf-parser@0.25.1`ttf-parser` is unmaintained
GHSA-2ph8-5cr8-hr33unknownwebbrowser@1.2.1Unix `BROWSER` handling allows browser argument injection
RUSTSEC-2026-0371unknownzbus_names@4.3.4`zbus_names` is unmaintained
GHSA-4v9h-p7m9-rh26unknownzip@8.6.0zip: `ZipArchive::extract` creates symbolic links whose attacker-controlled targets are outside the destination director…
RUSTSEC-2026-0370unknownzvariant@5.13.1`zvariant` is unmaintained
RUSTSEC-2026-0372unknownzvariant_derive@5.13.1`zvariant_derive` is unmaintained

By the numbers

Stars34.5K
Forks1,232
Contributors96
Commits743
Open issues332
Open pull requests22
Releases43
Latest release12.0.2
Licencecustom
Main languageFluent
Project age6 years
Last pushSep 16, 2026
Tracked files675
Lines of code76.4K
Checkout size11 MB

Lines by language: Rust 64.1K, Markdown 6,364, Python 2,712, YAML 1,029, TOML 840, Java 798.

Questions

Is Czkawka free?

Yes, and without ads. The core library, the CLI and the GTK app are MIT; Krokiet and the Android app Cedinia are GPL-3.0, and the icons are CC BY 4.0.

What is the difference between Czkawka and Krokiet?

Krokiet is the newer desktop app built with Slint and is the one to install now. Czkawka's GTK app had its last release at 12.0 and no new builds are planned. Both use the same scanning core, so results are the same.

Will Czkawka delete files on its own?

No. It lists what it found and you choose what to delete, move or hard-link. Review the selection before confirming, especially with similar-image results, where near matches are not always copies you want gone.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.