A surgical Chrome extension for Discord

Silence strip
the noise.
Reclaim the chat.

CleanDis cuts Discord down to what you actually use. Hide chrome you don't need, block handles by name or variant, get pinged when a watched user shows up, export entire channels, and repaint everything with a theme engine. No telemetry. No network calls. Free.

System diagnostic — visualization of the five subsystems that load automatically when you install. Everything is point-and-click in the browser popup. No terminal required.

[ TRY ]
Sandbox · the simulator

See it work. No install needed.

A stylized chat-app with sample messages on the left, a popup-style toggle column on the right. Flip a switch and the corresponding rows hide in real time, exactly like the real extension does on Discord. Add a name to the watchlist and an Auto-Alert toast pops in. Everything stays on this page.

[ Simulation ] general 8 members · stylized preview
A
archmage10:42
anyone else loving how clean this looks now?
D
daisy.bell10:43
ngl i forgot what discord even looked like before this
!
Blocked message
spam.bot.4210:44
🔥🔥 FREE NITRO CLICK HERE 🔥🔥 https://totally-real-discord.xyz
A
archmage10:46
btw the changelog is up: cleandis.app/changelog
CLEANDIS.APP
CleanDis Changelog · v1.1.0
Auto-Alert, Chat Export, hover spotlight, plus Phase 5 Smart Filtering. Read the full release notes.
L
Ignored message
loud.takes10:47
ACTUALLY discord nitro is the best deal of all time and if you don't agree you're fundamentally wrong about consumer software economics. let me explain in 14 paragraphs.
D
daisy.bell10:48
vibe check ⬇️
DEMO
R
root10:49
logs from the export run:
cleandis-export-general.csv
4.2 MB · CSV
C
cleanwave10:51
smart filter is working great. zero bot spam since friday.
🔥4 👍2
Q
quietquiet10:52
way less noise 🎉
// preview only · install to use on real discord
CleanDis
v1.0
demo controls · for Alerts
Local-only · No telemetry
This is a UI simulation, not the live extension. The blocked + ignored messages show Discord's native "Blocked / Ignored message · Show message" stub by default — toggling Hide blocked or Hide ignored in the popup collapses even the stub row to a 6 px slim placeholder. All 8 toggles in the Chat and Embeds subtabs actually affect the sample on the left. The Sidebars subtab is locked in this preview because the demo doesn't have a real server rail, member list, or room list to hide — those toggles work for real on Discord. The 4 locked top tabs (Filters / Alerts / Library / Theme) are full features in the installed extension. Install to see all of it work on actual Discord.
[01]
Interface · the UI surgeon

A Discord as lean as your workflow.

Eleven independent toggle gates ride on the <html> root. Flip what you want gone, leave the rest. Auto-empty collapses messages whose only content was just hidden, so you don't end up with rows of empty bubbles.

01Servers
Hide the left rail. Reclaim ~80px of width.
02Members
Right-side member list, gone.
03Rooms
Channel sidebar with the server name.
04Ignored
Collapse messages from ignored users.
05Blocked
Collapse messages from blocked users.
06GIFs
Tenor and friends, mute.
07URL embeds
Twitter, YouTube, Spotify, SoundCloud.
08Attachments
Images, videos, files. Off.
09Emojis
Inline image emojis disappear.
10Reactions
Reaction shelf hidden.
11Spotlight
Optional hover-focus mode for chat.
[02]
Filtering · the ghost

Block by name or word. Catch the variants too.

Add a handle and CleanDis collapses every message, member-row, mention chrome, typing indicator, and reply-author header from that user — to a 6-pixel slim placeholder, not display:none, so Discord's chat virtualizer doesn't lose its place. Flip aggressive variant matching on and we also catch leet-speak and repeat-character spoofs of the same name.

Surfaces
messages, mentions, member rows, typing indicator, reply-author, embeds inside hits
Match
cosmetic-fuzz canonical (NFKD → diacritic strip → homoglyph fold) + aggressive (leet + repeat-collapse)
Keywords
literal-escaped regex; word-boundary by default, any-flag flips to substring
Storage
chrome.storage.local · zero network
[03]
Presence · the switch

Never miss the moment.

Add a username to the watchlist. The instant they come online or post in a channel you're in, a discreet in-page toast slides up from the corner. Per-target cooldown keeps things sane; a 1-second bootstrap window suppresses the noise from "everyone just appeared online because the page reloaded".

Triggers
offline → online / idle / dnd · new post in current channel
Cooldown
per-target, in-memory only — resets on reload
Caveat
in-channel only; presence requires the user be visible in the right-rail member list
[04]
Auto-Delete · the burner

Burn your messages on a timer.

Add a channel to the watchlist with a per-channel timer (presets: 30s · 5min · 1hr · 24hr). Every message you send in that channel after opting in gets a 💀 0:30 countdown badge that ticks down in place. When it hits zero, CleanDis sends a real DELETE request to Discord — the message is gone for everyone, not just you.

Scope
your own messages only · per-channel opt-in · off everywhere by default
Timer
presets 30s · 5min · 1hr · 24hr; in-flight entries keep their original timer
Persistence
queue lives in chrome.storage.local; survives SW suspend, tab reload, browser restart
Audit log
pending list with cancel buttons + last 100 deletions in popup
Token
read once per delete, never persisted, never logged with its value
Heads up
this is a write feature. Discord may consider automated message deletion a Terms-of-Service concern. First-enable consent gate documents the risk.
[05]
Library · the archivist

Export a channel to JSON + CSV. Locally.

Auto-detects the channel you're in. Pick a range — last N, since a date, or everything — and CleanDis paginates Discord's own message API, formats the result, and hands it to chrome.downloads. The token never touches storage or analytics: it's read from localStorage in the page, held in service-worker memory for one operation, then nulled.

Formats
JSON (lossless wrapper) · CSV (lean, RFC-4180 escaped)
Range
Last N · Since <date> · All
Backoff
30s per-request abort · 5-attempt 429 retry with Retry-After parse
Cap
50 MB encoded output (v1; future: stream-write)
Token
read once, held lexically, nulled in finally. Never logged. Never persisted.
[06]
Theme · the forge

Repaint Discord. From inside Discord.

Fifteen prebaked themes ship in /themes/. Open the in-Discord cog panel to swap by clicking visual cards. Paste a JSON blob to import a friend's palette — export your own to share it back. Edit any prebaked, and your edits override the shipped version on disk.

Midnight
Sunset Oxide
Paper
AMOLED
Pastel Mint
Mocha
Solar Minimum
Terminal Vibe
Deep Space
Amber Console
Blueprint
Cosmic Sermon
Red Shift
Legal Pad
Persimmon
[07]
Privacy · the receipts

Your data stays on your machine.

CleanDis stores all settings — handles, keywords, watchlists, themes — in chrome.storage.local. There are no analytics, no third-party scripts, no telemetry endpoints. The Discord auth token used for chat export is read from localStorage in the page, held in service-worker memory for one operation, then nulled. It is never logged with its value, never written to storage, and never sent anywhere except Discord's own API.

Read the full privacy policy · terms of service · FAQ.

[08]

Ready for a cleaner Discord?

$ chrome web store · live now
# v1.1.0 ships Auto-Delete on top of v1.0.
> one click install · free · local-only · no telemetry.
Add to Chrome