AltShield AltShield
Documentation

Documentation

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.

For members - how verification works

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:

Verification rules explained

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:

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:

Discord checks
CheckWhat it means
Discord account ageYour Discord account must be at least a minimum age. Checked automatically, nothing to connect.
Discord avatarYour 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.

Google checks
CheckWhat it means
Google account connectedJust requires signing in with Google, no other condition.
Google account has a verified emailGoogle 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.

Steam checks
CheckWhat it means
Steam account connectedJust requires signing in with Steam, no other condition.
Steam account ageYour Steam account must be at least a minimum age.
Owns Steam gameYou must own a specific game on Steam.
Minimum Steam games ownedYou must own at least a minimum number of Steam games.
Min. hours played in a gameYou must have at least a minimum number of hours played in a specific Steam game.
Min. total Steam hours playedYour total playtime across all your Steam games must meet a minimum.
Minimum Steam levelYour Steam level (from Steam Community XP/badges) must be at least a minimum.
No VAC banYou must not have a VAC ban on your Steam account.
No Community banYou must not have a Steam Community ban on your account.
No trade banYou must not have a trade ban (or be on trade probation) on your Steam account.
No game banYou 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.

Twitch checks
CheckWhat it means
Twitch account connectedJust requires signing in with Twitch, no other condition.
Twitch account ageYour Twitch account must be at least a minimum age.
Subscribed to your Twitch channelYou must be an active subscriber of the server's connected Twitch channel.
Not banned on your Twitch channelYou 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.

Roblox checks
CheckWhat it means
Roblox account connectedJust requires signing in with Roblox, no other condition.
Roblox account ageYour Roblox account must be at least a minimum age.
Not banned on RobloxYou must not be currently banned/terminated on Roblox.
Minimum Roblox friendsYou must have at least a minimum number of Roblox friends.
Has the Roblox Verified BadgeYour 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.

Blizzard (Battle.net) checks
CheckWhat it means
Blizzard (Battle.net) account connectedJust requires signing in with Battle.net, no other condition.
Minimum WoW character levelThe 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.

Epic Games checks
CheckWhat it means
Epic Games account connectedJust 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.

Code editor for rules

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.

Example

if (captcha && (discord.accountAge >= 14 || google.connected && google.emailVerified))
  verify
else
  block

How it reads

Available checks

CodeMeaning
discord.accountAge >= 7 discord.hasAvatarDiscord account age in days, and whether the profile has its own avatar
discord.emailVerified discord.mfaEnabledThe Discord email is verified / 2FA is on (the member has to sign in with Discord)
captchaThe captcha was solved
google.connected google.emailVerifiedA Google account is connected, and its email is verified
steam.level >= 10 steam.ownsGame(730) steam.playtime >= 100 steam.vacBannedSteam account age, level, number of games, playtime, owning a game, and VAC, community, trade and game bans
twitch.subscribed twitch.followsChannelTwitch account age, follows, subscription and ban status on your channel
roblox.friends >= 5 roblox.verifiedBadgeRoblox account age, friend count, verified badge and ban status
blizzard.wowLevel >= 10 epic.connectedA connected Battle.net account (with World of Warcraft level) or Epic Games account

Good to know

Protection beyond platform accounts

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.

For server admins - setting up AltShield

  1. Invite the bot to your server (link available from the Dashboard once you log in with Discord).
  2. Run /setup in your server, or open the server from the dashboard directly.
  3. In the dashboard, configure:
    • Roles & channels - which role to grant on success, an optional role to give unverified members while they wait, a fallback channel for the verification thread, and a log channel for results. If you don't pick a verified role, nobody receives a role when they verify - pick one here, or let the setup wizard create it for you.
    • Verification requirements - the rule builder described above, plus an optional CAPTCHA toggle that adds a basic anti-bot check before the submit button.
    • Smart verification - Instead of building rules yourself, let AltShield adjust itself and evaluate each account.
    • Twitch channel connection - only needed if you want the subscriber/ban checks; a one-time Twitch login for your own channel, separate from the login members do. Until a channel is connected, those checks are skipped (members pass without them) and the log channel gets a warning.
    • Alt-account detection - links a verified Steam/Twitch/Roblox account (or, for Battle.net, Epic Games and Google, a one-way hash of the account ID) to the first Discord account that used it, so a second Discord account reusing the same account can be blocked, flagged, held for manual review, kicked, or banned from the server.
    • Anti-raid mode - Watches for a sudden wave of joins and, while it lasts, asks newcomers for more (older account, CAPTCHA, an extra connected account) and alerts your log channel. Free, switched on automatically with Smart verification (otherwise off until you enable it), and staff can use /antiraid on, off or extend.
    • Protection - Anti-VPN, device fingerprinting and region lock - see the Protection section above.
    • Alt Account Map (Plus) - a visual map of which Discord accounts on your server share an identity or a device: each shared identity is a hexagon ("same Steam ID", "same device"...), each account a card with its status (verified, blocked, kicked, banned, flagged or sent to review). Accounts on other servers that reused one of those identities also appear, anonymously, as an "another server" node: no account, name or server is shown, only that the identity was used there.
    • Setup wizard - a short set of questions about your community (speed or protection, account age, avatar, alternatives for younger accounts, alts) that builds your verification rules - or a ready-made preset - which you can then tune freely in the rule builder.
    • Messages and Branding - customize the wording and (on Plus) the look of the verification page and of the bot itself.
  4. New members can get a private verification thread automatically on join (if enabled and a verification channel is set), and can always request their own link with /verify, or by clicking a persistent panel posted with /verifypanel. AltShield never delivers links by DM.

Slash commands

CommandWhoWhat it does
/helpAnyoneShows what AltShield does, the commands and a link to the dashboard.
/verifyAnyoneGet your own verification link.
/my-dataAnyoneSee the data AltShield has stored about you, as a private file only you can see.
/forget-meAnyoneErase your data stored by AltShield across every server (asks for confirmation first). Kept logs only show an anonymous ID afterwards.
/setupManage ServerLink to this server's dashboard.
/statusManage ServerChecks that the server is ready and lists any missing permissions or setup steps.
/verifypanelManage ServerPosts a persistent "Verify" button in the current channel.
/sendverify user:@someoneManage ServerGenerate a fresh verification link for one member (posts a private thread if configured; never sent by DM).
/forceverify user:@someoneManage ServerInstantly mark a member as verified, bypassing this server's requirements.
/antiraid action:on|off|extendManage ServerStarts, ends or extends anti-raid mode (stricter verification during a wave of joins).

Plans

PlanIncludes
FreeThe full rule engine - all checks and logic groups above, unlimited.
PlusEverything 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.

Get AltShield Server Plus

Privacy & data

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.