BleachBit
bleachbit.orgClears cache and deletes temporary files very effectively. This frees up disk space, improves performance, but most importantly helps to protect privacy.
- Homepage: bleachbit.org
- GitHub: github.com/bleachbit/bleachbit
- Web info: web-check.xyz/check/bleachbit.org
BleachBit Source Code
Author
Description
BleachBit system cleaner for Windows and Linux
Homepage
https://www.bleachbit.orgLicense
GPL-3.0
Created
10 Mar 14
Last Updated
18 Jun 26
Latest version
Primary Language
Python
Size
26,799 KB
Stars
5,958
Forks
390
Watchers
5,958
Language Usage
Star History
Top Contributors
-
@az0 (5305)
-
@Tobias-B-Besemer (98)
-
@mkhon (88)
-
@tstenner (77)
-
@rados (76)
-
@actions-user (72)
-
@yarons (51)
-
@bovirus (33)
-
@ghostofsparta222 (27)
-
@Mr-Update (23)
-
@andibing (22)
-
@weblate (22)
-
@theatre-x (19)
-
@Kefir2105 (17)
-
@abitrolly (16)
-
@Chirunos (16)
-
@aindriu80 (15)
-
@NicolaeFericitu (14)
-
@toni-estevez (14)
-
@madurapa (12)
-
@linuxned (12)
-
@emintufan (11)
-
@hugok79 (11)
-
@GuzMan2019 (11)
-
@tiemay (11)
-
@Karm46 (10)
-
@oersen (10)
-
@ChuckMichael (10)
-
@MattHardcastle (10)
-
@arifpedia (10)
-
@to-ba (9)
-
@swoidowski (8)
-
@VasilisKos (8)
-
@monosans (8)
-
@cyphra (7)
-
@ppolewicz (7)
-
@Ricky-Tigg (7)
-
@Ser82-png (7)
-
@inson1 (7)
-
@jdlorimer (6)
-
@igorruckert (6)
-
@strebski (5)
-
@tjw123hh (5)
-
@danielk43 (5)
-
@NorwayFun (5)
-
@Stephan-P (5)
-
@ciampix (5)
-
@ivoxavier (5)
-
@audreytoskin (5)
-
@hahnavi (5)
-
@ryanmusante (4)
-
@ronymesquita (4)
-
@vabaME (4)
-
@flyingbot91 (4)
-
@sanjaykaria (4)
-
@plesry (4)
-
@nelsonhef (4)
-
@matbech (4)
-
@Marvin0401 (4)
-
@NickWick13 (4)
-
@Vistaus (4)
-
@crayxt (4)
-
@bornxlo (4)
-
@ROCKNROLLKID (4)
-
@fitojb (3)
-
@MauroGuida (3)
-
@p-bo (3)
-
@ppasserini (3)
-
@TraistaRafael (3)
-
@catsnote (3)
-
@ducdat0507 (3)
-
@muzena (3)
-
@lannic (3)
-
@SantosSi (3)
-
@zoli111 (3)
-
@uzbadmin (3)
-
@comradekingu (3)
-
@adem4ik (3)
-
@realgooseman (3)
-
@Carml82 (3)
-
@chidoziemanagwu (3)
-
@Zilvador (3)
-
@Atalanttore (3)
-
@IC-Tummarellox-ITA (3)
-
@kenrap (3)
-
@Djaler (3)
-
@Matthaiks (3)
-
@akhi07rx (2)
-
@ilNebbioso (2)
-
@mgziminsky (2)
-
@pas-calc (2)
-
@pereorga (2)
-
@rezaalmanda (2)
-
@torusrxxx (2)
-
@TotalCaesar659 (2)
-
@Ziad1797 (2)
-
@fbruand (2)
-
@klslz (2)
-
@mlaarebi (2)
-
@0rC0 (2)
Recent Commits
-
GitHub Action (17 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Muhammed Al-Basha (16 Jun 26)
Translate to (Arabic) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/ar/
-
GitHub Action (14 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Theodoros Asimakopoulos (14 Jun 26)
Translate to (Greek) Currently translated at 98.4% (497 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/el/
-
Cirnos (13 Jun 26)
Translate to (Portuguese (Brazil)) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/pt_BR/
-
GitHub Action (13 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Libre (13 Jun 26)
Translate to (Spanish) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/es/
-
Pierfrancesco Passerini (12 Jun 26)
Translate to (Italian) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/it/
-
AindriΓΊ Mac Giolla Eoin (13 Jun 26)
Translate to (Irish) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/ga/
-
David D. (12 Jun 26)
Translate to (French) Currently translated at 99.8% (504 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/fr/
-
Andrew Ziem (12 Jun 26)
Merge branch 'dev2'
-
GitHub Action (11 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Mona Lisa (10 Jun 26)
Translate to (Swedish) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/sv/
-
Akhil Raj (10 Jun 26)
Translate to (Malayalam) Currently translated at 0.5% (3 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/ml/
-
Andi Chandler (10 Jun 26)
Translate to (English (United Kingdom)) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/en_GB/
-
βπ π π π (πππ₯ππ¦π.ππ π/βπ π π π) (10 Jun 26)
Translate to (Latvian) Currently translated at 6.7% (34 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/lv/
-
Akhil Raj (10 Jun 26)
Added translation for new language (Malayalam)
-
GitHub Action (09 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Mr-Update (08 Jun 26)
Translate to (German) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/de/
-
Andrew Ziem (08 Jun 26)
Avoid timeout error in TestCLI.test_preview
-
Andrew Ziem (08 Jun 26)
Fix warning when pasting from empty clipboard The warning started with recent clipboard changes, so the warning did not affect BleachBit 6.0.0 stable.
-
Andrew Ziem (08 Jun 26)
Refactor run_external_nowait to use only subprocess - Replace Unix os.fork()/os.setsid()/os.execvp() with subprocess.Popen using start_new_session=True, close_fds=True, and DEVNULL for stdio. - Unify Windows and Unix logic in run_external_nowait around subprocess.Popen. - Copy caller's kwargs to avoid mutating the input dict. - Apply the same subprocess.DEVNULL + start_new_session approach to the non-wait path in run_external, removing duplicated early-return logic. - Update test to use a cross-platform Python script instead of shell/bat. - Extend test polling timeout from 5s to 20s for slower environments. Before the change, the test succeeded on Ubuntu 25.04 host but failed in a python:3.15-rc-slim container. python -m unittest -v tests.TestGeneral.GeneralTestCase.test_run_external_nowait" Configuration file does not exist yet: /home/user/.config/bleachbit/bleachbit.ini Configuration file does not exist yet: /tmp/GeneralTestCaser41yl3r6/bleachbit.ini test_run_external_nowait (tests.TestGeneral.GeneralTestCase.test_run_external_nowait) Unit test for run_external() with wait=False ... running cmd sh /tmp/GeneralTestCaser41yl3r6/run_external_nowait.sh /tmp/GeneralTestCaser41yl3r6/run_external_nowait.txt Failed to start process ['sh', '/tmp/GeneralTestCaser41yl3r6/run_external_nowait.sh', '/tmp/GeneralTestCaser41yl3r6/run_external_nowait.txt']: This process (pid=1) is multi-threaded, use of fork() may lead to deadlocks in the child. FAIL ====================================================================== FAIL: test_run_external_nowait (tests.TestGeneral.GeneralTestCase.test_run_external_nowait) Unit test for run_external() with wait=False ---------------------------------------------------------------------- Traceback (most recent call last): File "/work/tests/TestGeneral.py", line 246, in test_run_external_nowait self.assertNotExists(output_file) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File "/work/tests/common.py", line 268, in assertNotExists raise AssertionError( 'The file %s should not exist, but it does. %s' % (path, msg)) AssertionError: The file /tmp/GeneralTestCaser41yl3r6/run_external_nowait.txt should not exist, but it does.
-
Andrew Ziem (08 Jun 26)
Fix "access denied" when clearing clipboard using win32 api - Use GTK clipboard clearing on all platforms including Windows - Call Windows API clear_clipboard() after GTK as additional cleanup - Catch and suppress Windows "access denied" errors (winerror 5) - Log debug message when Windows API fails due to GTK clipboard lock - Re-raise other Windows API errors This fixes clipboard clearing on Windows where GTK may leave the clipboard locked, causing the Windows API to fail with "access denied". The error started after recent clipboard changes (not affecting BleachBit 6.0.0 stable).
-
Andrew Ziem (07 Jun 26)
Update Fedora Docker image from version 43 to 44
-
Andrew Ziem (07 Jun 26)
Add cleanup for test cleaner file in RecognizeCleanerML test - Wrap test in try/finally block to ensure test cleaner file is removed - Remove test_recognize.xml file after test completes This prevents a dialog box from appearing in tests.TestGUI, which may cause it to hang
-
Andrew Ziem (07 Jun 26)
Fix cleaner loading with invalid data type - Add isinstance() checks for option name and ID before appending to tree store - Log errors when option name or ID is not a string - Skip invalid options with continue statement This improves robustness in case of issue like the recently fixed 3b94f8463778412d3b7c1fb021bd8fcbf5283d12. In the GUI, the symptom was that the System category was only partially loaded. Also, many GUI tests failed. Traceback (most recent call last): File "/bleachbit/bleachbit/Cleaner.py", line 627, in register_cleaners cb_done() ~~~~~~~^^ File "/bleachbit/bleachbit/GuiWindow.py", line 792, in cb_register_cleaners_done self.tree_store.refresh_rows() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/bleachbit/bleachbit/GuiTreeModels.py", line 198, in refresh_rows self.tree_store.append(parent, (o_name, o_value, o_id, "", "")) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1366, in append return self._do_insert(parent, -1, row) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1358, in _do_insert row, columns = self._convert_row(row) ~~~~~~~~~~~~~~~~~^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 984, in _convert_row result.append(self._convert_value(cur_col, value)) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 997, in _convert_value return GObject.Value(self.get_column_type(column), value) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/GObject.py", line 340, in __init__ self.set_value(py_value) ~~~~~~~~~~~~~~^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/GObject.py", line 378, in set_value raise TypeError(f"Expected string but got {py_value}{type(py_value)}") TypeError: Expected string but got ('DNS cache',)<class 'tuple'> Traceback (most recent call last): File "/bleachbit/bleachbit/GuiWindow.py", line 585, in on_selection_changed self.append_text(label, 'option_label', scroll=False) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/bleachbit/bleachbit/GuiWindow.py", line 549, in append_text text = text.encode('utf-8', errors='replace').decode('utf-8') ^^^^^^^^^^^ AttributeError: 'tuple' object has no attribute 'encode'
-
Andrew Ziem (07 Jun 26)
Suppress asyncio deprecation warnings - Add warning suppression for PyGObject 3.56.2's deprecated asyncio calls as a new context manager - Apply suppression in Bleachbit.run() to cover entire GTK application lifecycle. (A surgical approach was insufficient.) - Apply suppression for only Python 3.14+ This is a workaround for PyGObject 3.56.2's deprecated asyncio calls. It prevents test failures when PYTHONWARNINGS=error is set and running on Python 3.14 The issue is logged upstream https://gitlab.gnome.org/GNOME/pygobject/-/work_items/697 ====================================================================== ERROR: test_shred_paths_from_clipboard_menu_integration (tests.TestGUI.GUITestCase.test_shred_paths_from_clipboard_menu_integration) Shred a path copied to the real clipboard ---------------------------------------------------------------------- Traceback (most recent call last): File "/bleachbit/tests/TestGUI.py", line 404, in test_shred_paths_from_clipboard_menu_integration self.app.cb_clipboard_uri_received(clipboard, targets, None) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/bleachbit/bleachbit/GuiApplication.py", line 181, in cb_clipboard_uri_received GUI.shred_paths(self._window, shred_paths, ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ should_clear_clipboard=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/bleachbit/bleachbit/GuiWindow.py", line 524, in shred_paths clear_clipboard() ~~~~~~~~~~~~~~~^^ File "/bleachbit/bleachbit/GuiUtil.py", line 43, in clear_clipboard flush_gtk_events() ~~~~~~~~~~~~~~~~^^ File "/bleachbit/bleachbit/GuiUtil.py", line 194, in flush_gtk_events Gtk.main_iteration_do(False) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1879, in main_iteration_do with get_event_loop(GLib.MainContext.default()).paused(): ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/_ossighelper.py", line 270, in get_event_loop loop = events.GLibEventLoopPolicy._get_event_loop() File "/usr/lib/python3/dist-packages/gi/events.py", line 873, in _get_event_loop return cls._get_event_loop_for_context(ctx, force_implicit=force_implicit) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gi/events.py", line 890, in _get_event_loop_for_context if not isinstance(_get_event_loop_policy(), GLibEventLoopPolicy): ~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.14/asyncio/events.py", line 805, in get_event_loop_policy warnings._deprecated('asyncio.get_event_loop_policy', remove=(3, 16)) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/_py_warnings.py", line 833, in _deprecated _wm.warn(msg, DeprecationWarning, stacklevel=3) ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DeprecationWarning: 'asyncio.get_event_loop_policy' is deprecated and slated for removal in Python 3.16
-
Andrew Ziem (07 Jun 26)
Fix syntax error added in recent commit It caused many test failures such as RROR: test_GUI (tests.TestGUI.GUITestCase.test_GUI) Unit test for class GUI ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\projects\bleachbit\tests\TestGUI.py", line 191, in test_GUI gui.update_progress_bar(0.0) ^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'update_progress_bar' ====================================================================== ERROR: test_append_text (tests.TestGUI.GUITestCase.test_append_text)
-
GitHub Action (08 Jun 26)
Update localization files Automatically extracted from ./po/*.po
-
Priit JΓ΅erΓΌΓΌt (07 Jun 26)
Translate to (Estonian) Currently translated at 100.0% (505 of 505 strings) Translation: BleachBit/main Translate-URL: https://hosted.weblate.org/projects/bleachbit/main/et/
BleachBit Security
Security Advisories (2)
- high Patched CVSS 7.3
CVE-2025-32780 DLL Untrusted Path Vulnerability in BleachBit <= 4.6.2 for Windows
- high Patched CVSS 7.3
CVE-2023-47113 DLL Search Order Hijacking vulnerability in BleachBit for Windows
BleachBit Website
Website
Clean Your System and Free Disk Space | BleachBit
BleachBit is a free, open-source disk space cleaner and privacy manager for Windows and Linux. Shred files, wipe free space, and delete junk files safely.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address 172.67.68.253
- Location San Francisco, California, United States of America, NA
- ISP CloudFlare Inc.
- ASN AS13335
Associated Countries
-
US
Safety Score
Website marked as safe
100%
Blacklist Check
www.bleachbit.org was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
BleachBit Reviews
More Linux Defenses
-
Locally checks for signs of a rootkit.
-
ClamTk is basically a graphical front-end for ClamAV, making it an easy to use, light-weight, on-demand virus scanner for Linux systems.
-
Firejail is a SUID sandbox program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces and seccomp-bpf. Written in C, virtually no dependencies, runs on any modern Linux system, with no daemon running in the background, no complicated configuration, and it's super lightweight and super secure, since all actions are implemented by the kernel. It includes security profiles for over 800 common Linux applications. FireJail is recommended for running any app that may potential pose some kind of risk, such as torrenting through Transmission, browsing the web, opening downloaded attachments.
-
Open source GUI firewall for Linux, allowing you to block internet access for certain applications. Supports both simple and advanced mode, GUI and CLI options, very easy to use, lightweight/ low-overhead, under active maintenance and backed by a strong community. Installable through most package managers, or compile from source.
-
Open source intrusion prevention system capable of real-time traffic analysis and packet logging.
About the Data: BleachBit
Change History
- Amended (github) #608
API
You can access BleachBit's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/bleachbit The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share BleachBit
Help your friends compare Linux Defenses, and pick
privacy-respecting software and services.
Share BleachBit and Awesome Privacy with your network!