Keep the Discord features you use. Remove the rest.
A portable Windows app to clean, install and update Discord with your own optimization profile.
English · Français
- Download DiscordCleaner.exe and run it. The cleaner needs no installation.
- Open Optimizations, choose a profile and review the features you want to keep.
- Review your selection, then confirm cleanup. To install or update Discord, use the Dashboard to apply your profile after installation.
Requirements: Windows 10 or 11, 64-bit. Administrator access is requested at launch for the Windows service and system startup entries. Installation and update checks require an internet connection.
The interface is available in English and French. It follows your system language initially; you can switch languages in the header.
Verify the download
Download DiscordCleaner.exe.sha256 from the same release. In PowerShell, compute the executable's hash and compare it with the value in that file:
Get-FileHash .\DiscordCleaner.exe -Algorithm SHA256| Tab | What you can do |
|---|---|
| Dashboard | See the installed Discord version, installation state, estimated reclaimable space and selected profile. Check for updates, then install, update or reinstall Discord with your profile. |
| Optimizations | Choose a profile and adjust background services, startup behavior, optional modules, language packs and files. Each option explains its purpose, removal effects and risk level. |
Your profile and custom choices are remembered across scans and restarts. You can configure them before installing Discord, even when the corresponding files are absent. A confirmation screen lists the planned actions before execution; a live log tracks progress.
| Profile | Behavior |
|---|---|
| Minimal | Removes the background helper, replaces startup entries and rebuilds the shortcut. Keeps modules, languages and the updater. |
| Balanced | Also removes optional features such as Krisp and the overlay, plus unused languages. Protects the cleanup across restarts; updates are managed from the Dashboard. Review which features you need before applying. |
| Aggressive | Removes known optional modules, including those marked risky, and the updater files. Protects the cleanup across restarts. Calls, video or screen sharing may stop working. |
| Custom | Your individual selections, saved for next time. Changing an option switches to this profile. |
Balanced and Aggressive keep English and the system language by default. Core modules (discord_desktop_core, discord_voice, discord_utils, discord_modules) and the en-US language pack are protected from removal. Unknown modules are never selected by a preset.
Keep cleanup across restarts is enabled by Balanced and Aggressive, and adjustable in Custom. Discord's native updater runs inside Discord.exe; deleting Update.exe alone does not stop it. Protection pins it to the locally installed release and excludes removed modules from that manifest. Automatic updates pause: use the Dashboard regularly for updates, including security fixes. Disabling protection restores the previous update settings; components can then return.
| Area | Components | Effect to consider |
|---|---|---|
| Background helper | DiscordSystemHelper and its executable |
Disables and removes Discord's Windows helper service. |
| Startup entries | Registry entries that launch Discord through Update.exe |
Stops that startup path. You can optionally register a direct launch of Discord.exe. |
| Automatic updater | Update.exe, SquirrelSetup, download/, packages/ |
Automatic updates stop. Use the Dashboard to update Discord with your profile. |
| Optional modules | Krisp, overlays, game detection, Rich Presence, spell check and more | The associated features may disappear or stop working. Modules can be selected individually or by group. |
| Languages | Translation packs you do not keep | Removes those interface languages. |
| Additional files | swiftshader/, chrome_*.pak, app.ico, debug.log |
Effects depend on the file. Keep the software renderer if your graphics setup needs it. |
The Dashboard checks Discord's official Stable / Windows x64 feed at launch and on request, including when Update.exe has been removed. It compares application versions; individual module revisions are not tracked. A newer local application version is not downgraded.
When you confirm Install / Update / Reinstall with my profile, the app:
- Downloads the official installer for the checked version.
- Verifies its Windows Authenticode signature and Discord publisher.
- Temporarily suspends cleanup protection, runs the installer and waits for the committed installation manifest and startup modules.
- Closes Discord, reapplies protection for the installed release and applies your selected optimizations.
Discord may open during initialization and is closed for cleanup. Signature failures, installation errors and timeouts prevent the cleanup step. The temporary installer download is removed after the operation. No resident service is added by the cleaner.
Keep the cleaner open until completion. Closing the window and starting overlapping operations in the same instance are disabled while an operation runs.
An active external updater, failed shutdown, incomplete module bootstrap or invalid update configuration stops cleanup before any files are deleted. If an installation fails, the cleaner attempts to restore protection and reports any recovery failure. It does not reactivate an older release's pin over a newly installed version.
Removed components are not backed up. Completed deletions are not rolled back if a later step fails. Cleanup does not delete your existing account data. Previous update settings and any preexisting pinned manifest are saved so protection can be disabled without losing them.
To restore removed components and automatic updates, choose Minimal and Reinstall with my profile. Alternatively, disable cleanup protection, apply that change, then reinstall from discord.com. Reinstalling with Balanced or Aggressive reapplies their removals and protection.
The current Windows native updater is supported. Its installed manifest is read from installer.db without modifying the database. Protection uses USE_PINNED_UPDATE_MANIFEST and pinned_update.json in Discord's user data directory; only this setting is changed in settings.json, using atomic file replacement. discord-cleaner-update-state.json stores the prior setting and manifest. An unsupported or incomplete installation is reported instead of silently falling back to ineffective legacy SKIP_* flags.
Use Windows with Node.js 22.23.2 (the CI version), rustup, and the C++ Build Tools and WebView2 requirements listed in the Tauri Windows prerequisites. The Rust version is pinned in rust-toolchain.toml.
From the repository root:
rustup toolchain install --no-self-update
npm ciStart development from an elevated terminal:
npm run tauri devBuild the portable executable:
npm run tauri build -- --no-bundle -- --lockedOutput: src-tauri/target/release/discord-cleaner.exe.
npm run test:release
npm run build
npm run test:ux
npm run test:updates
cargo test --manifest-path src-tauri/Cargo.toml --locked --libUI checks use installed Microsoft Edge and simulated Discord data. Installer checks simulate network, signatures and processes in temporary fixtures. These checks do not clean your Discord installation or run a real installer. Rust's --lib keeps tests separate from the main executable's administrator manifest.
| File | Responsibility |
|---|---|
| src/main.ts | Interface, saved selections and operation flow; vanilla TypeScript. |
| src/catalog.ts | Module and file descriptions, removal effects and risk levels in both languages. |
| src/i18n.ts | English and French interface text. |
| src-tauri/src/cleaner.rs | Scans Discord and applies the plan using freshly resolved paths. |
| src-tauri/src/updates.rs | Coordinates update checks, installation and subsequent cleanup. |
| src-tauri/src/discord-update.ps1 | Embedded Windows PowerShell for downloads, signature checks and installer execution. |
Pull requests to main run checks and build without publishing. Pushes and manual workflow runs on main publish after successful checks. Versioning follows commit messages since the highest reachable stable tag:
| Commit | Version bump |
|---|---|
feat!: ... or a BREAKING CHANGE footer |
Major |
feat: ... |
Minor |
Other messages, including fix:, docs: and chore: |
Patch |
Add [skip ci] to a commit message to skip CI and publication. Release versions are injected at build time; tauri.conf.json remains at 0.0.0 in the repository.
The workflow verifies the executable's version and publishes it with a SHA-256 file. Interrupted publication can resume; an already published commit with its executable does not need rebuilding.
After publication, cleanup removes older published releases and older completed workflow runs, including their logs and artifacts. It preserves the latest release, the current run, active or newer runs, drafts and all Git tags. Build diagnostics and UI screenshots are retained for up to seven days, or until the next release deletes their run.
See the release workflow and release script for the implementation.
Based on the original Discord Debloater batch script by Kydaix. Built with Tauri, Rust and TypeScript.
Released under the MIT License.