How to Remove Inactive Members From a Discord Server (Prune the Right Way)
To remove inactive members, open Server Settings → Members → Prune, pick an inactivity window (1, 7, or 30 days), and confirm. But Discord's built-in Prune only removes people with no role and no recent activity, so it misses most of your real dead weight. The safer method is to find truly inactive members using activity data, warn them, move them to an inactive role, then kick only those who never come back.
A bloated member count looks nice on paper, but a server full of ghosts hurts you. Discoverability ranks partly on active members, your engagement metrics look worse than they are, and a "10,000 member" community where 200 people talk feels dead to newcomers. Cleaning out inactive members fixes all three. The trick is doing it without accidentally kicking loyal lurkers or long-time supporters. Here's how to prune the right way.
What Discord's native Prune actually does (and ignores)
Discord ships a Prune tool inside Server Settings → Members. It removes members who:
- Have been inactive for the window you choose (1, 7, or 30 days), AND
- Have no roles assigned to them.
"Inactive" here means they haven't sent a message, joined a voice channel, or otherwise been seen by Discord in that window. The tool will show you an estimated count before you confirm, and you can optionally include specific roles in the sweep.
What it ignores is the important part. Native Prune does not read channel-level activity in a granular way, it can't tell a lurker who reads every day from someone who left months ago, and most critically, it skips anyone holding a role. On most servers, that's almost everyone.
Why Prune skips anyone with a role
This is the single biggest reason owners think Prune is "broken." If you give every new member a @Member verified role on join (which most servers do via a welcome auto-role), then every single person has a role, and native Prune will report that zero members are eligible to remove.
Discord designed it this way on purpose. A role is treated as a signal that the member matters to your server, so the tool refuses to touch them unless you explicitly add that role to the prune. That's a safety feature, but it means the default Prune is useless on any well-organized server.
You have two options: either include your base member role in the prune (risky, because it sweeps lurkers too), or skip native Prune entirely and use activity data to find the genuinely inactive people. The second approach is what the rest of this guide covers.
Step 1: Find your real inactive members with activity data
Before you remove anyone, you need to know who is actually inactive versus who just lurks quietly. Discord's native tools won't tell you this. You need per-member activity tracking.
PeakBot's XP and leveling system tracks both message and voice activity per member, and the analytics dashboard surfaces who has gone quiet over a given window. Because XP accrues from real participation, a member sitting at the bottom of the leaderboard with no recent gain is a genuine inactivity signal, not a guess based on roles. Invite tracking also shows you which members joined from dead invites and never engaged.
Start by reviewing the opposite end first: see how to find your most active Discord members so you have a baseline of what healthy activity looks like in your server. Then build your removal list from the bottom up. Members with zero messages, zero voice minutes, and no level progression over 30 to 90 days are your candidates.
PeakBot's XP and leveling system and analytics dashboard are both free with no time limit, so you can build this list without paying for anything.
Step 2: Set your inactivity threshold honestly
Pick a window that fits your community's rhythm. A fast-moving gaming server can use 30 days. A niche hobby server where people check in monthly should use 90 days or longer. If you prune on a 7-day window, you will kick people who simply took a vacation.
Be honest about what "inactive" means for your space. Some of your most valuable members are silent readers who never post but show up daily, share your invite link, and would buy in if you launched something. Activity data lets you separate a silent-but-present lurker (recently online, reads channels) from a true ghost (not seen in months). Only the second group belongs on the removal list.
Step 3: Warn before you kick
Never kick silently. A warning round does two things: it's courteous, and it reactivates a chunk of people who simply forgot the server existed. Often the warning alone wins back more members than the prune removes.
Post an announcement and, ideally, send a direct message to flagged members:
We're cleaning up inactive accounts on [date]. If you'd like to stay, just send a message or react to this post and you'll keep your spot.
PeakBot's welcome and DM messaging can deliver this kind of notice, and reaction roles let people self-rescue with a single click. Give people at least a week to respond. Anyone who reacts or posts comes off the list automatically because their activity resets.
This is also the moment to ask why people went quiet. If a lot of members are ghosting, the problem may be your server, not them. Pair your cleanup with ideas to revive a dead Discord server so the people you keep have a reason to stay.
Step 4: Use an inactive role as a softer first step
Kicking is permanent and final. A gentler intermediate step is an inactive role that quietly restricts visibility instead of removing the person.
Create an @Inactive role, then set channel permissions so that role can't see most channels (or can only see a single "come back" channel with a re-verify button). Move flagged members into it. This:
- Keeps them in your server, so they're easy to win back.
- Cleans up your active member experience, because ghosts no longer show in member lists of real channels.
- Gives a clear signal to the member that something changed, prompting some to re-engage.
To move dozens or hundreds of people into the inactive role at once, see how to mass-assign roles to Discord members. Doing it by hand for a large server is not realistic. After 30 to 60 more days, anyone still sitting in the inactive role with no activity is a safe kick.
Step 5: Prune without nuking your member count
When you do remove people, do it in controlled batches rather than one massive sweep. A sudden drop from 5,000 to 2,000 members can trip Discord's own anti-abuse heuristics and looks alarming in your audit log.
Remove a few hundred at a time, watch your analytics between batches, and keep your warning-and-grace-period flow attached to each batch. If you're using PeakBot's anti-raid and anti-nuke protection, large self-initiated member changes are logged cleanly, so you keep a record of exactly who was removed and when, in case you need to re-invite anyone later.
Also remember: removing a member is a kick, not a ban. Kicked members can rejoin with a fresh invite. That's the behavior you want for inactivity cleanup. Reserve bans for rule-breakers.
Step 6: Automate periodic cleanup
A one-time purge feels great and then your server slowly fills with ghosts again. The fix is to make cleanup routine instead of a once-a-year event.
Set a recurring rhythm: monthly, run your activity report, refresh the inactive role, and send the warning DM to newly-flagged members. With PeakBot's logging and analytics you can compare month to month and catch the drift early, while it's a handful of people instead of thousands. Reaction roles and welcome auto-roles keep the active side tidy so your reports stay meaningful.
Automating the warning step is where you get the most value. The DM that reactivates a forgetful member is worth more than the kick that removes a dead one. Keep members engaged in the first place and you'll have far less to prune. A regular cadence of Discord engagement ideas to keep members active does more for your member count than any prune ever will.
Mistakes that get good members removed
A few common errors turn a healthy cleanup into a community-damaging one:
- Pruning on too short a window. A 7-day window kicks people on vacation, traveling, or busy with finals. Default to 30 days minimum, 90 for slower communities.
- Treating "no messages" as "inactive." Silent readers who log in daily are present and valuable. Use combined activity signals (messages, voice, recent online status), not message count alone.
- Skipping the warning round. The warning is your biggest member-saver. Removing people cold guarantees you lose some you wanted to keep.
- Removing boosters, donors, or role-holders by accident. Always exclude your supporter, booster, and staff roles from any removal list. Double-check before you confirm.
- Banning instead of kicking. Banning blocks rejoining. Inactive members should be kicked so they can come back later.
- Doing it all at once. Large single sweeps are hard to reverse and look bad in logs. Batch it.
Get those right and you end up with a leaner, more genuinely active community, plus a clean record of who you removed and why.
Why PeakBot fits inactive-member cleanup
You can do a basic prune with Discord alone, but you can't find real inactive members without activity data, and you can't warn or soft-restrict them without a bot. PeakBot covers that whole loop for free: XP and voice tracking to identify ghosts, an analytics dashboard to build the list, welcome and DM messaging for the warning round, reaction roles for self-rescue, and full logging so every removal is on record.
It's one bot that replaces MEE6, Carl-bot, Dyno, and TidyCord. MEE6 has the most familiar leveling UI and Carl-bot is excellent at granular reaction roles, but PeakBot bundles activity tracking, messaging, roles, and logging together at no cost, with 30+ features free and no trial period. If you later want to rebuild your server structure after a big cleanup, the AI Server Builder (a Pro feature at $8.25/month) generates a fresh channel and role layout from a plain-English description in under 60 seconds. PeakBot already powers 500+ Discord communities. See the full feature list or compare it against other bots.
FAQ
Does Discord's Prune remove members with a role?
No. Native Prune skips anyone who holds a role unless you explicitly add that role to the prune. Since most servers auto-assign a member role on join, default Prune usually reports zero eligible members. That's why you need activity data to find the genuinely inactive people.
Is removing an inactive member a kick or a ban?
It's a kick. Pruned members are removed but not banned, so they can rejoin later with a new invite. Reserve bans for rule-breakers, not for inactivity.
How long should someone be inactive before I remove them?
It depends on your community's pace. Use 30 days for active servers and 90 days or more for slow, niche communities. Native Prune's longest window is 30 days, so for longer thresholds you'll need activity data rather than the built-in tool. Never prune on a 7-day window, because it kicks members who are simply on a break.
Can I find inactive members for free?
Yes. PeakBot's XP, voice tracking, and analytics dashboard are all free with no time limit, so you can build an accurate inactivity list without paying. Native Discord alone can't show you per-member activity, which is why a bot is needed.
Will pruning hurt my server's discoverability?
Removing genuine ghosts usually helps, because discoverability favors active members over raw count. The risk comes from removing silent-but-present lurkers, so use real activity signals and a warning round before you kick anyone.
