← How Fantasy Joes works

How Flash Mock Draft Makes Every Pick

UpdatedJuly 28, 2026
On this page · 7 sections

Flash Mock Draft builds a whole team from your rankings — twelve seats, half-PPR, against eleven other real Joes' saved rankings. You don't make the picks. Your board supplies the player preferences; the mock also accounts for roster rules, positional depth, and who may still be available at your next pick.

The point isn't watching a draft happen. It's seeing what your board actually builds: where your rankings send you early, where they leave you thin, and every spot the mock passed your highest-ranked player — with the reason attached.

12 teams · Half-PPR
14 rounds · or 18
Snake or third-round reversal
QB×1RB×2WR×3TE×1plus bench depth

The other eleven seats draft from real Joes' saved rankings — not live opponents, and not the house. You supply one board; they supply the other eleven.

How the mock makes one pick

Every pick is the same three moves.

  1. 1

    Clear the board

    It sets aside every player already drafted, then anything that would break the roster rules — a position that's already full, or a pick that would leave you unable to fill a spot you still owe later.

  2. 2

    Take the best left at each spot

    From what remains, it lines up the highest player at each position, straight off your rankings. It never skips a higher-ranked player to grab a lower one at the same position.

  3. 3

    Score each one for this roster

    Each of those candidates gets a single number for how much it helps the team you've actually built. The highest number is the pick.

Your rankings supply the preference signal the whole way. The mock can still decide that the highest-ranked player left helps this particular roster less than someone you ranked below him — and that's the next section.

Why it might pass your highest-ranked player

The player at the top of what's left isn't always the pick. Three things can move it:

Roster fit

A bench player's ranking edge only counts as much as your roster can put to use. The best player left may add less to this team than a lower name who fills a real gap.

Roster rules

A position can already be full, or taking your top name now could leave too few picks to fill a spot you're still required to fill. Those names come off the table.

One turn ahead

It can grab a player who won't last until your next pick, while your higher choice looks likely to still be sitting there when you're back on the clock.

None of these change your rankings. Your board supplies player preference; the team you have already built, the roster rules, positional scarcity, and two-pick planning determine the selection. When your board runs out in the deep rounds, the mock fills from ADP and projections and labels those picks so you can tell. An untouched starter board follows ADP. A finished ranking set, manual edit, or import makes it personal.

A real pick, start to finish

At pick 9.11 in a saved room, the best player left on this Joe's board was RB Kyle Monangai. The mock took TE Dalton Kincaid instead, a few spots lower on the board.

The reason is roster fit. This team still had its starting tight end slot open, and Kincaid filled it. Monangai is a good player, but the roster already had its running backs — he'd have been a fourth RB stuck on the bench. A starter you play every week beats depth you mostly won't, even when the bench player ranks higher.

That's a pick you can argue with, and you should be able to see enough to argue. Here are three real picks from that room with the exact numbers behind each — this one, a closer call where a backup quarterback edged that same running back, and a near-tie between a third tight end and a third quarterback.

These examples come from one saved 18-round mock. The numbers below are taken from its pick receipts.

Kincaid filled an open starting slot, so his full 2414.6 ranking score counted. Monangai was already RB4, so the resolver counted the part of his 550.0 value over replacement that this roster could reasonably use.

TE · Open TE1

Dalton Kincaid

2414.6

Decision value

2414.6 ranking score = 2414.6

An open starting slot uses the player's ranking score directly. It does not receive an automatic bonus over every bench player.

RB · RB4

Kyle Monangai

2103.8

Decision value

1935.8 + (550.0 × 30.5% × 1.00) = 2103.8

Availability need
21.6%
Points at stake
1.000×
Insurance
21.6%
Takeover before depth
34.3%
Depth path
33.2%
Role weight
30.5%

Monangai was the highest player on the raw rankings. Matthew Stafford was the closest legal player after role value at 2164.7. Those are different comparisons.

The four things you can change

Before a mock runs, you can nudge how the whole room drafts. These change draft style only — never your rankings or the roster rules.

SettingWhat turning it up doesDefault
Two-pick planningReaches further down your board now for a stronger two-pick combinationBalanced
Bench coverageCredits more value to bye-week and injury depthBalanced
StacksRewards pairing a quarterback with his own pass-catchersOff
HandcuffsRewards taking the backup to your own starting running backOff

The other eleven seats draft neutral — balanced planning, no stack or handcuff lean — so the room isn't tilted for you or against you. They follow each Joe's saved ranking order, not that Joe's own settings.

What the mock doesn't claim

  • Your ranking score says how much you prefer a player, not how many points he'll score. A higher score just means you'd rather have him.
  • The percentages on a receipt — insurance, takeover, role weight — are how much of a player's ranking edge his role preserves for this roster. A 44% is not a 44% chance he starts or gets hurt. It's a weighting, not a probability.
  • Two-pick planning models the saved opponent boards to guess who comes back. It doesn't claim to predict how a real person drafts in a different room.
  • Stacks and handcuffs are a draft style, not a promise of a better team.
  • A legal roster isn't automatically a good one. The receipt exists so a surprising pick can be checked, not hidden.

How to read a pick receipt

Open any pick and ask three things:

  1. Was your higher-ranked player actually against the roster rules, or did his role on this team just make him worth less here?
  2. Which part of the math opened the gap — his value over the next player at his position, or how much his backup role is worth to this roster?
  3. If two-pick planning changed the pick, did the player it expected to come back actually come back?

The one-line summary answers the first question. Open the pick and the full math answers the rest, next to every alternative the mock weighed.

Your picks and finished team remain available on your account; the detailed pick-by-pick math is kept for 30 days.

The exact math

Everything above is the plain-language version. Here's the arithmetic behind a single bench-player pick, for anyone who wants it. None of it is anything you need to know to run a mock.

Open the full formula

The shared baseline

Your ranking score is the signal — a higher score means you prefer the player more. Raw projected points never replace it.

The mock runs a separate legal baseline draft and records the best-ranked player still available at each position. Where your personal rankings run out, that replacement level is your lowest ranked player at the position, minus 25. The four replacement levels are averaged into one shared baseline:

shared baseline = average(QB replacement, RB replacement,
                          WR replacement, TE replacement)

The shared baseline lets an open starter and a bench player sit in the same value column without handing the bench player a full positional floor. An open starter you've ranked simply uses its score directly:

open starter value = ranking score

This is a soft boundary. A strong bench candidate can still beat an open starter, because both are now measured on the same scale.

Value over replacement

For a bench candidate:

VOR = max(1, ranking score − positional replacement)

VOR is how much of your preference would disappear if you passed the player and later settled for replacement-level depth at his position. Points alone would get this wrong: a quarterback who barely clears the next quarterback can add less roster value than a tight end who sits far above the next usable one. So the mock uses both — VOR carries scarcity on your board, points at stake carries how much weekly scoring the slot exposes.

Availability need

Availability need estimates how often a given depth slot could actually be called on. It's a roster-level heuristic, not a claim about one player's injury odds.

PositionInjury games+ byePer-player miss
QB1.81.020.0%
RB3.21.030.0%
WR2.61.025.7%
TE2.41.024.3%

The per-player input is (1 + injury games) / 14, where the extra game is the bye and 14 is the fantasy regular season. A QB2 needs one miss ahead of him (20%); a QB3 needs both earlier quarterbacks out (20% × 20% = 4%). These are roster-value inputs, not literal injury probabilities.

Points at stake

For each position, the mock averages the season projections of enough players to fill every starting slot, then compares that with RB. The ratio is capped at 0.5×1.8×; if projections are missing, it falls back to fixed positional ratios.

points at stake = clamp(avg projected starter points at position
                        / avg projected RB starter points,
                        0.5, 1.8)

A recent room produced QB 1.47× · RB 1.00× · WR 0.87× · TE 0.70×. That's why a quarterback backup can carry more insurance value than a tight end backup even when the tight end has the higher availability need.

Insurance, supply, and takeover

Insurance is the slice of VOR credited because the roster may need the backup to cover missed games:

insurance = clamp(availability need × points at stake
                  × bench-coverage setting × supply pressure,
                  0, 1)

For a QB2 or TE2, remaining supply also matters. A "startable" option is an undrafted player on your board whose score sits more than 50 above replacement:

supply pressure = clamp(((teams still needing a second + 1)
                         / (startable options left + 1)) × 3,
                        0.7, 1.5)

A backup can also matter because it may get preferred over a current starter or an earlier backup. That starts at:

takeover before depth = min(0.50, 0.50 × candidate VOR / weakest starter VOR)

and then every earlier backup at the position narrows the path:

depth path = availability path to this slot
             × product of min(1, candidate VOR / earlier backup VOR)

takeover = takeover before depth × depth path

The same depth path applies at every position. There's no built-in QB3 or TE3 penalty, and no rule that an RB4 or WR5 has to come first.

Role weight and final value

Insurance and takeover combine without double-counting the same VOR, and the draft-style setting only ever multiplies the value above the baseline:

role weight = insurance + (1 − insurance) × takeover
value added = VOR × role weight × context
bench decision value = shared baseline + value added

Order matters here: because a stack or handcuff multiplies only the value added, it can't turn replacement-level depth into a premium player.

Roster rules

Standard, 14 rounds — start QB 1 / RB 2 / WR 3 / TE 1. Minimums QB 2 / RB 4 / WR 5 / TE 2. Maximums QB 2 / RB 5 / WR 6 / TE 2.

Deeper, 18 rounds — same starters. Minimums QB 2 / RB 5 / WR 5 / TE 2. Maximums QB 3 / RB 7 / WR 8 / TE 3.

A player is illegal when his position is full, when taking him would leave too few picks to hit every minimum, or when using a deep-pool player would starve the other teams' minimums. A maximum is a ceiling, not a target.

When your rankings run out

In the deep rounds the mock extends the room with a pool ordered by ADP and projections, so an 18-round mock can surface a QB3 or TE3 you never ranked. A player from that pool gets a value built from his projection instead of a ranking score, then runs through the same insurance, takeover, and depth math as anyone else. An untouched starter board follows current ADP. A finished ranking set, drag-and-drop edit, or CSV import makes the board personal; untouched and fallback parts remain rooted in ADP until you move them.

Something here not match what you see in the app? The app is the source of truth — and we treat any mismatch on this page as a bug worth fixing.

Try Fantasy Joes →