The league ID sits in the league's URL on Sleeper, and pasting the whole URL works too. A username works as well: we will list that account's leagues so you can pick one. No account and no signup. Our server reads the league to answer you, holds it for an hour so the next person costs the league platform nothing, and keeps no copy after that.
Pick a league
Example league · invented managers, real faces
What a read looks like
Round one, by position
Biggest reaches
Biggest steals
The room
Field guide
What this reads, what it can prove, and what it cannot
Why a league's own history beats a general draft guide
Every draft guide in the world tells you the same thing, because it is written for everybody. It cannot know that the person three seats to your left has taken a quarterback in the first four rounds of every draft since 2023, or that the commissioner has never once left round one without a running back. Those two facts are worth more to you on draft night than any tier sheet, because they are the only two facts nobody else in your league has bothered to look up. They are also sitting in plain sight: a Sleeper league keeps its completed drafts, and a completed draft is a list of who took whom and when.
Read the rest
Read the rest
This page reads that list. It does not guess, it does not model, and it does not know anything about your league that your league did not already publish. What it adds is arithmetic and patience: it walks back through as many past seasons as the league still links to, folds every draft together, and prints four things per manager that are tedious to work out by hand.
The four figures, and how each one is worked out
Earliest round per position. The lowest round number in which that manager has ever taken a quarterback, a tight end, a kicker and a defense, across every draft read. It is a minimum, not an average, on purpose: what you want to know before a draft is the earliest the run can start, not where it usually lands. A position a manager has never taken shows nothing at all rather than a zero.
Round-one running backs. How many of that manager's drafts opened with a running back, out of how many of their drafts we could read. The denominator is printed beside the number every time, because "two of two" and "two of six" are different facts and a bare percentage hides which one you are looking at.
Average reach. How far a manager's picks sit from the market, in picks. A reach means they took a player earlier than the market had him; a wait means they let him fall to them. This needs a market to measure against, and here honesty costs something. For the season now being drafted we have one, the ADP board this site already publishes, and the figure is the average of the market rank minus the pick number. For a season two or three years gone, no honest ADP board exists any more, so the market becomes the league's own other drafts: a player's board position is the average overall pick he went at in the other drafts we read, and a player who appears in only one of them is left out of the figure entirely rather than guessed at. The page always says which of the two markets it used. Where a league has only one draft on file and no current ADP to match it against, there is no honest reach figure at all, and none is printed.
The sentence. One line per manager, in a fixed order so two managers are always comparable: when they take a quarterback, whether they open with a running back, and how late the kicker goes. It is generated from the three figures above and nothing else.
Practising against the room
The button under the table opens the Mock Draft Trainer with a room profile attached to the URL. The profile is small and it is written down: for each seat and each position, a weight equal to the room's median earliest round for that position divided by that seat's own earliest round, held between 0.5 and 2. A seat that takes quarterbacks in round two while the room's median is round five gets a weight of 2 and will chase one early; a seat that waits until round nine gets 0.56 and will let them go. A position a seat has never taken carries no weight at all, so the draft engine decides it exactly as it would in a room with no profile.
The weight multiplies the engine's existing pick model once, after every other rule has had its say, which is deliberate: it nudges a room, it cannot drive one, and it cannot overturn a rule. The engine refuses to take a kicker in the early rounds of a practice draft, and a weight of 2 on kickers does not change that, because zero times anything is still zero. Open the trainer without a profile and the room drafts exactly as it always has.
Where the drafts come from, and what happens to them
Your browser never talks to Sleeper on this page. It asks MustDraft, and MustDraft asks Sleeper. There are exactly two requests, both to this domain:
/api/v1/league-user/sleeper/{username}, only if you typed a username, to list that account's leagues so you can pick the one you meant/api/v1/league/sleeper/{leagueId}/draft-history, for the drafts themselves
Behind that second one, our server walks the league back through its own previous seasons, up to five of them, and reads these documented, public, read-only Sleeper endpoints. They are the same ones any Sleeper member can already see, and there are no others:
/v1/user/{username}and/v1/user/{userId}/leagues/nfl/{season}, for the username lookup above/v1/league/{leagueId}, for the league's season, size and the link back to last year/v1/league/{leagueId}/users, for the display names in the table/v1/league/{leagueId}/rosters, to know which manager owns which roster/v1/league/{leagueId}/drafts, to find the completed draft for that season/v1/draft/{draftId}/picks, for the picks themselves
That list is enforced where you cannot edit it and neither can we by accident: it is a pattern set on our server, checked against every request before the request is made, and it refuses Sleeper's stats and projections endpoints by name. Reading anything outside it would take an owner decision, not a code change. No password, no session cookie, no private endpoint, and nothing that needs you to log in to anything, here or there.
Your league's draft history is read by our server, held there briefly, and never stored. "Briefly" is about an hour, in memory, which is what stops a popular league costing Sleeper one request per person who looks at it — the second visitor inside that hour costs them nothing at all. Nothing is written to a database, there is no row with your league in it and no account to delete, and an hour later the copy is simply gone. We also keep the result in your own browser tab for as long as the tab is open, so going back to a league does not fetch it again; closing the tab clears that. Manager pictures are not fetched at all — the circles in the table are initials, drawn here.
What it cannot tell you
A league that has only ever run one draft gives you one draft's worth of evidence, which is to say a habit that might be a coincidence. Two seasons is where the figures start to mean something and five is better. A manager who joined the league last year has one row of history and the table says so, in the count of drafts read beside their name.
Auto-drafted picks look exactly like deliberate ones here, because Sleeper does not distinguish them on the pick, so a manager who fell asleep in round eleven reads as a manager who wanted a third tight end. Keeper and dynasty leagues distort the earliest-round figures too: a kept player occupies a round without anyone having chosen a position in it that year. And a league that changed size, scoring or roster shape between seasons is being compared against itself under different rules, which the arithmetic cannot see.
Finally, this is a tendency, not a prediction. People change, leagues change, and a manager who took four quarterbacks early in a row may have spent the off-season reading about why that was a bad idea. Use it the way you would use anything else about a draft: as one more thing you know that the rest of the room does not.