All guides
Trust·6 min read·

Is your fantasy draft order actually random?

The phrase "unbiased random draft order" is on every randomizer's homepage. Almost none of them can prove it. Here's how to tell.

Every fantasy draft randomizer on the internet says the same thing on its homepage: "unbiased," "random," "fair." Almost none of them give you any way to actually check. Here's the short version of what fairness in a draft randomizer means — and the four tests your tool either passes or fails.

Test 1: Is the algorithm public?

If the randomizer is closed-source, the only thing you have is the company's word. That's not random — that's reputation. The minimum bar for a verifiable random draft order is that the shuffling code is published somewhere you can read it.

Fantasy Draft Order's randomizer lives at src/lib/randomizer.ts on GitHub. It's a Fisher–Yates shuffle, the textbook algorithm for unbiased permutations. Every draft on the site links directly to the exact commit that produced it.

Test 2: Where does the randomness come from?

Math.random() is not random enough for a draft order. It's a fast PRNG seeded by the browser, and its output can be predicted given enough samples. For a draft order — where you only need a few values per draw — the practical risk is low, but the optics are bad: you can't claim cryptographic randomness when you're using a function designed for animations.

Fantasy Draft Order uses Node's crypto.randomInt — a CSPRNG (cryptographically secure pseudo-random number generator). The seed is recorded with each draft so you can reproduce the result.

Test 3: Can the commissioner re-roll?

This is the one most people miss. Even a perfectly random algorithm gives the commissioner a perfectly fair draft order — and the commissioner can then click randomize again. And again. Until the result is one they like. From the league's perspective, this is identical to manual order picking; the algorithm doesn't matter once a re-roll is possible.

A trustworthy randomizer needs to either (a) seal the result before anyone sees it, or (b) make the result impossible to discard. Fantasy Draft Order does both. Once a draft is scheduled, teams and time are immutable — there are literally no edit endpoints in the API. The draw fires server-side at the scheduled time and the result is permanent.

Test 4: Is there a permanent record?

After the draft, can your league still verify what happened a year from now? Most randomizers produce a screenshot — at best, an emailed list. Fantasy Draft Order produces a permanent URL with the seed, the timestamps, the source-code commit, and every pick's reveal time stored server-side.

If your current draft randomizer can't pass all four tests, you're trusting a person, not a process. That's a fine choice for a casual league. But for any league with money, keepers, or strong opinions, the process should be the thing you trust — not the person who runs it.

What about RotoWire, FantasyPros, or the in-platform randomizer?

RotoWire and FantasyPros are reputable companies, but their draft order tools are closed-source and run in your browser. The result has no audit trail and the commissioner can re-run them silently. Sleeper, ESPN, Yahoo, and MFL all have built-in randomize buttons; they're convenient, but only the commissioner sees them fire and the league has no way to verify the result.

Fantasy Draft Order solves the verifiability problem specifically. It's not better than these tools at being a fantasy platform — they're better at that. It's better at being the moment of truth before the platform draft starts.

Ready to schedule a fair draft order?

Free, open source, no accounts. Under a minute to set up.

Create a draft

FAQ

Related questions