• Stars
    star
    19,845
  • Rank 1,289 (Top 0.03 %)
  • Language
    Rust
  • License
    Other
  • Created about 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

com github qarmin czkawka

Czkawka (tch•kav•ka (IPA: [ˈʧ̑kafka]), "hiccup" in Polish) is a simple, fast and free app to remove unnecessary files from your computer.

Features

  • Written in memory-safe Rust
  • 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 GTK 4 framework and looks similar to FSlint
  • 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 music with the same artist, album etc.
    • 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

Czkawka

Supported OS

Linux - Ubuntu 22.04+, Fedora 36+, Alpine Linux 3.16+, Debian 12+ and a lot of more

Windows - 7, 8.1, 10, 11
MacOS - 10.15+

If you are looking for older version that use GTK 3 and have support for more OS(like e.g. Ubuntu 20.04), look at 4.1.0 or older versions.

How do I use it?

You can find the instructions on how to use Czkawka here.

Some helpful tricks you can find here

Installation

Installation instructions with download links you can find here.

Compilation

If you want to try and develop Czkawka or just use the latest available feature, you may want to look at the compilation instructions.

Benchmarks

Since Czkawka is written in Rust and it aims to be a faster alternative to FSlint or DupeGuru which are written in Python, we need to compare the speed of these tools.

I tested it on a 256 GB SSD and an i7-4770 CPU.

I prepared a disk and performed a test without any folder exceptions and with disabled ignoring of hard links. The disk contained 363 215 files, took 221,8 GB and had 62093 duplicate files in 31790 groups which occupied 4,1 GB.

I set the minimal file size to check to 1KB on all programs.

App Executing Time
FSlint 2.4.7 (First Run) 86s
FSlint 2.4.7 (Second Run) 43s
Czkawka 3.0.0 (First Run) 8s
Czkawka 3.0.0 (Second Run) 7s
DupeGuru 4.1.1 (First Run) 22s
DupeGuru 4.1.1 (Second Run) 21s

I used Mprof for checking memory usage of FSlint and DupeGuru, and Heaptrack for Czkawka.

App Idle Ram Max Operational Ram Usage Stabilized after search
FSlint 2.4.7 62 MB 164 MB 158 MB
Dupeguru 4.1.1 90 MB 170 MB 166 MB
Czkawka 3.0.0 12 MB 122 MB 60 MB

In Dupeguru, I enabled checking images with different dimensions to match Czkawka behavior. Both apps use a caching mechanism, so the second scan is really fast.

Similar images which check 10949 files that occupied 6.6 GB

App Scan time
Czkawka 3.0.0 (First Run) 276s
Czkawka 3.0.0 (Second Run) 1s
DupeGuru 4.1.1 (First Run) 539s
DupeGuru 4.1.1 (Second Run) 1s

Similar images which check 349 image files that occupied 1.7 GB

App Scan time
Czkawka 3.0.0 (First Run) 54s
Czkawka 3.0.0 (Second Run) 1s
DupeGuru 4.1.1 (First Run) 55s
DupeGuru 4.1.1 (Second Run) 1s

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.

Czkawka FSlint DupeGuru Bleachbit
Language Rust Python Python/Obj-C Python
OS Lin,Mac,Win Lin Lin,Mac,Win Lin,Mac,Win
Framework GTK 4 PyGTK2 Qt 5 (PyQt)/Cocoa PyGTK3
Duplicate finder
Empty files
Empty folders
Temporary files
Big files
Similar images
Similar videos
Music duplicates(tags)
Invalid symlinks
Broken files
Names conflict
Invalid names/extensions
Installed packages
Bad ID
Non stripped binaries
Redundant whitespace
Overwriting files
Multiple languages
Cache support
In active development Yes No Yes Yes

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++ ¯\_(ツ)_/¯

Contributions

Contributions to this repository are welcome.

You can help by creating:

  • Bug reports - memory leaks, unexpected behavior, crashes
  • Feature proposals - proposal to change/add/delete some features
  • Pull Requests - implementing a new feature yourself or fixing bugs. If the change is bigger, then it's a good idea to open a new issue to discuss changes, but issues with label PR welcome are already checked and accepted.
  • Documentation - There is an instruction which you can improve.
  • Translations - Instruction how to translate files is available here
  • External contributions - App use big number of external libraries like lofty, image-rs or symphonia so improving this libraries will automatically improve Czkawka

You can also help by doing other things:

Name

Czkawka is a Polish word which means hiccup.

I chose this name because I wanted to hear people speaking other languages pronounce it, so feel free to spell it the way you want.

This name is not as bad as it seems, because I was also thinking about using words like żółć, gżegżółka or żołądź, but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the project.

At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared myself for a possible change of the name of the program, and the opinions were extremely mixed.

License

Code is distributed under MIT license.

Icon was created by jannuary and licensed CC-BY-4.0.

Windows dark theme is used from project WhiteSur with MIT license.

Some icons were taken from ReShot site and are licensed under Reshot Free License.

The program is completely free to use.

"Gratis to uczciwa cena" - "Free is a fair price"

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.

Donations

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

More Repositories

1

szyszka

Szyszka is fast and powerful file renamer
Rust
841
star
2

Instrukcje-i-Tutoriale

Repozytorium z różnymi instrukcjami i poradnikami
232
star
3

Rewelacyjne-OpenSource

Lista darmowego, wolnego oraz otwartego oprogramowania na Windowsa, Linuxa oraz Androida
184
star
4

PodstawowePoleceniaLinux

To repozytorium zawiera informację o podstawowych komendach używanych w systemie GNU/Linux wraz z krótkimi przykładami.
77
star
5

Win32Fuzzer

Winapi fuzzer to help Wine project in creating better Windows "emulator"
Rust
67
star
6

Games-created-in-Godot

List of games created in Godot with requirments
63
star
7

Rusty-Linux

Simple script to install most basic Rust apps as alternative to default one
Shell
55
star
8

GNU-Linux-Podstawy

Instrukcja przybliżająca początkującym użytkownikom system GNU/Linux
37
star
9

Qarminer

Qarminer is fuzzer which automatically test Godot and its modules
GDScript
26
star
10

The-worst-Godot-test-project

Test project to check as many as possible functions, nodes and their parameters
GDScript
20
star
11

system-info-collector

App to collect ram/cpu usage from OS and show it in pretty graphs
Rust
16
star
12

gtk-rs-fuzzer

Gtk-rs fuzzer to catch as many bugs as possible
Rust
8
star
13

create_broken_files

App to create broken files, can be used as fuzzer for some apps.
Rust
6
star
14

Pole-Mrowkowe

3D turn-based strategy game about ants
GDScript
5
star
15

SVG-regression-finder

Rust
3
star
16

GodotBuilds

Test Godot builds with sanitizers
3
star
17

handsome_logger

Simple terminal/file logger with multiple features
Rust
3
star
18

qml_formatter

Fast QML formatter
Rust
2
star
19

slugmin

slug-rs fork which allows to use in names spaces and allow to not change size of letters
Rust
2
star
20

Automated-Fuzzer

Rust
2
star
21

imager

Simple firefox addon to show all images from site in grid
JavaScript
2
star
22

godot_image_replacer

Rust
1
star
23

GodotDemoProjectCICreator

Creates CI for Godot Demo Projects
Rust
1
star
24

CardFinder

Java
1
star
25

svg_creator

Simple creator of valid or unvalid SVG files
Rust
1
star
26

audio_checker

Library checking if audio files are broken
Rust
1
star
27

godot_signal_checker

Rust
1
star
28

crates_tester

Internal tool, to check libraries that Czkawka use to find bugs in them
Rust
1
star
29

ImageOpening

Rust
1
star
30

minesweeper-multiplayer

Java
1
star