Why we banned "fortnite" but not "fortnight"

Essay · 2026

Republican states started passing "Parents Bill of Rights" laws, and edtech platforms with content mentioning LGBT, critical race theory, or certain historical topics were getting blocked at the district firewall. We were losing deals over it. Sales wanted a kill switch — let admins turn off the entire global content library and be done with it. I fought that, and we landed on a granular moderation tool instead: admins block content by keyword, teachers can still see what's hidden and request access.

That fight is a whole other story. This one is about a smaller decision that sounds trivial until you sit with it: when an admin types a word into the block list, what exactly are we matching against?

The obvious answer is the wrong one

The intuitive thing is semantic matching. An admin bans "equity" because they mean the DEI sense of it. You'd think the helpful move is to catch the intent — block the concept, not just the string. Match synonyms, related terms, anything close enough.

Here's where that falls apart. "Equity" and "equities" are one letter apart. One is a culture-war flashpoint. The other is a finance term — a perfectly good math and economics resource about stocks. If we're matching on meaning, or matching loosely, we block the finance content too. The admin never asked for that. They didn't even know it happened. And now a teacher trying to pull up a lesson on the stock market hits a wall for reasons nobody can explain.

Same shape, different words: "fortnite" and "fortnight." One's a video game some districts don't want in front of kids. The other means two weeks — it shows up in reading passages, history, half the British novels in the library. Ban the game, catch the timespan. Congratulations, you've hidden Great Expectations because someone was worried about Epic Games.

The trap is that semantic matching feels smarter. It looks like we're doing the admin a favor by being thorough. What we're actually doing is making the tool unpredictable — and an unpredictable moderation tool is worse than a blunt one, because nobody can trust what it did.

So we did exact match only

Type "fortnite," you block "fortnite." Not "fortnight," not "night," not anything semantically adjacent. The word you typed is the word we match. Nothing fuzzy, nothing inferred.

This is a worse tool on paper. An admin who wants to block a concept has to think of every spelling and every related term themselves — "equity," "equities," "equitable," and so on if that's really what they want gone. We pushed that work onto them on purpose. Because the alternative is us guessing at intent and being wrong in ways that quietly break the product for teachers who did nothing wrong.

The whole point of the granular tool was to give admins control without torching teacher value. Semantic matching would have handed that value right back out the window through the side door — over-blocking legitimate content the admin never targeted, with no visible reason and no easy way to notice. Exact match keeps the blast radius exactly as wide as the admin drew it. If something gets blocked, it got blocked because someone typed that literal word. That's a decision you can stand behind and explain.

The adversarial half

Exact matching created a second problem, and it's the reason I couldn't just show teachers what was blocked and call it a day.

When a teacher hits a blocked resource, the humane thing is to tell them why — "this was hidden because it contains the word X, contact your administrator." But we couldn't. If we exposed the exact keyword, we'd be handing motivated users the workaround for free. Ban "fortnite," and now anyone who sees the reason just writes "Fort-nite" or "F0rtnite" or swaps in a synonym and sails through. We'd have built a filter and then printed instructions for bypassing it on the error page.

So on the blocked page we pointed teachers to their administrator, but we deliberately didn't reveal the matched keyword. It's a little cold, and I didn't love it. But moderation only works if you assume some fraction of users are actively trying to route around it. You have to think adversarially even when most of your users are teachers acting in good faith, because the tool has to hold against the ones who aren't.

What I'd take from it

Two things stuck with me.

First: when you're deciding how a system matches, "smarter" and "more predictable" are usually in tension, and for a moderation tool predictable wins. The admin needs to be able to reason about what their block list will and won't catch. Exact match is dumber and far more legible. Legible beat clever here.

Second: the equities trap is the whole argument in one word. A single letter is the difference between doing what the admin asked and silently breaking a finance lesson. When the cost of over-reach lands on people who never touched the control — teachers, in this case — you design for the narrowest, most literal interpretation and make the human do the rest of the work explicitly. Better to under-block and stay explainable than over-block and become a mystery.

This decision comes from the Wayground content moderation work.