Undiscord Lite

Bulk-delete Discord messages. Zero-dependency personal fork of Undiscord with multi-server batching.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Аўтар
OrbitalCheese
Усталяванняў за дзень
1
Усяго ўсталяванняў
15
Рэйтынг
0 0 0
Версія
1.1.0
Створаны
03.05.2026
Абноўлены
05.05.2026
Памер
275.8 КБ
Ліцэнзія
MIT
Ужываецца на

# Undiscord Lite

Bulk-delete your messages in Discord servers, channels, and DMs. A zero-dependency rewrite of [victornpb/undiscord](https://github.com/victornpb/undiscord) — about 30x lighter, with multi-server batching, graceful error handling and auto-retry, cleaner Discord-data-export import, point-and-click ID capture, and a cleaner smarter UI that just works.

> ⚠️ **DON'T TRUST RANDOM CODE FROM THE INTERNET WITHOUT UNDERSTANDING WHAT IT DOES AND HOW IT DOES IT.**
> The full source is one ~3,750-line file with no minification and zero dependencies. Open it in any text editor before installing. Verify every claim below yourself — I am just some guy on the internet.

> ✅ **No antifeatures.** No tracking, ads, miners, telemetry, analytics, in-script update beacons, or remote code loading. Zero third-party dependencies, `@grant none`, no `@require`. Every network call goes to `discord.com` and nowhere else (verifiable with one `grep` — see [Privacy](#privacy) below).

## Why this fork exists

The original Undiscord lacked a lot of basic core functionality, polish has stagnated, and support for issues is dead. It was also way too bloated and reliant on a dozen+ Node modules for the basic task it was performing. This version uses **exactly zero modules or imports**. Everything is built in-house. Nothing is obscured or imported. Everything is auditable directly in the userscript file.

## Features

- **Zero dependencies.** Single bundled `.user.js` file, ~270 KB. No `@require`, no `GM_*` privileges, no remote script injection. `@grant none`.
- **Multi-server / multi-channel batching** with `Add` / `Select` / `Delete` controls and a live queue display. Mix entire-server wipes with channel-specific entries however you want.
- **Multi-batch batching** Batch your batches! Allows you to batch whole queues. Useful for running several surgical queries in a row. A queue of queues allows you to set it all up in advance and run it in one go.
- **Point-and-click ID capture.** Hit `Select` on any field, then click an avatar / message / server icon / channel in Discord — the ID drops into the field. Hold Shift to capture several in a row.
- **Discord data-export import.** Pre-load message IDs from your Discord data export and skip the search phase entirely — roughly 3-5x faster on large wipes. Parsed locally in your browser, never uploaded.
- **Robust rate-limit handling.** Monotonic delay bumps with half-life decay back to your chosen baseline. The original bumped on a 429 and never reset, leaving you crawling for the rest of the run.
- **Auto-retry** on HTTP 5xx, network errors, and Discord's transient empty-page quirks.
- **Two-stage filter system.** A **Search filter** uses Discord's own search API (`has=image`, `mentions=`, etc.) to narrow what comes back. A **Delete filter** does a client-side post-pass to skip messages you want to spare — including a `Skip extension` field with eight presets and a custom semicolon-separated list.
- **Server-bar trash-icon injection** + `Ctrl+Shift+D` shortcut. Mounts in Discord's left rail; falls back to a floating action button if the DOM doesn't expose the expected anchors.
- **Self-contained dark palette.** All colors are pinned to hardcoded hex values — the panel ignores Discord's CSS theme variables, so BetterDiscord/Vencord/custom themes can't make the UI look terrible.
- **Verify button.** Prints a structured snapshot of the current run config to the log without starting anything — sanity-check before you click `▶︎ Delete`.
- **Streamer mode.** Redacts IDs, usernames, and message content in the log + confirmation preview.
- **Defensive UX.** Invalid inputs are clamped, dates auto-restore, inputs are auto-formatted, permissions are pre-flighted, the log auto-trims at 1000 entries, and every Stop click is honored immediately (no waiting through the current sleep).

## Privacy

**Short version: your auth token is never stored, never logged, and never sent anywhere except `discord.com`.**

- Token is read from Discord's own `localStorage` via a same-origin iframe (the same token Discord's UI uses, from the same place). Held in a JS variable for the run; cleared when the tab closes.
- Exactly **four** `fetch()` call sites in the entire codebase — search, delete, the DM-list lookup, and the multi-author permission pre-flight. All four point at `discord.com`. Verify it yourself:
```
grep -rn 'fetch(' src/
```
- No telemetry, no analytics, no update beacons, no third-party code. Update checks happen at the userscript-manager layer (Tampermonkey, Violentmonkey) — never from inside this script.
- The Discord data export is parsed locally in your browser via `FileReader.text()`. Nothing imported is uploaded anywhere.

The full Privacy section in the README walks every claim with line-number anchors and `grep` invocations you can run to confirm them.

## Install

1. Install a userscript manager — [Tampermonkey](https://www.tampermonkey.net/) (recommended), [Violentmonkey](https://violentmonkey.github.io/), or Greasemonkey. Works in Chrome, Edge, Firefox, Safari, Opera, and most Chromium-based browsers.
2. **Chromium browsers only** (Chrome / Edge / Brave / Opera / Vivaldi): open `chrome://extensions` (or equivalent) and enable **Developer mode**. Manifest V3 requires it for userscript managers to run user code.
3. Click **Install this script** above.
4. Open or reload Discord. A trash icon mounts in the left rail just above the server list — click it (or press `Ctrl+Shift+D`) to open the panel.

## Quick usage

- **Author ID** — whose messages get deleted. Click `Me` to autofill yours. Comma-separate to wipe multiple authors in one batch (requires Manage Messages on each target server for non-self authors; checked at run start).
- **Server / Channel queue** — `Add` queues the server/channel you're currently viewing. Empty Channel under a queued Server = wipe the whole server.
- **Add DMs** — queues every DM channel currently open in your sidebar. Tick "Exclude group DMs" to skip group ones.
- **▶︎ Delete** — first job shows a confirmation dialog with estimated count, ETA, and content preview. Subsequent jobs in the same batch run silently.
- **🛑 Stop** — aborts the current sleep immediately. No need to sit through the delay.

The `Help` button on every section prints contextual documentation to the log instead of redirecting away from the page.

## Recommended pacing

- **Search delay:** ~30s is the practical floor. Below that, Discord returns smaller batches per call until you're retrying more often than deleting. **40–45s search + 0.5–1s delete** is the sweet spot for consistent results. The script auto-bumps both on 429s and decays back toward your stepper baseline as deletes succeed.

## Disclaimer

> ⚠️ Discord's terms of service forbid automated user-account actions (self-bots). Using this tool could result in account termination. Use at your own risk, on your own account, on your own data.

This tool only deletes messages owned by the account it's run on (or messages the account has the *Manage Messages* privilege over) via the same HTTP endpoints Discord's UI uses. There is no mechanism in the script for deleting other users' messages outside of standard moderator permissions.

## Source, issues, and full docs

- **Repository:** https://github.com/OrbitalCheese/undiscord-lite
- **Bug reports / feature requests:** https://github.com/OrbitalCheese/undiscord-lite/issues
- **Full README** (build instructions, Import-mode walkthrough, line-anchored Privacy audit, "How it works" walkthrough): https://github.com/OrbitalCheese/undiscord-lite#readme

## Credits

Built on the work of [victornpb/undiscord](https://github.com/victornpb/undiscord). MIT-licensed.