Every tool on the site, in the order you actually touch it, ending with a CSV that uploads to DraftKings. If you read one section, read Which "Rank by" to use.
Start here: there is really only one builder.
⚡ Lineup Builder handles every sport — MLB, PGA, MMA, NASCAR, WNBA, LoL — classic and showdown, on one page. Everything else in the menu is either a board (research, no lineups) or a shortcut into that same builder. If you are not sure where to go, go there.
courtedge.net/lineup-builder — every sport, classic and showdown
Tonight's slate is already loaded when you open the page. The buttons across the top switch between slates when more than one is live (main, turbo, showdown, early). You only need + Upload CSV if you want to build off your own projections or a slate we do not carry — drop in a DraftKings salary export or a projection file with ownership and it parses either. The import report underneath tells you exactly how many rows came in, how many were dropped as OUT/IL, and whether anything is missing a salary or an ID.
The DK contest dropdown lists every contest we have loaded for that sport with its real payout ladder, read rung by rung off the DraftKings payout tab. Pick the one you are actually entering.
Selecting it sets, in one click: field size, entry fee, first prize, cash %, max entries per user, the full payout ladder, the build style, and the ranking metric. Everything downstream — ROI, win %, which lineups get chosen — is priced against that contest instead of a generic tournament shape.
Not in the list? Hit ✏️ Type in a contest myself and enter field size, entry fee and max entries. Then paste the contest's Payouts tab into the Exact payout ladder box and press Use these payouts. Each row needs a place and a prize — 1st $50,000 or 500 - 1175 $30. With the real ladder the ROI is exact rather than modeled off first prize and cash rate. Saved custom contests stay in your dropdown.
The four buttons — 💵 Cash🎯 Single-Entry🎟️ 20-Max🚀 150-Max — set variance, ownership fade, exposure caps and stack rules as a group. Picking a contest in Step 2 already selects the right one. Only override it if you are deliberately playing a contest differently than its structure suggests.
Lineups to build is the depth of the pool we simulate, not the number you enter. Build deep and enter your best: 500 built for a 150-max is normal, 150 built for a 150-max is not. The line underneath tells you what DraftKings will let you enter and how many the export will contain.
Skipping all of this is fine. The defaults come from the contest's own ladder.
The engine generates a deep candidate pool, runs a correlated Monte-Carlo simulation on every lineup (stacks boom and bust together, the way real baseball does), prices each result against the contest's actual payout ladder, applies your exposure caps, and returns them ranked. It takes 30–60 seconds and tells you which of the four stages it is in.
Each lineup card shows expected ROI, chance to cash, chance to win, top-1% rate and expected duplicates. Change Rank by to re-sort instantly — no rebuild needed.
Export writes a DraftKings-format CSV containing the best N lineups where N is what this contest actually lets you enter. The rest stay on screen, ranked. Uploading 500 lineups to a single-entry contest is not a thing, so the export will not let you.
This is the question everybody asks. The short answer is that you do not have to choose — picking the contest in Step 2 now sets the metric off that contest's own payout ladder. The table is here so you know what it picked and why, and so you can override it on purpose.
| Contest | Rank by | Why |
|---|---|---|
| Cash · Double-Up · 50/50 | 🛡️ Chance to cash | Flat ladder. You are paid for finishing above a line, not for finishing high. Nothing above that line pays more. |
| Satellite · Qualifier | 🛡️ Chance to cash | Every seat is worth the same. A seat is a seat — first place pays exactly what tenth pays. |
| Single-entry GPP | 💰 Expected ROI | One bullet against the whole ladder. ROI is the honest summary of a single entry's expected return. |
| Small-field GPP (3–20 max, first pays under ~110× the entry) | 💰 Expected ROI | The ladder is shallow enough that ROI is a stable read rather than a first-place lottery. |
| Top-heavy multi-entry GPP first pays 110×+ the entry, field 400+ | 🎯 Top 1% finish | Where first pays hundreds of times the entry and cashing returns barely more than it, ROI becomes the noisiest column on the board. Top-1% is not. |
| 150-max on a ceiling ladder | 🎯 Top 1% finish | You are buying the tail. Rank the set by how often it reaches the tail. |
courtedge.net/mlb-showdown-lab — single-game slates
The main Lineup Builder also handles showdown slates. The Lab exists for the captain-specific views.
courtedge.net/mlb-hand-builder
Hand-Builder is for when you already know part of the lineup. Click the players you want, slot by slot, and it fills the blanks with the best cap-legal completion. Use it when you have a read the model does not — a weather angle, a lineup-card leak, a stack you are committed to.
Late Swap is the one to remember. About 30 minutes before first pitch, check confirmed lineups and scratches. If somebody is out: upload your DraftKings entries CSV, it locks every player whose game has started and re-optimizes only the open slots, then you re-upload to DK. This saves more money over a season than most build settings do.
These do not build lineups. They rank players so you can form a read before you build.
Read a board, then take what you learned to the Lineup Builder as locks, excludes or exposure caps.
A Playbook is the written read for a slate: the stacks we like, the arms we trust, the chalk we are fading and why. It is the opinion. The builder is the machine. Most people read the playbook, nod, and then click Build without ever connecting the two — and get a set of lineups that has nothing to do with what they just read.
The part people get backwards. The playbook is a read on players. The contest is a read on how much risk that read should carry. Same playbook, same slate: in a double-up you take its safest core and stop; in a 150-max top-heavy GPP you take its leverage plays and its stack read and let the ownership rails do the rest. The playbook does not change. What you do with it does.
draftkings.com/lineup/upload).Player Name (ID), which is what their importer expects.| What you see | What it means |
|---|---|
| "No usable players found" | The CSV has no projection column, or every projection is zero. Check the import report — it names the columns it found. |
| Lineups leave $2,000+ of cap unspent | Your Min unique or Max exposure is set tight enough that the engine cannot afford the pool. Loosen one. |
| Every lineup looks the same | Min unique is at 0 and exposure caps are off. On a 150-max, set Min unique to 2–3. |
| ROI looks implausible | You are on a modeled curve, not a real ladder. Paste the contest's Payouts tab. |
| Ownership column is empty | The slate file has no ownership. Leverage and duplicate estimates need it — use a projection export that includes it. |
Questions, or something behaving differently than this page describes — tell us. A page that describes a tool that no longer works that way is worse than no page.