πŸ“¦ qarmin / czkawka

Multi functional app to find duplicates, empty folders, similar images etc.

β˜… 28.2k stars β‘‚ 921 forks πŸ‘ 28.2k watching βš–οΈ Other
cleanerduplicatesgtk-rsmultiplatformrustsimilar-imagessimilar-musicsimilar-videos
πŸ“₯ Clone https://github.com/qarmin/czkawka.git
HTTPS git clone https://github.com/qarmin/czkawka.git
SSH git clone git@github.com:qarmin/czkawka.git
CLI gh repo clone qarmin/czkawka
RafaΕ‚ Mikrut RafaΕ‚ Mikrut New video crop mode, selecting files, finding broken video files (#1745) c4a1305 4 days ago πŸ“ History
πŸ“‚ master View all commits β†’
πŸ“ .github
πŸ“ ci_tester
πŸ“ czkawka_cli
πŸ“ czkawka_core
πŸ“ czkawka_gui
πŸ“ data
πŸ“ instructions
πŸ“ krokiet
πŸ“ misc
πŸ“„ .gitignore
πŸ“„ .mailmap
πŸ“„ .rustfmt.toml
πŸ“„ Cargo.lock
πŸ“„ Cargo.toml
πŸ“„ Changelog.md
πŸ“„ clippy.toml
πŸ“„ justfile
πŸ“„ README.md
πŸ“„ README.md
krokiet_logo

Krokiet ((IPA: [ˈkrΙ”cΙ›t]), "croquette" in Polish) new generation GUI frontend, simple, multiplatform, fast and free app to remove unnecessary files from your computer.

czkawka_logo

Czkawka (tchβ€’kavβ€’ka (IPA: [ΛˆΚ§Μ‘kafka]), "hiccup" in Polish) older gtk4 GUI frontend, superseded by Krokiet, but still receiving bugfix updates.

Features

  • Written in memory-safe Rust - almost 100% unsafe code free
  • Amazingly fast - due to using more or less advanced algorithms and multithreading
  • Free, Open Source without ads
  • Multiplatform - works on Linux, Windows, macOS, FreeBSD and many more
  • Cache support - second and further scans should be much faster than the first one
  • CLI frontend - for easy automation
  • GUI frontend - uses Slint or GTK 4 frameworks
  • Core library - allows to reuse functionality in other apps
  • No spying - Czkawka does not have access to the Internet, nor does it collect any user information or statistics
  • Multilingual - support multiple languages like Polish, English or Italian
  • Multiple tools to use:
  • Duplicates - Finds duplicates based on file name, size or hash
  • Empty Folders - Finds empty folders with the help of an advanced algorithm
  • Big Files - Finds the provided number of the biggest files in given location
  • Empty Files - Looks for empty files across the drive
  • Temporary Files - Finds temporary files
  • Similar Images - Finds images which are not exactly the same (different resolution, watermarks)
  • Similar Videos - Looks for visually similar videos
  • Same Music - Searches for similar music by tags or by reading content and comparing it
  • Invalid Symbolic Links - Shows symbolic links which point to non-existent files/directories
  • Broken Files - Finds files that are invalid or corrupted
  • Bad Extensions - Lists files whose content not match with their extension
  • Exif Remover - Tool to remove Exif metadata from various file types
  • Video Optimizer - Converts videos to more efficient formats
Krokiet

Czkawka

Changelog about each version can be found in CHANGELOG.md.

New releases can be found in Github releases and nightly builds also in Nightly releases

Usage, installation, compilation, requirements, license

Each tool uses different technologies, so you can find instructions for each of them in the appropriate file:

Comparison to other tools

Bleachbit is a master at finding and removing temporary files, while Czkawka only finds the most basic ones. So these two apps shouldn't be compared directly or be considered as an alternative to one another.

In this comparison remember, that even if app have same features they may work different(e.g. one app may have more options to choose than other).

CzkawkaKrokietFSlintDupeGuruBleachbit
LanguageRustRustPythonPython/Obj-CPython
Framework base languageCRustCC/C++/Obj-C/SwiftC
FrameworkGTK 4SlintPyGTK2Qt 5 (PyQt)/CocoaPyGTK3
OSLin,Mac,WinLin,Mac,WinLinLin,Mac,WinLin,Mac,Win
Duplicate finderβœ”βœ”βœ”βœ”
Empty filesβœ”βœ”βœ”
Empty foldersβœ”βœ”βœ”
Temporary filesβœ”βœ”βœ”βœ”
Big filesβœ”βœ”
Similar imagesβœ”βœ”βœ”
Similar videosβœ”βœ”
Music duplicates(tags)βœ”βœ”βœ”
Music duplicates(content)βœ”βœ”
Invalid symlinksβœ”βœ”βœ”
Broken filesβœ”βœ”
Invalid names/extensionsβœ”βœ”βœ”
Exif cleanerβœ”
Video optimizerβœ”
Names conflictβœ”
Installed packagesβœ”
Bad IDβœ”
Non stripped binariesβœ”
Redundant whitespaceβœ”
Overwriting filesβœ”βœ”
Portable versionβœ”βœ”βœ”
Multiple languagesβœ”βœ”βœ”βœ”βœ”
Cache supportβœ”βœ”βœ”
In active developmentYes**YesNoNo*Yes

* Few small commits added recently and last version released in 2023

** Czkawka GTK is in maintenance mode receiving only bugfixes

Other apps

There are many similar applications to Czkawka on the Internet, which do some things better and some things worse:

GUI

  • DupeGuru - Many options to customize; great photo compare tool
  • FSlint - A little outdated, but still have some tools not available in Czkawka
  • AntiDupl.NET - Shows a lot of metadata of compared images
  • Video Duplicate Finder - Finds similar videos(surprising, isn't it), supports video thumbnails

CLI

Due to limited time, the biggest emphasis is on the GUI version so if you are looking for really good and feature-packed console apps, then take a look at these:

  • Fclones - One of the fastest tools to find duplicates; it is written also in
Rust
  • Rmlint - Nice console interface and also is feature packed
  • RdFind - Fast, but written in C++ Β―\\\(ツ)\/Β―

Projects using Czkawka

Czkawka exposes its common functionality through a crate called czkawka_core, which can be reused by other projects.

It is written in Rust and is used by all Czkawka frontends (czkawka_gui, czkawka_cli, krokiet).

It is also used by external projects, such as:

  • page-dewarp – https://github.com/lmmx/page-dewarp - A library for dewarping document images using a cubic sheet model.
Bindings are also available for:

  • Python – https://pypi.org/project/czkawka/
Some projects work as wrappers around czkawka_cli. Without directly depending on czkawka_core, they allow simple scanning and retrieving results in JSON format:

  • Schluckauf – https://github.com/fadykuzman/schluckauf

Thanks

Big thanks to PΓ‘draig Brady, creator of fantastic FSlint, because without his work I wouldn't create this tool.

Thanks also to all the people who create patches for this program, make it available on other systems, create videos, articles about it etc.

Also, I really appreciate work of people that create crates on which Czkawka is based and for that I try to report bugs to make it even better.

Officially Supported Projects

Only this repository, prebuild-binaries, projects on crates.io and flathub are directly maintained by me.

Czkawka does not have an official website, so do not trust any sites that claim to be the official one.

If you use packages from unofficial sources, make sure they are safe.

License

The entire code in this repository is licensed under the MIT license.

All images are licensed under the CC BY 4.0 license.

The Czkawka GTK GUI and CLI applications are licensed under the MIT license, while the Krokiet is licensed under the GPL-3.0-only license.

Donations

If you are using the app, I would appreciate a donation for its further development, which can be done here.