Public vs Private MTG Leagues: How Privacy Actually Works in Nerd Leagues
Nerd Leagues doesn't have a public/private toggle. There's no checkbox in League Settings, no privacy dropdown when you create a league. Privacy on Nerd Leagues is layered — the login wall keeps anonymous visitors out, the invite code controls who can join, and the Allow any member to invite players toggle decides who else can spread the link. Configure those three things and your league lands wherever you want it on the public-private spectrum.
Here's the full picture, including the bits that look like privacy controls but aren't.
Where MTG league privacy actually lives in Nerd Leagues
MTG league privacy on Nerd Leagues comes from three layers, none of them a single switch:
- The login wall. League pages require a Nerd Leagues account. Anonymous visitors get bounced to login.
- The invite code. The only practical way to join a league. Auto-generated, non-guessable, editable by the commissioner.
- The open invites toggle. Decides whether regular members can send in-app invites or only the commissioner can.
You'll see a private column referenced in older docs and the schema. In current code it only flips a noindex meta tag, and there's no UI to set it — so it's effectively dormant. Don't plan around it.
The invite code: your real lock and key
The invite code is the gate to your MTG league. When you create a league, Nerd Leagues auto-generates a code that pairs an iconic Magic card with a four-digit suffix — something like lightning-bolt-4729 or sol-ring-1156. The format is memorable enough to read out over voice chat, but with a card pool in the hundreds and 9,000 possible suffixes per card, it's not something a stranger can guess.
The code lives in two places:
- The shareable join URL: /join_league/<code>. Anyone you send it to can click, log in, and land in your league.
- The Invite Code field in Manage League → League Settings. The commissioner can rewrite it to anything URL-safe, or clear the field and save to roll a fresh card-based code.
A few things worth knowing:
- The code is the only way to join. There's no "request to join" button on a league page, no member directory to apply through.
- There's no usage log. Nerd Leagues doesn't track who saw the code or when. If you suspect it's leaked, regenerate it and pass the new one to your members.
- Joining still requires an account. The /join_league route is login-gated, so a leaked code can't be used by a totally anonymous web crawler — but any logged-in Nerd Leagues user with the link can join.
The login wall: what anonymous visitors see
Anonymous visitors to an MTG league page on Nerd Leagues see the login screen, not the league. Every /leagues/<id> route is wrapped in @login_required, so a Google crawler hitting your league URL gets redirected before any league data renders. That's the strongest privacy boundary on the site, and it applies whether you treat your league as public or private.
The flip side: search engines can't index league pages either, and Discord/Twitter/iMessage link unfurls won't render a preview card for a league URL. If you've ever pasted a league link in a chat and wondered why it shows up bare, that's why. The login wall blocks the unfurl bot just like it blocks the visitor.
No public league directory
There's no public MTG league directory on Nerd Leagues. There's no /leagues index, no "browse leagues" page, no aggregator. League pages are reachable only by direct URL — meaning by direct league ID. League IDs are sequential integers (/leagues/1, /leagues/2, and so on), which means a logged-in user could in theory walk the IDs to find leagues. They wouldn't see private data they couldn't see anyway, but it's worth knowing the URLs aren't a secret.
The open invites toggle: a friction layer, not a wall
The Allow any member to invite players toggle in Manage League → League Settings controls one thing: whether non-commissioner members can use the in-app Invite Friend button. With it on (the default), any member can fire off an in-app invite. With it off, only the commissioner can.
It's a friction layer, not a hard lock. The shareable invite-code URL still works regardless of this setting — anyone with the URL and an account can join. Use the toggle to slow casual link-sharing among members; don't rely on it as a privacy control.
Configuring an MTG league to lean public
If you want a public-leaning league — a community pod, a store league, anything where the goal is wider participation — configure these:
- Pick a memorable invite code in Manage League → League Settings. The auto-generated card-based code is good for sharing, but if you'd rather use your store's name or your group's tag (thursday-night-fnm), just type it in.
- Leave Allow any member to invite players on so members can pull in friends.
- Drop the invite link in your Discord, your store's group chat, wherever the audience lives.
Configuring an MTG league to lean private
For a private-leaning MTG league — a personal pod, a vetted cEDH circle — the invite code is doing most of the work, and you want to make sure it stays where it belongs:
- Keep the auto-generated card-based code, or set your own non-obvious one. Don't use your league name as the invite code if your league name is public.
- Turn Allow any member to invite players off so only you can issue invites.
- If you suspect the code has spread further than you want, clear the Invite Code field and save — Nerd Leagues will regenerate a fresh card-based code. Pass the new one to your existing members.
That's it. There's no per-league hide-from-search button, no member-only standings tab, no anonymized profile mode. The login wall plus a tightly-held invite code is the whole game.
Where to go next
- How to Create an MTG League — what happens when you create one, including how the initial invite code is generated.
- The Commissioner Role: What It Can Do — the full set of privacy-adjacent levers the commissioner has.
- Running a Commander Pod League with Friends — the private-leaning use case in practice.
- Running a cEDH League — the vetted-invite, deck-first variant.