Handling Toxic Players Without Killing Your Community
A graduated moderation ladder for game server owners and moderators: warnings, gags, kicks, temporary bans and permanent bans, with durations, evidence rules and a report system that works when no admin is online.
By SweetMask · · updated · 18 min read
Published 13 September 2026 · JoinGG
Toxicity is a moderation problem, not a personality problem. Publish a short rule set, run a five-step ladder from warning to permanent ban, log every action with evidence attached, and let any moderator act alone at the bottom of the ladder while permanent bans need a second pair of eyes.
Every server owner meets the same argument in their own Discord. One side says the server has become unwelcoming. The other says it is a video game, people talk, and the last three bans were nonsense. Both sides are usually describing real events. The problem is that the server has no ladder, so every incident becomes a fresh negotiation about what the rules are, and the outcome depends on which admin happened to be watching.
That is the actual failure: not toxicity, which is ordinary and predictable, but the absence of a graduated response a tired moderator can apply at two in the morning without a committee. Servers that get this wrong lose players quietly and the owner blames the map rotation. If your population is flat and you have never audited your moderation, read the breakdown of why nobody joins your server alongside this guide, because the two problems arrive together.
The two ways servers get moderation wrong
Under-moderated servers do not look broken. Nobody posts a complaint, nobody argues in Discord, the rules page stays untouched for two years. What happens instead is that new players connect, watch one person spend a round calling somebody a slur while three regulars laugh, and disconnect. They never file a report because they were never invested enough to file one. The cost is invisible in every metric except the one that matters, which is whether the server fills at peak.
The numbers make this brutal for small servers. Across the servers JoinGG polls, Team Fortress 2 community servers carry roughly 2,320 concurrent players spread across 569 listed servers, which is about four each. Garry's Mod sits at roughly 2,700 across 351, or about eight. Counter-Strike 1.6 is healthier at roughly 10,800 across 1,588, still under seven per server, and you can watch the live spread on the TF2 player count page. At that scale, losing three regulars is not a rounding error. It is the difference between a server that seeds at 18:00 and one that sits empty all evening because nobody wants to be the first person in.
Over-moderated servers fail faster and louder. The symptoms are easy to recognize: bans for arguing with an admin, bans issued in under thirty seconds with no evidence recorded, a rule list that has grown to forty numbered items because every rule was written in response to one incident, and admins who use sm_slay as a conversational device. The population drops, the owner concludes the remaining players are the problem, and the ban list keeps growing.
The middle path is not a compromise between the two. It is a different structure, resting on four things: rules short enough to read during a map load, a fixed ladder so the punishment does not depend on the admin's mood, evidence attached to every action above a warning, and an appeal route that occasionally overturns a ban.
Build the escalation ladder before you need it
A ladder is a written mapping from what an admin sees to what an admin does. Its whole value is that it removes the decision. At 02:00, with six people shouting in chat, the moderator should not be deciding how serious this is. They should be matching the behavior to a row and applying the row.
The five rungs are warn, mute, kick, temporary ban and permanent ban, and each does a different job.
- Warning. Names the player, names the rule, gets logged. An unlogged warning did not happen, because the next admin cannot know this is the third one.
- Mute or gag. The workhorse. In SourceMod,
sm_gagremoves text chat,sm_muteremoves voice andsm_silenceremoves both; AMX Mod X does the same withamx_gag. The player keeps playing, which matters: a muted player who stays usually calms down, and a kicked one usually returns angrier.
- Kick. Not a punishment, a circuit breaker. It costs thirty seconds and it is the only tool that reaches somebody not reading chat at all.
- Temporary ban. A cool-off with a defined end. Its purpose is to end a session, not to teach a lesson.
- Permanent ban. A statement that this person will never be welcome. Reserve it for cheating, evasion, and anything involving threats, doxxing or minors.
Durations matter more than people expect. A 60-minute gag is proportionate to a first slur and is over before the map ends, so nobody escalates over it. A 24-hour mute survives the session. A 7-day ban is the longest sentence most players will wait out. Thirty-day bans are the worst option available: long enough that the player finds another server, short enough that you never actually made the decision to remove them. If a case feels like thirty days, it is either seven or permanent.
Pick the tooling before you write the rules, because the tooling shapes the ladder. On Source games, SourceMod plus SourceBans++ gives per-admin flags, ban durations and a shared web database across every server you run; on GoldSrc, AMX Mod X does the equivalent through users.ini, and the comparison of SourceMod, AMX Mod X and Oxide covers which one your game supports. On FiveM, txAdmin has warn, kick and ban built in with a full action history per identifier. On Minecraft, LiteBans plus LuckPerms does the same job with per-node permissions.
Here is a ladder that works on a mixed public server. Copy it, adjust the durations to your game, and publish it where players can read it. If you run a Counter-Strike 1.6 server with a 32-slot public rotation, the timings below are already about right.
That last row is the one that saves servers. Disrespecting an admin is not an offense. If your rules contain a clause that makes it one, you have handed every moderator a general-purpose justification, and general-purpose justifications are how power-tripping starts.
Why chat filters fail on their own
A chat filter is a string matcher. It catches exactly the strings on its list, in exactly the forms on its list, and it is blind to everything else. Players work this out in about ten minutes. Spacing defeats it, leetspeak defeats it, Cyrillic homoglyphs that render identically to Latin letters defeat it, deliberate misspelling defeats it. Meanwhile the most damaging behavior on a server rarely uses a listed word at all: it is one person following another around the map for an hour, or a group deciding that the new player is the joke for the evening.
The failure runs in the other direction too. Substring matching without word boundaries is how servers end up censoring "assassin", "analysis" and "Scunthorpe", a problem famous enough to carry that town's name. Every false positive teaches your regulars that the filter is stupid, and a filter your community mocks deters nobody.
What filters are genuinely good at
Keep them, but narrow the job to four things they do well:
- A short, high-precision slur list. Thirty to sixty exact terms with word boundaries, not two thousand substrings. This sets a floor; it does not catch everything.
- Advertising blocks. Matching IP:port strings and connect commands stops rival servers recruiting in your chat, a constant problem on popular Garry's Mod servers and in any game where joining is a single console command.
- Contact-detail patterns. Phone numbers, street addresses and real names posted next to a player's handle. Blocking these buys the seconds you need before a moderator arrives.
- Rate limits. Six messages in two seconds is spam regardless of content, and because rate limiting is content-blind it never produces the false positives a word list does.
Note what is missing: judging tone, judging intent, and touching voice chat at all. Voice is where most serious harassment happens on public servers and no filter sees it. That is why the ladder above separates sm_mute from sm_gag, and why your report system has to accept voice complaints with no text log to point at.
One more use, and it is the underrated one: filters are excellent loggers. Configure yours to record every match with a timestamp and player identifier even when it does not block. After a month you have a ranked list of who generates the matches, usually four or five names, and it will not surprise you. Baselines differ by game mode as well, since a serious roleplay server and a chaos sandbox disagree about what normal chat sounds like, as the guide to Garry's Mod game modes shows.
A report system that works when no admin is online
Most servers have a report system that reads, in full: message an admin on Discord. This fails structurally. The player who was harassed is the least likely person to join your Discord, find the right channel, describe the incident to a stranger and remember the offender's exact name. So the reports you receive are a biased sample from your most engaged regulars, about incidents involving other regulars, and the real reason new players leave never reaches you.
Fix it by making the report happen inside the game, in one command, with the evidence collected automatically.
What the report should capture without being asked
- Server name, current map and UTC timestamp.
- The reporter's identifier and the accused player's identifier: SteamID64 on Source and GoldSrc games, the license and Discord identifiers on FiveM, the UUID on Minecraft. Names change; identifiers do not.
- The last 20 to 30 lines of chat, so context arrives with the complaint.
- A demo or screenshot. SourceTV records on demand,
sm_recordworks per player, FiveM servers can call a screenshot resource, and on Minecraft a CoreProtect lookup gives a block-by-block history of a grief claim with timestamps.
- A free-text reason field capped at a couple of hundred characters, so people write the incident rather than an essay.
Route all of that to a private Discord channel through a webhook, one message per report, and use threads for follow-up. Three tags are enough: open, actioned, no action. The point is that a moderator waking up eight hours later can read a complete report and act on it. On a busy FiveM roleplay server running 48 slots with a queue, that channel is often busier than live chat.
Retention and response times
Thirty days of chat logs and fourteen days of demos costs almost nothing and means an appeal three weeks later can still be checked. JoinGG polls every listed server hourly and keeps seven days of history, enough to see a pattern but not to reconstruct an argument, so your own logs need to outlive the public data.
Then commit to a response time: every report gets an outcome within 48 hours, including the ones where the outcome is no action. Telling a player "we checked the demo, we did not think it crossed the line, here is the rule" beats silence, because silence reads as the report going nowhere and it is the most common reason people stop reporting. Visible process does the same work at community level that it does on a listing page, which is the argument in what makes a server listing trustworthy. Keep your Discord invite current on your entry in the JoinGG communities directory so the route in is obvious to somebody who has played once.
Trash talk or harassment? The test to apply at 2am
This is the judgment call moderators get wrong in both directions, and they get it wrong because they are asked to assess intent. Intent is unknowable at 02:00 from a chat log. Replace it with three observable questions.
Is it aimed at the game or at a person? "This map is garbage and whoever voted for it should be ashamed" is aimed at the map. "You are garbage" is aimed at a person but is still ordinary competitive noise. "You are garbage, ProGamer_91, and I am going to keep saying it every round" is aimed at one specific person, repeatedly, which is a different thing.
Did it continue after a clear instruction to stop? This is the strongest signal available and the easiest to verify from a log. Almost everybody stops when told. The player who does not stop is telling you what they are doing.
Is it about who they are rather than how they played? Race, sex, religion, disability, nationality and accent are not performance. A player cannot improve at them. Any comment in that category skips the warning rung and starts at the gag, first instance, no discussion.
Two more signals worth checking
Watch for pile-ons. One person being rude is a moderation case; five people joining in against one is a different problem, because the target now has no way to be in the room, and the right action is usually to break up the group rather than punish the loudest participant. Watch for asymmetry too. Two regulars trading insults and laughing are not generating a report. One regular and one first-time visitor, with the insults running one way, is the situation that costs you a player.
Two rules keep this workable. First, do not require the target to prove anything about the offender's intentions; require the offender to stop after one instruction, a standard anybody can meet. Second, a moderator never rules on an argument they are personally in. If you are in it you are a witness, so hand it to somebody else and say so publicly. The guide to TF2 community servers is a good picture of servers that set their tone deliberately rather than by accident.
When the toxic player is your best-known regular
Here is the case that actually breaks servers, and no rule list handles it on its own. The problem player is not a stranger. He has been on the server for three years. He seeds it at 17:00 every day so it fills by 19:00. He donates enough to cover half the monthly bill. Half your admins met him before they met you. And he drives away roughly two new players a week, because his humor stopped being funny to anybody who arrived after 2024.
Do the arithmetic first, because the arithmetic is usually decisive. A server holding around seven concurrent players might see fifteen new faces in a week, of whom four come back. Losing two of those four to one person is half your growth, permanently, and it compounds. Check your own scale against the Counter-Strike player counts, where roughly 10,800 concurrent players spread across 1,588 listed servers, or browse the full server list to see how thin the population gets in the tail. Any server in that tail is one person away from being unpleasant.
How to run the conversation
Do it privately, in voice if you can, and bring specifics. Not "people have been complaining" but "on the 3rd you spent two rounds on the new player who joined as Vex, on the 7th you did it again to somebody else, and neither has connected since". Describe behavior, not character. Nobody can act on "you are toxic"; everybody can act on "stop targeting new players by name". Then say what happens next: the same ladder as everyone else, starting from the same rung.
Do not build a special tier. No shadow rule that senior regulars get three warnings, no quiet agreement that donors are handled by the owner only. Special tiers do not stay secret for a week and they wreck the credibility of every future call. If donations are the awkward part, refund the unused portion and say you have done it, which removes the only argument with any force behind it.
Expect a cost. If it goes to a ban, his friends may leave with him, and you may need to seed the server manually for two or three weeks while the evening schedule rebuilds. Owners who reverse the decision on day four because the 19:00 slot looked empty get the worst of every outcome: the regular now knows the ladder is negotiable, and the new players who noticed the ban already left.
Appeals, unbans and the paperwork nobody wants to do
An appeal route is not generosity. It is the mechanism that catches your own mistakes, and every server makes them: the wrong SteamID copied, a shared household account, a demo that showed something else on second viewing, a moderator having a bad night. Without appeals those mistakes are permanent and invisible.
Start with the ban record, which is the part most servers do badly. Every ban should store the identifier, the reason in one sentence, the rule it maps to, the duration, the issuing moderator, the UTC timestamp and a link to the evidence. SourceBans++ does this for Source games and shares it across every server in your group, LiteBans does it on Minecraft, and txAdmin keeps a per-identifier action history on FiveM. That history matters: a player with four warnings and two kicks over six months is a different case from a first offender even when today's incident is identical.
What a working appeal process looks like
- A form, not a DM. Five fields: identifier, date, which server, what happened in your own words, why you should be unbanned. DMs to individual admins produce inconsistent outcomes and no record.
- Reviewed by somebody who did not issue the ban, not because the issuing admin is untrustworthy but because they already decided once.
- Reduce more often than you reverse. A permanent ban converted to time served, on the condition the player acknowledges the specific behavior, resolves most cases without anybody losing face.
- No public appeals. An appeal in a public channel becomes an audience event, and the outcome starts depending on who is watching.
- A hard no for a short list. Cheating, evasion, threats and anything involving minors are not appealable. Say so in advance so nobody wastes their time.
On evasion, be realistic. IP bans are unreliable because carrier-grade NAT puts thousands of subscribers behind one address and households share connections, so you will ban siblings and roommates. Game identifiers, SteamID64, the FiveM license, the Minecraft UUID, are the primary key, and IP is a weak secondary signal. Accept a leak rate: a determined evader gets back in, and the right response is to ban the new account quickly and quietly rather than build detection aggressive enough to punish legitimate players.
Publishing the ban list is a genuine trade-off. A public list with reasons and durations shows that bans follow the ladder, but it also creates a trophy wall and invites public litigation of individual cases. A reasonable middle is publishing counts and categories monthly, without names.
How do you know the moderation is working?
Moderation has a feedback loop broken by design: success looks like nothing happening. Pick a handful of numbers so you are not judging it by feel.
- Reports per 1,000 player-hours. The absolute number is meaningless; the trend is not. A sharp rise usually means a new group arrived. A sharp fall usually means people stopped bothering.
- Time to first response. Measured from report submitted to a moderator opening it. If the median is over 24 hours, the queue is decorative.
- Share of reports ending in no action. Somewhere between 30 and 50 percent is healthy. Near zero means moderators are rubber-stamping; near 90 percent means the rules are unclear about what is worth reporting.
- Appeal overturn rate. Exactly zero means nobody believes appeals are real. Above roughly 30 percent means your bans are sloppy and you are creating work.
- Return rate for new players. Of the people who connect for the first time this week, how many connect again within seven days? This is the number toxicity actually moves.
Staff coverage against real traffic instead of spreading it evenly. Across everything JoinGG measures, the busiest hour recorded was 242,719 players connected at 18:00 UTC on a Saturday and the quietest was 73,158 at 06:00 UTC on a Wednesday, a spread of more than three to one. Your own curve will be sharper because your player base is regional. Two moderators covering your three busiest hours are worth more than eight on a flat rota, and the network-wide statistics are a reasonable starting shape until you have measured your own.
Audit the ladder itself once a quarter. Export the last hundred actions and look at the distribution across rungs. A healthy server shows many warnings, a fair number of gags and mutes, a handful of temporary bans and very few permanent ones. If permanent bans are more than about one in ten, the ladder is being skipped. If there are almost no warnings, your moderators are quietly banning, and the visible part of moderation, the part players learn from, has disappeared.
Related reading
- Running and joining Counter-Strike 1.6 servers, for how the oldest public communities handle admin culture.
- Stopping DDoS attacks on a small game server, because a banned player with a grudge is a common trigger.
- How to find the best game servers in 2026, written from the player side, which is a useful mirror.
Frequently asked questions
Should I ban someone for swearing on my server?
Almost never. Swearing is background noise in most shooters and it is not what drives players away. What drives players away is being targeted. Ban for direction and persistence, not vocabulary: a player who swears at the map is fine, a player who swears at one named person for twenty minutes after being told to stop is not.
How long should a first ban be?
Seven days for anything short of cheating, doxxing or threats. Three days is long enough to be an inconvenience but short enough that people wait it out and return. Thirty-day bans are the worst of both worlds: the player finds another server inside a week and never comes back, so you paid the cost of a permanent ban without deciding to make one.
Do chat filters actually stop toxicity?
No. A word list stops the exact strings on the list and nothing else, and it cannot see voice chat at all. Filters are worth running for three narrow jobs: blocking a short list of slurs, blocking advertising links to other servers, and blocking phone numbers and addresses. Treat everything else as a human decision.
What evidence do I need before issuing a ban?
For a temporary ban, a chat log excerpt with timestamps and the accused player identifier is enough. For a permanent ban, you want something a second admin can check without trusting you: a demo, a screenshot, a console log or an anti-cheat record. If you cannot attach evidence to the ban record, issue a shorter ban instead.
How do I handle a donor or long-time regular who breaks the rules?
Exactly like everybody else, but talk to them privately first with specific dates and quotes. Refunding the remainder of a donation removes the argument that they bought immunity. The moment your regulars learn that the ladder bends for the people who pay, the ladder is decoration and every future call gets litigated.
How many moderators does a 32-slot server need?
Three to five, weighted to your peak hours rather than spread evenly. One person cannot cover a server that runs sixteen hours a day, and a rota of ten is mostly people who never act. Aim for two moderators who overlap during your busiest three hours and a report queue that catches everything else.
Write the ladder this week, publish it where players can read it in under a minute, and hold your moderators to it for a month before changing anything. Most of the arguments you are having now are disagreements about process, not values, and a table on a page settles those faster than any amount of discussion in Discord.
Then check your numbers instead of guessing at them. JoinGG polls 11,561 listed servers hourly across 147 games and shows what each one is holding, so you can see whether your evening slot fills and how you compare to similar communities. If your server is not listed yet, add your server to JoinGG and start tracking the only metric that tells you whether the moderation worked: whether the people who arrived last week came back this week.
JoinGG tracks live player counts and server availability across 147 games with hourly polling and seven days of history.
handling toxic playersgame server moderationescalation ladderchat filtersban policyserver admin
More
The person who maintains the modpack
A modded server's stability is mostly one person's judgement about versions and timing, and when that person stops, the pack does not break so much as freeze.
SweetMask · · 4 min
Whatever happened to rented official servers
Publishers kept the server software, licensed the renting, took the renting in-house and finally folded hosting into the game, and each step left communities less of the machine.
SweetMask · · 5 min
What the NeoForge split changed for modded servers
The fork looked like a rename in 2023. By Minecraft 1.21.1 it decided which mods and hybrid servers a modded server could run, while installation and Forge itself carried on.
SweetMask · · 4 min