The MLB lineup optimizer just got an upgrade that matters more than any of the lineup rules it already enforced: it now knows who’s actually playing. Confirmed batting orders and probable starting pitchers load automatically from Major League Baseball’s own schedule data, and two new lineup filters use that information to keep bench bats and non-starting arms out of your build by default.
Until now, the tool would happily stack a hitter who wasn’t in that day’s starting nine, or a pitcher who was penciled in for Thursday, not today. That’s on the player to catch by cross-checking DraftKings against a lineup site. Not anymore — the optimizer pulls the day’s confirmed lineups itself and marks every player accordingly, the same way the NHL version of this tool already does with starting goalies.

What changed
Upload a DraftKings MLB salary file and the tool now fetches that slate’s schedule from MLB’s own Stats API in the background — no separate step, no extra upload. For every team in your pool it pulls the probable starting pitcher and, once a team posts its lineup for the day, the confirmed 1-through-9 batting order. A refresh button sits above the player table if you want to pull again later in the day, which matters because lineups aren’t always locked when the slate first loads: some teams post hours before first pitch, others closer to game time.
The player table reflects it directly. Starting pitchers are flagged “SP”; a pitcher not listed as starting shows a plain dash instead, so it’s obvious at a glance who the tool is treating as in play. Hitters get a batting-order number, 1 through 9, once their team’s lineup is out — blank if it isn’t posted yet.
Why most of the “pitchers” in your pool were never starting
Here’s the part that made this worth building. A DraftKings MLB slate lists every pitcher on both active rosters as eligible — not just that day’s starters. On a real 6-game DK slate pulled while building this feature, 201 pitchers showed up as rosterable in the player pool. Only 12 of them were actually starting that day, which is roughly what you’d expect: two starters a game across six games. The other 189 were relievers, or starters throwing on a different day, sitting in the pool with full stat lines and salaries as if they were live options.
That’s not a DraftKings mistake — a pitcher who isn’t starting genuinely can rack up relief innings and strikeouts, so the platform doesn’t exclude them. But for building a cash or GPP lineup, a non-starting pitcher’s projection is close to noise: you’re paying salary for a role that mostly doesn’t accrue meaningful DFS points on a given slate. Filtering the pool down to that day’s dozen real starters, automatically, removes a whole category of mistake that used to require cross-referencing a separate site by hand.
Two new filters, on by default for GPPs
With real starter and batting-order data flowing into the pool, it made sense to let the solver act on it. Two new Tier 2 constraints showed up alongside the existing ones:
- Only starting pitchers. Restricts pitcher selection to players the tool has confirmed are starting that slate.
- Only batters with a confirmed order. Drops hitters who don’t have a posted batting-order slot, which usually means they’re not in that day’s starting lineup at all.
Both are off by default for cash games and on by default for GPPs — the same split the NHL version of this tool already uses for confirmed starting goalies and declared skaters. Cash lineups tend to get built earlier, when some lineups genuinely aren’t out yet, so forcing the filter on could shrink the pool more than it should. GPP lineups are usually built closer to lock, when most of the day’s lineups are already posted, and a GPP build benefits more from excluding the noise. Either checkbox can be flipped by hand regardless of which contest preset you start from.
There’s a floor built in so the filter can’t quietly empty your pool: if fewer than eight hitters on a team have a confirmed order, the tool leaves that team’s hitters alone rather than risk producing an unsolvable pool early in the day, before lineups are out.
Where the data actually comes from
The schedule and lineup data comes straight from MLB’s own Stats API — the same structured feed MLB.com’s own probable pitchers page draws from, rather than scraping a lineup website’s HTML. That matters for reliability: a structured JSON feed from the league itself is far less likely to silently break than parsing a page that can be redesigned without notice. Results are cached briefly — three minutes — so hitting refresh a few times in a row doesn’t hammer the API, but a genuinely new lineup posting is picked up within thirty seconds of asking.
This mirrors the approach already used for the NHL lineup optimizer’s starting-goalie lookup, which is built on the same fetch-once, cache-briefly, never-guess pattern. If a team’s data can’t be matched confidently — a name that doesn’t resolve cleanly, for instance — the tool leaves that player alone rather than mark something as confirmed that isn’t. Nothing in this pipeline invents a starter; it either has confirmed data for a player or it doesn’t touch that player’s status at all.
What to do with it
Practically, nothing changes about how you use the tool. Upload your DraftKings salary export the same way you always have. The lineup data loads automatically right after, and you’ll see the SP tags and batting-order numbers fill in on the player table within a few seconds. If you’re building early in the day and want fresher data before you finalize, hit refresh. If a filter drops more hitters or pitchers than expected, the results panel tells you exactly how many were excluded and why, so it’s never a silent change to your pool.
The free MLB lineup optimizer is at the link below — no signup, no account, just upload and solve.
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.
