AltShield is a free Discord verification and anti-alt bot: it checks new members against rules you design, catches alt accounts, blocks VPNs and locks regions. Everything you need to know about verifying on a server that uses AltShield, and about setting it up if you run one.
AltShield never sends verification links by DM. When you join a server that set up a verification channel, you'll normally get a private thread there (visible only to you and staff) with a personal verification link. Either way, you can always get a fresh link yourself by running /verify in the server, or by clicking a "Verify" button on a pinned panel message if the server has one set up. To prevent spam, there's a 3-minute cooldown between requesting your own link this way - if you hit it, just wait a moment and try again. Staff can always generate you a link with /sendverify regardless of this cooldown.
Opening your link shows the "Requirements" the server has configured. Depending on the server, this can include:
Only the platforms the server's rules actually need are shown - if a server accepts more than one way to pass (for example "Steam OR Twitch"), you may not need to connect everything listed. A "Current status" section on the page shows which accounts are connected so far - it deliberately doesn't reveal whether that's actually enough to pass, so there's nothing to game. The submit button unlocks once there's nothing left you could still connect to change the outcome either way; verification happens automatically the moment that's true, so you rarely need to click it yourself.
Some servers also turn on a quick CAPTCHA as a basic anti-bot check right before the submit button. It's unrelated to the requirements above - solving it doesn't replace them, it just has to be done in addition before you can submit.
After submitting, you'll land in one of these states:
/verify again for a fresh one.A server's requirements are built from individual checks combined with logic groups. Understanding the groups helps make sense of what a "Current status" list is asking for:
N of the checks/groups inside have to pass (e.g. "at least 2 of: Steam connected, Twitch connected, owns 5+ Steam games").These can be nested arbitrarily, so a server might require something like "Discord account 7+ days old AND (Steam account 1+ year old OR owns a specific game)".
Checks a server can use:
| Check | What it means |
|---|---|
| Discord account age | Your Discord account must be at least a minimum age. Checked automatically, nothing to connect. |
| Discord avatar | Your Discord account must have its own avatar (not the default one). Checked automatically, nothing to connect. |
| Discord email is verified (needs Discord login) | Discord reports the email on the member's account as verified. The member signs in with Discord once on the verification page; AltShield reads only that yes/no flag, never the address itself. |
| Discord 2FA is enabled (needs Discord login) | The member's Discord account has two-factor authentication turned on. Needs the Discord sign-in; only the yes/no flag is read. |
Account age and avatar are checked automatically with no sign-in. The email and 2FA checks need the member to sign in with Discord, and it has to be the account the link was made for. Discord does not share phone-verification status with any app, so there is no check for it. See the Privacy Policy.
| Check | What it means |
|---|---|
| Google account connected | Just requires signing in with Google, no other condition. |
| Google account has a verified email | Google already reports the email address on the connected account as verified. Nothing is sent to anyone's inbox and nobody has to click a link - AltShield only reads that yes/no flag, never the address itself. |
AltShield keeps only a one-way hash of your Google account ID (to stop the same account verifying more than one Discord account) - see the Privacy Policy for details.
| Check | What it means |
|---|---|
| Steam account connected | Just requires signing in with Steam, no other condition. |
| Steam account age | Your Steam account must be at least a minimum age. |
| Owns Steam game | You must own a specific game on Steam. |
| Minimum Steam games owned | You must own at least a minimum number of Steam games. |
| Min. hours played in a game | You must have at least a minimum number of hours played in a specific Steam game. |
| Min. total Steam hours played | Your total playtime across all your Steam games must meet a minimum. |
| Minimum Steam level | Your Steam level (from Steam Community XP/badges) must be at least a minimum. |
| No VAC ban | You must not have a VAC ban on your Steam account. |
| No Community ban | You must not have a Steam Community ban on your account. |
| No trade ban | You must not have a trade ban (or be on trade probation) on your Steam account. |
| No game ban | You must not have a game ban on your Steam account - a ban issued by a specific game's own anti-cheat or moderation (unlike VAC above, which is Valve's own system). Steam only reports this account-wide, as "has at least one game ban somewhere" - it never says which game, so this can't be limited to one specific title. |
A couple of these depend on your Steam privacy settings: if your "Game details" privacy is set to private, AltShield can't see your owned games or playtime at all, which looks identical to owning nothing. If a check involving games/playtime keeps failing unexpectedly, try setting Steam → Edit Profile → Privacy Settings → "Game details" to Public and verifying again. The verification page always tells you when this might be the cause. Your Steam level and ban status, on the other hand, are always public - they aren't affected by any privacy setting.
| Check | What it means |
|---|---|
| Twitch account connected | Just requires signing in with Twitch, no other condition. |
| Twitch account age | Your Twitch account must be at least a minimum age. |
| Subscribed to your Twitch channel | You must be an active subscriber of the server's connected Twitch channel. |
| Not banned on your Twitch channel | You must not be banned/timed out on the server's connected Twitch channel. |
The two Twitch-channel checks ("Subscribed to..." / "Not banned on...") only work on servers where the server owner has connected their Twitch channel in the dashboard - if they haven't, those checks simply won't pass for anyone, with a message explaining why.
| Check | What it means |
|---|---|
| Roblox account connected | Just requires signing in with Roblox, no other condition. |
| Roblox account age | Your Roblox account must be at least a minimum age. |
| Not banned on Roblox | You must not be currently banned/terminated on Roblox. |
| Minimum Roblox friends | You must have at least a minimum number of Roblox friends. |
| Has the Roblox Verified Badge | Your Roblox account must have Roblox's own Verified Badge. |
The friends-count check depends on your Roblox privacy settings: if your friends list isn't set to public, AltShield can't see it, which can make this check fail even though you're connected. If it keeps failing unexpectedly, try Roblox → Settings → Privacy → "Who can see my friends list" → Everyone, then verify again. The verification page always tells you when this might be the cause.
| Check | What it means |
|---|---|
| Blizzard (Battle.net) account connected | Just requires signing in with Battle.net, no other condition. |
| Minimum WoW character level | The highest-level character across your World of Warcraft accounts must be at least a minimum. |
Battle.net accounts don't expose an account-creation date or any general ban status to third-party apps like AltShield - only World of Warcraft character data is available, so these are the only two checks Blizzard's API supports. Unlike every other platform here, nothing about your Blizzard account is stored: your character level is checked live each time it's needed, and only a one-way hash of your account ID is ever kept (used solely to stop the same account verifying more than one Discord account) - see the Privacy Policy for details.
| Check | What it means |
|---|---|
| Epic Games account connected | Just requires signing in with Epic Games, no other condition. |
Epic's sign-in only gives AltShield your account ID, kept as a one-way hash for alt-account detection - so there are no account-age, ban or game-library checks for Epic. See the Privacy Policy for details.
Prefer typing to clicking? In the rule builder, switch from Tree to Code and write your rule as a small script. Nothing is run: AltShield only turns the text into the same rule the visual editor builds.
if (captcha && (discord.accountAge >= 14 || google.connected && google.emailVerified))
verify
else
block
| Code | Meaning |
|---|---|
discord.accountAge >= 7 discord.hasAvatar | Discord account age in days, and whether the profile has its own avatar |
discord.emailVerified discord.mfaEnabled | The Discord email is verified / 2FA is on (the member has to sign in with Discord) |
captcha | The captcha was solved |
google.connected google.emailVerified | A Google account is connected, and its email is verified |
steam.level >= 10 steam.ownsGame(730) steam.playtime >= 100 steam.vacBanned | Steam account age, level, number of games, playtime, owning a game, and VAC, community, trade and game bans |
twitch.subscribed twitch.followsChannel | Twitch account age, follows, subscription and ban status on your channel |
roblox.friends >= 5 roblox.verifiedBadge | Roblox account age, friend count, verified badge and ban status |
blizzard.wowLevel >= 10 epic.connected | A connected Battle.net account (with World of Warcraft level) or Epic Games account |
These extra layers work on their own, whichever platforms a server requires. Admins switch them on in the dashboard.
See the Privacy Policy for exactly what is and isn't kept.
/setup in your server, or open the server from the dashboard directly./verify, or by clicking a persistent panel posted with /verifypanel. AltShield never delivers links by DM.| Command | Who | What it does |
|---|---|---|
/help | Anyone | Shows what AltShield does, the commands and a link to the dashboard. |
/verify | Anyone | Get your own verification link. |
/my-data | Anyone | See the data AltShield has stored about you, as a private file only you can see. |
/forget-me | Anyone | Erase your data stored by AltShield across every server (asks for confirmation first). Kept logs only show an anonymous ID afterwards. |
/setup | Manage Server | Link to this server's dashboard. |
/status | Manage Server | Checks that the server is ready and lists any missing permissions or setup steps. |
/verifypanel | Manage Server | Posts a persistent "Verify" button in the current channel. |
/sendverify user:@someone | Manage Server | Generate a fresh verification link for one member (posts a private thread if configured; never sent by DM). |
/forceverify user:@someone | Manage Server | Instantly mark a member as verified, bypassing this server's requirements. |
/antiraid action:on|off|extend | Manage Server | Starts, ends or extends anti-raid mode (stricter verification during a wave of joins). |
| Plan | Includes |
|---|---|
| Free | The full rule engine - all checks and logic groups above, unlimited. |
| Plus | Everything in Free, plus the alt account map, custom welcome/success/failure message text and verification title, verification analytics (funnel + top failure reasons), custom branding (your own logo/colors on the verification page, and the bot's own name, avatar and embed color in your server), and no ads on the verification page. |
Plus is billed through Stripe - click Get AltShield Server Plus below, sign in with Discord, pick your server, and pay securely on Stripe's own page. Manage or cancel anytime from your server's dashboard.
AltShield only ever uses the official OAuth login flow for Discord/Steam/Twitch/Roblox/Battle.net/Epic Games/Google/Riot Games - it never sees or asks for your password on any platform. What gets stored per verification session is limited to what the configured checks actually need: your Discord account age/ID, and, only if you connected them, your Steam ID / account age / owned games list (or playtime), your Twitch ID / account age, your Roblox ID / account age / ban status / friend count / Verified Badge status, and your Riot ID/PUUID / League of Legends summoner level / solo-duo rank / match count. Battle.net, Epic Games and Google are the exceptions: nothing about your Blizzard, Epic Games or Google account is ever stored, not even temporarily - only a one-way keyed hash of your account ID is kept, purely to detect the same account verifying more than one Discord account.
If a server has alt-account detection enabled, your Steam ID, Twitch ID, Roblox ID, and/or Riot PUUID (or, for Battle.net, Epic Games and Google, the one-way hash described above, not your Discord messages or any other activity) may be compared against other verification attempts to catch the same real-world account being used to create multiple Discord accounts - either within that one server, or across every server using the same bot, depending on how that server configured it. On servers with the Plus plan, the alt account map may also show, anonymously, that an identity was used by further accounts on other servers (no account, name or server is revealed).
Full legal details: Terms of Service and Privacy Policy.