The season opens across four days: a Wednesday Super Bowl rematch in Seattle, the league's first regular-season game in Melbourne, and five division games all kept out of the 1:00 window. The 16 pairings carry 393 prior regular-season meetings since 1999 — five annual series with 54 apiece, New England–Seattle just six — and the extremes run from Miami's 13-3 ledger over Las Vegas to Cleveland's 3-23-1 opener record. Every head-to-head computed from the file.
By C. B. Zakarian · Published August 12, 2026
The 2026 season opens with 16 games across four days: one on Wednesday, September 9, one on Thursday, thirteen on Sunday the 13th, one on Monday the 14th. Sunday splits into eight kickoffs at 1:00 PM ET, four at 4:25, and a night game at 8:20; the week's earliest start is that 1:00 window, its latest the 8:35 PM Thursday game. Five of the 16 are division games — and none kicks off at 1:00: all five sit in standalone or late windows (Thursday, two 4:25s, Sunday night, Monday night). This page walks the slate game by game with each pairing's head-to-head ledger from the file; the rest of the preview machinery lives at the 2026 season hub.
The two oddities up front. Per the schedule file, the season's first row is New England at Seattle on Wednesday, September 9, 8:20 PM ET at Lumen Field — the schedule-quirks page already covers the calendar side: both clubs get 11 days before week 2, so the odd opener costs neither side anything later. The file doesn't say why it's a Wednesday; league announcements and schedule-release coverage (ESPN, Sky Sports) do: the opener is a rematch of February's Super Bowl, moved up a day to clear the broadcast window for Thursday's game in Melbourne, Australia: the NFL's first regular-season game there, San Francisco at the Rams at the Melbourne Cricket Ground — the row the file marks location = Neutral — kicking off Friday morning local time. As of this writing, reports call it the first Wednesday season start since 2012 and the first week-1 Super Bowl rematch since 2016.
For each of the 16 matchups, count every regular-season meeting in the file from 1999 through 2025, with relocated franchises folded into their current codes (San Diego→LAC, St. Louis→LA, Oakland→LV). The visitor's wins extend left, the host's right:
The 393 prior meetings are distributed feudally: the five division games account for 270 of them, and no other pairing has met more than 18 times. The slate in order, one file-fact per game:
The file holds 428 played week-1 games since 1999. Count each franchise's record in them (relocations folded in) and the range is enormous:
| Franchise | Week-1 record | Win% |
|---|---|---|
| New England | 18-9 | 66.7% |
| Philadelphia | 18-9 | 66.7% |
| Pittsburgh | 17-9-1 | 64.8% |
| Green Bay | 17-10 | 63.0% |
| San Francisco | 17-10 | 63.0% |
| … 22 franchises between … | ||
| Chicago | 11-16 | 40.7% |
| Las Vegas | 11-16 | 40.7% |
| Carolina | 10-17 | 37.0% |
| N.Y. Giants | 9-18 | 33.3% |
| Cleveland | 3-23-1 | 13.0% |
Cleveland's 3-23-1 stands alone: three opener wins in 27 years (2004, 2022, 2023, plus a 2018 tie), six wins behind the next-worst franchise. Philadelphia enters on five straight opener wins; the Giants — Sunday night's host — have lost 11 of their last 13, and the 1:00 window pairs two of the bottom five: Chicago (11-16) at Carolina (10-17). (Some franchises show 24-26 openers: Houston joined in 2002, and five openers slid to week 2.) Before reading anything into these records, the week-1 signal page owns what openers actually predict: opener winners made the playoffs 53.3% of the time versus 25.3% for losers — and game 1 predicts the rest of the season no better than any other single game.
The 2026 week-1 rows already carry market fields, quoted here as of the dataset's pull, not today's board. All 16 games have a spread and total. Home teams are favored in 11, visitors in five (Chicago, Buffalo, Baltimore, Green Bay, Dallas — none by more than 3.5). The widest spread is the Chargers, 11.5 over Arizona; three games sit at 1.5, with Buffalo-Houston's moneylines the closest to even (−112/−108). Seattle opens a 3.5-point favorite over New England; the Rams are 3 over San Francisco in Melbourne. Totals run from 39.5 (Jets-Titans) to 50.5 (Buccaneers-Bengals), averaging 45.2. Lines move daily; treat these as the file's snapshot, nothing more.
roof column, which codes the Melbourne row as a dome and leaves Houston's and Indianapolis' retractables blank until game day; all week-1 rest fields read 7 by convention. The why-Wednesday and Melbourne context is from league announcements and press coverage, accurate as of this writing; every number comes from the file.One public file: games.csv from nflverse nfldata, bundled at /data/games.csv. The slate is the 16 season == 2026, week == 1 rows; every ledger is a filter over the played games. The chart and the full console breakdown — per-day structure, all 16 head-to-heads, the opener record book, and the line fields — come from explainer_src/make_week1_slate_chart.py; the core is a screenful of pandas:
import pandas as pd, numpy as np
df = pd.read_csv("data_layer/games.csv")
df[["home_team", "away_team"]] = df[["home_team", "away_team"]].replace(
{"SD": "LAC", "STL": "LA", "OAK": "LV"})
wk1 = df[(df.season == 2026) & (df.game_type == "REG") & (df.week == 1)]
print(len(wk1), wk1.weekday.value_counts().to_dict(), int(wk1.div_game.sum()))
# 16 {'Sunday': 13, 'Wednesday': 1, 'Thursday': 1, 'Monday': 1} 5
reg = df[df.home_score.notna() & (df.game_type == "REG")] # 6,967 played games
for _, g in wk1.iterrows():
a, h = g.away_team, g.home_team
m = reg[((reg.home_team == a) & (reg.away_team == h)) |
((reg.home_team == h) & (reg.away_team == a))]
ap = np.where(m.home_team == a, m.home_score, m.away_score)
hp = np.where(m.home_team == h, m.home_score, m.away_score)
print(a, "at", h, f"{(ap > hp).sum()}-{(hp > ap).sum()}-{(ap == hp).sum()}",
int(ap.sum()), int(hp.sum())) # e.g. SF at LA 30-23-1 1248 1113
w1 = reg[reg.week == 1] # 428 openers
for t in sorted(set(wk1.home_team) | set(wk1.away_team)):
g = w1[(w1.home_team == t) | (w1.away_team == t)]
w = (((g.home_team == t) & (g.result > 0)) |
((g.away_team == t) & (g.result < 0))).sum()
tie = (g.result == 0).sum()
print(t, f"{w}-{len(g) - w - tie}-{tie}") # CLE 3-23-1 ... NE 18-9-0
All figures on this page were computed 2026-08-12: the slate from the file's 16 week-1 rows, the ledgers and opener records from its 6,967 played regular-season games (1999–2025). Nothing here is hand-entered.
Data: nflverse/nfldata, public. Head-to-head ledgers count regular-season games only; the Super Bowl-rematch and Melbourne context is per league announcements and schedule-release reporting (ESPN, Sky Sports, NFL.com, the MCG), as of this writing.
Want the code behind these metrics? Work through the 45-chapter NFL analytics tutorial.
Browse tutorials Free tools