A lightweight, set-and-forget plugin to kill Discord's built-in tracking and telemetry. Works right out of the box as a plugin for BetterDiscord. Just put it in your plugins folder and forget it exists.
- Stops Sentry & Crash Reports: Intercepts
window.__SENTRY__andDiscordSentryat startup, closing the hub, clearing the scope, and dropping crash logs before they leave your machine. - Blocks Trackers (Fetch, XHR & Beacon): Catches outbound requests using runtime proxies. If a request is trying to talk to
/api/science, Google Analytics, Sentry, Hotjar, Fullstory, Segment or other known telemetry routes, it gets a fake200 OKso the client thinks everything went through. - Canvas Fingerprinting Protection: Intercepts
toDataURLandgetImageDatato inject imperceptible per-session noise into canvas output. The visual result is identical — the fingerprint hash isn't. - AudioContext Fingerprinting Protection: Patches
AudioContextandOfflineAudioContextoscillators to shift the audio-hash fingerprint between sessions without any audible effect. - Hardware & Navigator Spoofing: Overrides WebGL renderer info,
hardwareConcurrency,deviceMemory,userAgent,platformandvendorwith generic, non-identifiable values. - Wipes Tracking Storage: On startup, purges known tracking keys from
localStorageandsessionStorageand blocks new writes to those keys. If Discord has removed these APIs entirely (as recent builds do), the category detects this and marks itself inactive rather than failing silently. - Silences Analytics & Science: Patches Discord's internal analytics pipeline and Science event system so telemetry events are dropped before they're queued.
- Mutes Voice Telemetry: Intercepts voice quality reports, call analytics and stats submissions from the voice engine, including engines created mid-session after a disconnect.
- Disables Process Monitor: Blocks rich presence / game detection callbacks from reaching Discord's native layer.
- Fail-Safe Built-in: Every block runs in its own isolated try/catch. If Discord updates something and a patch breaks, it fails quietly. The rest of the plugin keeps working and your client won't crash.
- Download
BlockScience.plugin.js. - Go to your Discord Settings > Plugins.
- Click Open Plugins Folder and drop the file inside.
- Turn it on.
The settings panel gives you granular control over every block category.
Each of the seven block categories can be enabled or disabled independently:
| Category | What it controls |
|---|---|
| Sentry | Sentry error reporting and telemetry hub |
| Network | Fetch, XHR and sendBeacon to tracking endpoints |
| Storage | Tracking key writes to localStorage / sessionStorage |
| Fingerprinting | WebGL, Canvas, AudioContext and navigator spoofing |
| Analytics | Discord's internal analytics and Science event pipeline |
| Voice Telemetry | Voice quality reports and call analytics |
| Process Monitor | Rich presence / game detection callbacks |
Each category shows one of three states next to its name:
- 🟢 active — enabled and working.
- 🟡 inactive — enabled, but the underlying mechanism couldn't be found in this Discord build (hover the badge or check the console for why).
- ⚪ off — disabled by you.
If a category is inactive it means Discord changed something internally — the plugin is still running fine, that specific vector just has nothing to intercept right now.
Changes to toggles take effect on the next Discord restart.
A counter bar at the top of the settings panel shows how many blocks each category has recorded since the plugin was last started. Counters update in real time — no need to open the console.
A toggle to print every blocked request, storage write and fingerprint attempt to the Ctrl+Shift+I console as it happens. Useful to confirm the plugin is active. All blocks remain in effect regardless of this setting.
No data collection, no external servers, no configurations phoned home. Everything stays inside your local client memory.
MIT. Do whatever you want with the code.
Made by 8ug8ird 🐦