how to delete all your discord messages

discord doesn't have a delete-all button. so I built one.

The short version

Discord has no built-in way to bulk-delete your own messages. Deleting your account doesn't do it either: everything you ever wrote stays up, attributed to a deleted user. The only way out is deleting messages one by one through the API, which is exactly what discord-delete automates: your data package already holds the exact channel and message IDs for everything you've ever sent, so it works down that list, one plain DELETE per message, against the same REST endpoint the client uses. The search API is never touched, and nothing hooks into Discord's UI.

discord-delete is a free, MIT-licensed tool. It's a single binary for Linux, macOS, and Windows that reads your Discord data package and deletes every message and reaction in it. It runs in a terminal, through an interactive TUI or fully headless, so you can start it on a server and walk away.

The easiest way in is the interactive TUI. Run discord-delete with no arguments and it opens a guided screen: point it at your data package, pick what to delete (or take everything), watch the live count update, and confirm. The commands further down are just the headless equivalents, for scripting or leaving it on a server.

discord-delete

github.com/DatCodeMania/discord-delete

warning: automating a user account is against Discord's Terms of Service and can get the account banned. discord-delete cooperates with Discord's rate limits, but that does not make a ban impossible.

Delete everything, step by step

  1. Request your data package

    In Discord: Settings > Data & Privacy > Request Data. Tick both Messages and Activity (reactions live in Activity). Discord emails you a zip within a few hours to a few days, and the less you request, the faster it arrives.

  2. Install discord-delete

    pwsh — windows

    scoop bucket add datcodemania https://github.com/DatCodeMania/scoop-bucket

    scoop install discord-delete

    zsh — macos

    brew install DatCodeMania/tap/discord-delete

    zsh — arch linux

    paru -S discord-delete-bin

    Prebuilt binaries for every platform are on the releases page, and Go users can go install it. Details in the README.

  3. Do a dry run

    zsh — dry run

    discord-delete --package package.zip

    Every run is a dry run by default: it previews exactly what would be deleted and changes nothing. The TUI lets you narrow the run first, by server, channel, date range, attachment type, or a regex on message content. A dry run needs no token, so you can test out the numbers before deciding anything.

  4. Execute

    zsh — execute

    DISCORD_TOKEN=... discord-delete --package package.zip --no-tui --execute

    When the preview looks right, confirm in the TUI, or add --execute headless. Deletion is permanent: there is no undo. Deleting needs your user token, and the easy path is the built-in browser sign-in: a normal Discord login window opens (2FA included) and the tool lifts the token from there, so you never handle it yourself (paste one in if you prefer). By default the token is never written to disk: it exists in memory only, and the only place it is sent is Discord itself, same as the official app. Storage is opt-in and goes to your OS keyring, encrypted.

  5. Walk away

    zsh — unattended

    DISCORD_TOKEN=... discord-delete --package package.zip --no-tui --execute --ntfy my-topic

    A large account takes days (see below), so discord-delete is built to run unattended. Point --ntfy at a free ntfy topic and your phone gets progress every 30 minutes, plus working Pause, Resume, and Stop buttons. Every confirmed deletion is logged as it happens, so a crash, reboot, or Ctrl+C loses no progress: a re-run picks up where the last one stopped.

How long it takes: the 0.5/s wall

For messages older than about two weeks, Discord enforces a shared, account-wide rate limit of roughly one delete every two seconds. The ceiling is Discord's, and not much can be done about it without increasing ban risk. So instead it optimizes for what it can control: asking as little of your attention as possible.

Two things soften the cap. First, messages newer than about two weeks sit in per-channel rate buckets, so discord-delete clears many channels in parallel there, roughly seven times the throughput of deleting one channel at a time. Once old messages force everything into the shared bucket, the run collapses to a single worker rather than hammering Discord with requests that do nothing. Second, pacing is adaptive: each channel widens its spacing when Discord throttles and tightens back toward the floor as deletes succeed, the same additive-increase, multiplicative-decrease idea TCP uses. The run finds the fastest tolerated rate by itself, instead of requiring any hand tuning.

Real-world scale: the largest run so far was my own account, over 400,000 messages, which took just over a week, fully unattended.

FAQ

Will I get banned for this?

Automating a user account violates Discord's Terms of Service, so a ban is possible and you should treat the risk as real. discord-delete cooperates with Discord's rate limits (backs off when throttled, respects the rate-limit headers, caps total request volume below Discord's own limit). No tool of this kind can promise your account is safe.

How long will my account take?

Older messages cap at roughly 0.5 per second, account-wide. That puts 10,000 messages at around six hours and 100,000 at around two and a half days. The largest tested run, over 400,000 messages, took just over a week. Recent messages go faster because channels delete in parallel.

Doesn't deleting my account remove my messages?

No. They stay up, attributed to a deleted user. If you want them gone, they have to be deleted individually before the account goes, which is the entire reason discord-delete exists.

Can it delete messages in servers I've left?

Not without rejoining. Discord answers with Missing Access for those, and the end-of-run report groups them by server so you can see exactly where they are. Rejoin the server (or reopen the DM) and re-run: it retries what was skipped and skips what's already gone.

What about messages sent after I requested the package?

The package covers what existed when Discord built it, so anything newer isn't in it. Request a fresh package at the end if you need a complete sweep.

Is giving it my token safe?

The token stays in memory unless you explicitly opt into keyring storage, it is never written to disk otherwise, and the only host it is ever sent to is Discord itself. The source is MIT-licensed, so you can verify all of that rather than take my word for it. --forget-token removes a stored one.

Can it delete other people's messages?

No, by design, even where you hold Manage Messages. It deletes your own messages and reactions, nothing else.

Get it

discord-delete is free and open source. The repository has the full README; binaries for Linux, macOS, and Windows are on the releases page. If something breaks on your package, open an issue, or just say hello.

Built by CodeMania.