The NHL lineup optimizer is live. Free, no account, no email, no cap on lineups. You upload one file — the player pool exactly as it downloads from DraftKings — and it hands back a CSV formatted for re-upload.
It is the hockey version of the football optimizer and the baseball one, same solver underneath, a different rulebook on top. Hockey turned out to be the easiest of the four sports I have tried, which was a pleasant surprise after basketball, where the stacking rules turned out to barely exist at all.

This one started as a Fiverr gig
Years ago, back when I was taking optimization gigs on Fiverr, a hockey player from Canada hired me to build him a lineup generator in Excel. He knew the sport cold and he knew exactly what he wanted, which is the best kind of client to get. He wanted line stacks. He wanted power-play stacks. He wanted his goalie protected from his own skaters. And he wanted the batch split across different shapes — 30% of lineups built one way, 30% another — instead of twenty copies of the same idea.
I built it in OpenSolver, he was happy, and the workbook went into a folder where it sat for years. Porting it to the web was mostly archaeology: opening the file, finding a constraint block in column CA, and working out what past-me thought he was doing. (The block that turned out to mean “no skaters against my own goalie” was a ten-times-something minus a count of goalies facing a team. It took a while.)
You only upload one file
This is the part I care most about. DraftKings does not publish line combinations — the player file tells you a guy is a left winger and costs $6,200, and nothing about who he skates with. Every hockey optimizer I looked at solves that by asking you for a second file.
Asking for a second file is how a free tool loses people. I measured this on my routing app earlier in the year and the number was brutal: about 65% of run attempts failed before the solver ever started, mostly because someone uploaded a spreadsheet the tool was never going to understand. One file to get right is hard enough.
So the tool goes and gets the lines itself, from Daily Faceoff, for the teams on your slate only, along with the power-play units and the confirmed starting goalies. There is a refresh button because lines move at the morning skate and goalies get confirmed about an hour before puck drop — pulling that data once a day gets it wrong exactly when it matters. If the lookup fails you are not stuck: the columns are editable, you can upload your own chart, or you can turn stacking off entirely.
The rules that are actually hockey rules
A salary cap and a lock button is not an optimizer, it is a calculator. The hockey-specific constraints are the point:
- Line and power-play stacking, by shape. Two units of three players is the classic double stack. Add a third row of one unit × two players and you have a 3-3-2. The shapes add up rather than overlapping.
- Different teams per stack. On by default, and there is a story below about why.
- No skaters against your own goalie. Your goalie is paid for saves and punished for goals; the skaters facing him are paid for exactly what hurts him. DraftKings pays 0.7 a save and minus 3.5 a goal against, so rostering both sides is a fight you lose either way.
- A stack salary window. How much of the cap your stacked players may absorb, as a percentage band. It stops the solver calling four cheap fourth-liners a stack at one end, and blowing the whole budget on one line at the other. The 57–70% default is the number from the original workbook — my Canadian client’s number, not mine.
- Set-level diversity. Caps on shared units, player and stack-team exposure, cooldowns, and minimum unique players. This is the part that stops twenty “different” lineups being the same two stacks with a winger swapped.

The bug that was in my spreadsheet the whole time
Here is the humbling part. While testing, I checked whether “two units × three players” actually produced two teams. It did not. On the test slate, one lineup in ten was stacking a team’s second line and that same team’s second power-play unit — and because a line and a power play share players, about five skaters from one team were satisfying both and getting reported as a double stack.
That is a defensible play. It is just not the play the setting says it is. And when I went back to the original workbook, the same hole was there: three parallel selection vectors, nothing stopping all three landing on the same line. It had been sitting in that spreadsheet for years and neither of us ever caught it, because a lineup that comes out of a solver looks authoritative in a way a lineup you built by hand does not.
Fixed now, one constraint, no measurable cost — 1.42 seconds a lineup either way, same top lineup. But it is a decent argument for checking that your optimizer is optimizing what you think it is, rather than what you told it.
What it will not do
It does not project players. It reads the AvgPointsPerGame column out of the DraftKings file as a fallback, and that column is a season average of what already happened, not a forecast of tonight. There is no projection model here and the page says so. Upload your own numbers and they replace it — that is the intended way to use this, and an optimizer is only ever as good as what you feed it.
It is also DraftKings only for now. I have FanDuel’s scoring confirmed (they pay a power-play bonus DraftKings does not, which makes PP1 stacking worth more over there) but not their current roster shape, and I would rather ship one site that is right than two where one is guesswork.
Last thing worth knowing: a big batch takes real time, and it gets slower as it goes. Each new lineup has to differ from every lineup before it, so the fiftieth costs about twice what the fifth did. Ask for forty rather than a hundred and fifty, use the stop button when you have enough, and if a run ends early the page now tells you whether it ran out of clock or out of legal lineups — which need opposite fixes.
The NHL optimizer is here, free and without a signup, along with a longer walk through the stacking settings if you want to know what every box does before you touch it.
Things that I use, like, and am affiliated with:
Mint Mobile offers great cell phone service for $15 flat, get $15 off using the link. Get discounted phones with service activation and no contract.
I never spend money before I check Mr Rebates or Rakuten to get cashbacks, rebates, discounts, coupons or cheaper gift cards.
