MLB expansion sandbox

Made by John Owens for baseball nerd usage only · @BaseballPoli on Twitter and Bluesky · buy me a coffee on Venmo

Thirty-seven candidate markets scored and ranked, and six ways to grow the league from 30 clubs to 50. Tap a column to open that draft.

Candidate cities

Ratings run 1–10, higher is better, except the two capture columns, where a high number means the fans are already spoken for. Region is the broad catchment: the combined metro area plus nearby cities without a closer club. Core is the city plus its contiguous inner ring. Tap a city for notes.

Adjust weights

Populations are rounded 2020–2024 estimates in millions. Ratings are judgment calls, not measurements.

Alignment drafts

Each draft starts from today’s 30 clubs with the Athletics counted as Las Vegas. Yellow slats are new clubs; a blue edge marks a club that changed leagues. The rule check runs automatically.

How the score works

Market is a weighted average of eight demand inputs: region population, core population, density and transit, baseball culture, unclaimed fandom, open sports calendar, wealth and growth.

Fit is a weighted average of travel, climate and feasibility.

Score is the square root of Market × Fit. The geometric mean punishes a weak link: a great market that can’t be reached or built in shouldn’t score like a good one.

Region population is divided among the top-level clubs already there (MLB, NPB, KBO, CPBL), then log-scaled so 1M scores 0 and 30M scores 10. Tokyo’s 37M, split six ways, counts as about 6M. Core population is log-scaled from 0.5M (0) to 10M (10).

Unclaimed fandom is baseball culture times the share not already attached to an MLB club, so a place with no baseball gets no credit for having no Dodgers fans. Open sports calendar is 11 minus other-sports capture.

Tip jar

If you like this work, you can buy me a coffee on Venmo. Where it goes, in order: subscriptions to the tools this is built on, then coffee while I work on silly baseball nerd projects.

Nobody owes me anything. The page is free and stays free.