Cookies
Cookies: your timezone and starred teams stay on your device. Advertising loads only if you accept, and “Cookie settings” in the footer changes your mind any time. Privacy policy
matchupgrid shows a sports season the way a season actually is: a grid. Teams run down the left, dates across the top, and each cell holds the opponent for that day. You can take in a month of the league in one look instead of clicking through one team, or one day, at a time.
It covers 16 leagues across football, American football, hockey and basketball, 474 teams in all, and every one of them has a page of its own as well as a place in its league's grid. Every grid has the same shape — a column per day, in every sport and at every screen width. Where a league plays about once a week, most of those columns are empty; that is the shape of the season rather than a gap in the data, and it is what keeps a row reading left to right in the order the games are actually played.
Most schedule sites answer a narrow question well — what one team does next, or what happens tonight. The goal of matchupgrid is to answer the question a fan planning a week actually has: who is busy, who is idle, who is about to play four games in six nights, and when is my team next on at a time I can watch. A grid answers all of those at once, and a games-played column next to it turns the schedule into a comparison rather than a list.
Every league publishes its schedule in its own time — the NHL and the NFL in US Eastern, the European leagues in theirs. Follow North American hockey from Europe, or the Premier League from North America, and that means converting by hand before every game, and getting it wrong when a late game slips past midnight. This site stores every start time in UTC and converts it in your browser to your own timezone, detected automatically and overridable from the control above any grid. Where a game lands on the following day where you are, it is marked so you cannot miss it.
Each league's schedule comes from a published source for that league, and not always from the league itself. The football schedules come from the Football-Data.org API; the NFL schedule comes from nflverse, under a Creative Commons licence; the college football schedules come from CollegeFootballData.com; the hockey and basketball schedules come from the leagues' own feeds, which are unofficial and undocumented and can change without notice. So the site is built defensively: the data is fetched, normalised and written into the site when it is built, once a night during a season. Nothing is fetched from your browser while you read. If a source changes or goes down, you get schedule data that is a day old rather than a broken page — and a fetch that comes back short or empty is refused outright rather than allowed to overwrite a good season with half of one.
Scores appear in the grid once games have been played, replacing the matchup, so the same page is worth returning to through a season.
Where a league has not fixed a kick-off time yet — most of a football season, until broadcasters pick their matches five or six weeks out, about half a college football one, where the networks choose a week or two ahead — the cell shows the date and a ? where the time would be. A placeholder you could not tell from a real time would be worse than nothing.
It is an independent project. It is not affiliated with, endorsed by or connected to any of the leagues or clubs whose schedules appear on it, and it deliberately uses no league or club logos, marks or brand colours — the palette here is its own. Team names appear as what they are: facts about who is playing. If you are looking for official information, go to the league.
It is also not a live-score service. Results arrive with the overnight rebuild, not while a game is in progress, and a grid holds one competition and nothing else: a league page shows that league's own season, never a cup tie or a European night mixed into the same columns.
If a game looks wrong, it is worth telling us — sometimes the upstream feed is wrong, and sometimes we are. Write to contact@matchupgrid.com, or see the contact page.