Kind of Lost Kind of Lost · OR Tools · NFL Lineup Optimizer · Support

NFL Lineup Optimizer for QB Stacks

Upload your DraftKings, FanDuel or Yahoo player list, set your stacking rules, and generate a diverse set of lineups — ready to upload back. Free tool by kindoflost.

1 · Site & player pool

📥 Drop the player list CSV here, or browse
DK: the player pool export · FD: the players-list CSV
📈 Drop your weekly projections here, or browse
Needs two columns, id and projection; rows are matched on the site’s player ID.
DK average: the points-per-game number in your DraftKings file. nflverse usage: what each player’s targets and carries were worth on average, based on free nflverse data. Players with only 1–3 games get a mix of the two numbers, leaning more on nflverse as the games add up. Defenses and players with no games this season keep DK’s average. My own file: use the projections file you add above. Your numbers always win for the players in your file.

What is this NFL DFS lineup optimizer?

A free NFL DFS optimizer for DraftKings, FanDuel and Yahoo. Nothing to sign up for and nothing behind a paywall. Football points cluster around the quarterback — a touchdown pass pays him and his receiver — so the tool solves a mixed-integer program that builds a set of QB-stack lineups for the week, each strong on its own and different from the rest, because in large-field tournaments building one good lineup is easy; building twenty different ones is the hard part.

How it works

  1. Export the player list from DraftKings, FanDuel or Yahoo and upload it above.
  2. Cut the pool down to the players you like this week: lock, exclude, set exposure caps, overwrite projections.
  3. Set the rules — how many pass-catchers stack with your quarterback, whether to bring a player back from the other side of that game, per-team caps, and how different each lineup must be from the rest.
  4. Press Generate and download a cap-legal CSV in DraftKings, FanDuel or Yahoo upload format.

A worked example

DraftKings and FanDuel run the same nine-slot classic NFL roster — QB, two RB, three WR, TE, a FLEX, and a defense — under a $50,000 cap on DraftKings and $60,000 on FanDuel. Yahoo fills the same nine slots under a $200 cap, and requires players from at least three teams with no more than six from any one team. Strip away the football and it is a knapsack problem: the most projected points that fit under the cap while filling every position.

What makes NFL different from baseball is correlation. A quarterback and his receiver score the same touchdown twice, so stacking them is not a preference — it is a constraint you write into the model. Add a bring-back from the opposing team to catch a shootout, refuse to roster a defense against your own offense, and cap how often any one player appears across the set. The optimizer treats all of it as hard constraints, not suggestions.

Common questions

Do I need to pay or sign up? No. The tool exists to show the optimization models I have built over 20+ years, and every lineup it makes is yours to download.

Which sites can I upload from? DraftKings, FanDuel and Yahoo. Each site’s player export goes in, and the CSV that comes out matches that site’s lineup-upload layout.

Does it handle Showdown or single-game contests? Not yet. The NFL tool is built for classic full-slate contests with the nine-man roster (QB, RB, WR, TE, FLEX, DST).

How good are the default projections? Without a file of your own, each player carries the site’s figure — DraftKings’ AvgPointsPerGame, FanDuel’s and Yahoo’s FPPG — which is a season average of points actually scored, not a forecast for this week. It ignores the matchup and any injured teammate, and in September it may rest on one or two games. Pick nflverse usage in the Projections box, upload a projections CSV, or overwrite numbers in the list. Whatever numbers you trust, the solver’s job is to get the most out of them.

What is “nflverse usage (expected points)”? It is a second choice in the Projections box in step 1. For every pass, carry and target a player got, the ffopportunity data says how many points that chance was worth on average — given where on the field it happened and how far downfield. We turn that into the site’s scoring (DraftKings: 1 point per catch and the 300 / 100-yard bonuses; FanDuel and Yahoo: half a point per catch, no bonuses), then average the player’s last 3 games with his whole season. Quarterbacks, running backs, receivers and tight ends with games this season get this number. A player with only 1–3 games gets a mix of the two numbers, leaning more on nflverse as the games add up (1 game: half and half; 2 games: two thirds nflverse; 3 games: three quarters; 4 or more: all nflverse). Defenses and any player with no games this season (or whose name we cannot match) keep the site’s average, and the Source column tells you which one each player has. It is still a backward-looking number, not a forecast for this week’s matchup. If you also add your own file, your numbers win for the players in it. Expected points: ffopportunity by the ffverse project, CC BY-SA 4.0; changed by us as described above.

How do the Vegas lines and implied points work? Load your file, then press Load Vegas lines in step 2. Each team gets an Impl number — the points Vegas expects it to score, from the game total and the spread. Sorting by Impl shows which offenses Vegas likes; then, in step 3 → Tier 2 → Vegas rules, Only stack teams implied ≥ means no quarterback (and so no stack) from a team below that number, and Only stack QBs whose game total ≥ does the same by game — pair it with a bring-back to build shootout stacks from both sides. An empty box means the rule is off, which is how both start. The blue checkboxes are never changed, a game with no posted line is never filtered, and if your threshold leaves no quarterback you are told so.

What does the Update injury list button do? It compares the slate with ESPN’s NFL injury report — automatically when the pool loads, and again whenever you press it. Out, IR and suspended players get unticked (re-tick any you disagree with); Questionable and Doubtful are badges only. On/Off by status, above the player table, toggles an entire status in one click.

What does Update depth chart + practice report do? It adds each player’s depth-chart rank (QB1, RB2, WR3…) and the official NFL practice and game status from nflverse (free open data, CC BY 4.0). Backup quarterbacks (anyone who is not his team’s QB1) and players the NFL lists as Out start switched off — even when the team’s starter is Out; tick the backup yourself if you want him, and you will see a warning next to him. Both buttons also run by themselves when the pool loads. If ESPN and the NFL report disagree you see both badges and a ⚠. Doubtful, Questionable, practice DNP and the rest are badges only; use On/Off by status to switch a group.

When should I use Check late news? In the window before lock, once lineups are built — it sits at the top of step 4. ESPN’s injury report is re-read for anyone in your lineups ruled out after you built them; the tool lists those players, counts and highlights the lineups that hold them, and suggests a substitute for each. It only advises: no lineup is rebuilt or exported, so the swap happens by hand on DraftKings, FanDuel or Yahoo.

Can I save my rules for next week? Yes — that is what Saved setups (top of step 3) is for. Type a name, press Save current settings, and Load it on a later slate. It stores the Rules card in full (preset, lineup count, QB stack shape, bring-back, exposure and cooldowns) and your Projections choice (DK average / nflverse usage / my own file). It leaves out this week’s player pool, locks and exclusions, typed projections and the quarterbacks ticked under “Build around”. Vegas thresholds are stored only if Vegas lines are loaded. Loading resets any rule the setup doesn’t cover to the page default, so older setups never switch on newer rules by accident. Setups are kept in this browser alone and never sent to a server; a different device has its own empty list. The limit is 20, and saving over an existing name replaces it.

Do you have one for baseball? Yes — the MLB lineup optimizer works the same way, with batting-order stacking instead of quarterback stacking.

Get an email when we ship updates to the NFL optimizer. Low volume, unsubscribe anytime.

Questions people actually ask

The football vocabulary is the hard part, not the optimizer. Click any question.

What do “QB stack” and “bring-back” mean?
A QB stack is your quarterback plus pass-catchers (WR, TE or RB) from his own team: the QB’s points and his receivers’ points are the same throws counted twice, so they rise and fall together. A bring-back is a player from the team your QB is playing against: a shootout lifts both offenses, so one good game gets a bigger ceiling. Bring-back is 0 (off) by default because it is a per-QB conditional constraint that noticeably slows batch generation.
What does “Build around QBs” do?
It splits the batch between the quarterbacks you tick, each one locked in for his share of the lineups, with your stack rules applied to him as usual. For his group only, the QB rotation window is off, the player and stack-team exposure caps and cooldowns don’t count him or his team, and the passing / skill core caps count only his teammates — otherwise his group would stop after one lineup. Every other player still obeys all your rules. Starting QBs (QB1 on the depth chart, not Out) are ticked for you once the depth chart is loaded. Split the lineups by Even, by implied total (his team’s Vegas implied points; load Vegas lines first) or Custom; counts always add up to your lineup count.
How do “any mix” and the WR / TE / RB boxes combine?
Pass-catchers / backs with the QB is how many WR, TE or RB from the QB’s team a lineup must hold, in any mix. The WR / TE / RB boxes under “of which, specifically” force part of that shape: WR 2 means a double-WR stack. Leave them at 0 and the solver picks whichever teammates it likes.
What do the “No defense against” rules do?
No defense against my QB and No defense against any of my players keep your defense from facing your own offense. A defense earns its points by stopping that offense, so owning both sets your lineup against itself. The Cash preset turns both on; GPP turns on the QB one only.
Why limit WR and RB per team?
Max WR from one team and Max RB from one team are off while blank. Two backs from the same team compete for the same carries, so one’s big game usually comes out of the other’s; set the RB limit to 1 unless you are deliberately pairing a runner with a pass-catching back. The Cash preset uses 2 WR / 1 RB, GPP uses 3 WR / 1 RB.
What is “Min salary used” for?
Each lineup has to spend at least this much of the cap (0 = no floor). Picking Cash sets the floor at 95% of the cap; GPP sets none.
What are the shared passing core and skill core limits?
Max shared passing core (QB/WR/TE) caps how many quarterback-plus-pass-catcher pieces two lineups may share. Max shared skill core (QB/RB/WR/TE) is the same idea across every non-defense spot. Blank or a high number means off. They keep a batch from being many copies of the same QB-and-receivers core.
Why did I ask for 150 lineups and get fewer?
Usually the solve budget, not the rules. Lineup 120 has to differ from 119 earlier lineups, lineup 10 from only nine, so the batch slows as it grows. Read the message below Generate to see which limit stopped it. If it was the solve budget, request fewer or hit Keep going to N: it keeps your existing lineups and requires the new ones to differ from them, which a brand-new run can’t, because it has never seen them. A looser diversity setting doesn’t speed anything up — each solve gets slower. A bring-back also noticeably slows each solve, so drop it if time is short. If the message says no lineup is left that satisfies every rule, the constraints are the limit: it names what to loosen, and Relax one rule and continue loosens one setting per click.
What does the QB rotation window do?
A quarterback used in the last K lineups can’t start again yet. Because there is only one QB per lineup, this forces turnover at that spot. 0 means off. The Cash preset uses 2, GPP uses 4. The companion Stack-team cooldown does the same for the team the stack is built around, which in NFL is always your quarterback’s team.
Why does GPP raise stack-team exposure on small slates?
Each lineup’s stack team is its quarterback’s team, and no team may exceed the cap’s share of lineups, so the slate needs enough teams for those shares to reach 100%. The GPP default is 35%; when the slate is too small for that to cover every lineup, the page raises it. A value you type yourself stays.
What do the Cash and GPP presets set?
Cash: a light QB stack (QB plus any one pass-catcher), no bring-back, no defense against your QB or your attackers, at most 3 players / 2 WR / 1 RB per team, at least 4 teams, QB rotation 2, a minimum salary of 95% of the cap, and almost no diversity between lineups (1 unique player, 100% exposure, no cooldowns). GPP: a real stack (QB plus two pass-catchers, at least one a WR), no bring-back, no defense against your QB, at most 4 / 3 WR / 1 RB per team, at least 3 teams, QB rotation 4, 2 unique players, 40% player exposure, stack-team exposure 35%, cooldowns of 1, and no minimum salary. You can edit any of it after picking a preset.

Who built this

I'm Mario — an operations research analyst with 20+ years in optimization and supply chain (Cargill, Cessna Aircraft, Textron Aviation). Daily fantasy lineup building is a knapsack problem in a costume: the same constrained-optimization math I used for scheduling and routing, just with a salary cap instead of a truck. This NFL DFS tool runs a real MILP solver (PuLP/CBC) end to end, not a heuristic or a spreadsheet formula. More about me and the other free tools →