In-Season Updates

2026 NFL Week 9 Power Rankings

Updated: Nov. 3, 2026 · Source: Spreadspoke Analyst data

THE SHORT ANSWER

The Buffalo Bills retake No. 1 heading into Week 9 at 1679 ELO after a 36–10 win over Baltimore, passing Seattle (1635), which lost 34–17 at home to Chicago. Denver (1642) is second, and Seattle (1635) and San Francisco (1626) follow. Full table below.

Every week, Spreadspoke ranks every NFL team by ELO rating, a single number that rises with wins and falls with losses. How far it moves depends on the margin of victory and on how strong the opponent was. The league average is 1500.

NFL ELO power rankings (all 32 teams)

Ratings are before this week's games. Move is the change in rank from last week's rankings.

RankMoveTeamRecordELOWeek ±SeasonLast Game
1▲ 1Buffalo Bills6–11679+14▲ +56W 36–10 vs BAL
2▲ 2Denver Broncos6–21642+9+24W 28–24 vs KC
3▼ 2Seattle Seahawks4–41635▼ −46▼ −57L 17–34 vs CHI
4▲ 1San Francisco 49ers6–11626–▲ +61Bye
5▲ 4Chicago Bears6–21621▲ +45▲ +92W 34–17 @ SEA
6▼ 3Minnesota Vikings6–11621−16▲ +64L 15–19 @ DET
7▼ 1Jacksonville Jaguars5–21614+12▲ +48W 42–7 vs IND
8▼ 1New England Patriots5–31608+10+6W 24–19 @ MIA
9▼ 1Los Angeles Rams4–41595+9▼ −27W 24–9 vs LAC
10–Detroit Lions5–21587+16+20W 19–15 vs MIN
11–Cincinnati Bengals5–21570+5▲ +92W 43–36 vs TEN
12▲ 1Pittsburgh Steelers6–21569+16▲ +59W 27–6 vs CLE
13▼ 1Kansas City Chiefs5–21555−10▲ +63L 24–28 @ DEN
14–Green Bay Packers5–31536+12+3W 27–19 vs CAR
15–Houston Texans2–51518–▼ −101Bye
16–Baltimore Ravens4–41504−13▼ −49L 10–36 @ BUF
17▲ 1Tampa Bay Buccaneers3–51493+23+17W 16–0 vs ATL
18▼ 1Atlanta Falcons3–51455−23−8L 0–16 @ TB
19▲ 3New York Giants4–2–11446–▲ +37Bye
20▼ 1Dallas Cowboys3–51445−21−5L 30–33 vs ARI
21▼ 1Cleveland Browns5–31438−16▲ +29L 6–27 @ PIT
22▲ 2Washington Commanders2–4–11437▲ +26−20W 27–10 vs PHI
23–Carolina Panthers3–41424−12+11L 19–27 @ GB
24▼ 3Philadelphia Eagles2–61422▼ −26▼ −147L 10–27 @ WAS
25▲ 3Las Vegas Raiders4–41404+19▲ +75W 38–33 @ NYJ
26▼ 1Indianapolis Colts2–61396−12▼ −61L 7–42 @ JAX
27▼ 1Los Angeles Chargers0–71396−9▼ −132L 9–24 @ LAR
28▼ 1New Orleans Saints2–51396–▼ −26Bye
29▲ 1Arizona Cardinals3–51388+22+14W 33–30 @ DAL
30▼ 1Miami Dolphins1–61371−10▼ −80L 19–24 vs NE
31–New York Jets2–61323−20−15L 33–38 vs LVR
32–Tennessee Titans1–71283−5▼ −46L 36–43 @ CIN

Ratings are whole numbers; teams with the same rating are listed alphabetically.

Who has moved most since Week 1

ELO points gained or lost since the start of the season.

BearsChicago Bears: +92 ELO since Week 1+92BengalsCincinnati Bengals: +92 ELO since Week 1+92RaidersLas Vegas Raiders: +75 ELO since Week 1+75VikingsMinnesota Vikings: +64 ELO since Week 1+64ChiefsKansas City Chiefs: +63 ELO since Week 1+6349ersSan Francisco 49ers: +61 ELO since Week 1+61SteelersPittsburgh Steelers: +59 ELO since Week 1+59BillsBuffalo Bills: +56 ELO since Week 1+56JaguarsJacksonville Jaguars: +48 ELO since Week 1+48GiantsNew York Giants: +37 ELO since Week 1+37BrownsCleveland Browns: +29 ELO since Week 1+29BroncosDenver Broncos: +24 ELO since Week 1+24LionsDetroit Lions: +20 ELO since Week 1+20BuccaneersTampa Bay Buccaneers: +17 ELO since Week 1+17CardinalsArizona Cardinals: +14 ELO since Week 1+14PanthersCarolina Panthers: +11 ELO since Week 1+11PatriotsNew England Patriots: +6 ELO since Week 1+6PackersGreen Bay Packers: +3 ELO since Week 1+3CowboysDallas Cowboys: −5 ELO since Week 1−5FalconsAtlanta Falcons: −8 ELO since Week 1−8JetsNew York Jets: −15 ELO since Week 1−15CommandersWashington Commanders: −20 ELO since Week 1−20SaintsNew Orleans Saints: −26 ELO since Week 1−26RamsLos Angeles Rams: −27 ELO since Week 1−27TitansTennessee Titans: −46 ELO since Week 1−46RavensBaltimore Ravens: −49 ELO since Week 1−49SeahawksSeattle Seahawks: −57 ELO since Week 1−57ColtsIndianapolis Colts: −61 ELO since Week 1−61DolphinsMiami Dolphins: −80 ELO since Week 1−80TexansHouston Texans: −101 ELO since Week 1−101ChargersLos Angeles Chargers: −132 ELO since Week 1−132EaglesPhiladelphia Eagles: −147 ELO since Week 1−147

Sample code: build the rankings yourself

The rankings come from spreadspoke_enhanced.csv, which carries pre-game and post-game ELO for both teams in every game.

import pandas as pd

# Spreadspoke enhanced game file: one row per game, 1966 to present
games = pd.read_csv("spreadspoke_enhanced.csv", low_memory=False)

# 2026 regular season through Week 8
season = games[games["schedule_season"] == 2026].copy()
season["week"] = season["schedule_week_str"].astype(int)
season = season[season["week"] <= 8]

# Stack home and away sides into one row per team per game
home = season[["week", "home_team_id", "elo_home_pre", "elo_home_post"]]
home.columns = ["week", "team", "elo_pre", "elo_post"]
away = season[["week", "away_team_id", "elo_away_pre", "elo_away_post"]]
away.columns = ["week", "team", "elo_pre", "elo_post"]
teams = pd.concat([home, away], ignore_index=True)

# Each team's latest game (teams on a Week 8 bye keep their Week 7 rating)
latest = teams.sort_values("week").groupby("team").tail(1)

# Rank 1 to 32 on current ELO
latest = latest.sort_values("elo_post", ascending=False).reset_index(drop=True)
latest.index += 1
print(latest[["team", "week", "elo_post"]])

The ELO update behind each post-game number uses K = 20, a 65-point home-field edge (none at neutral sites) and a margin-of-victory multiplier. Here it is as a function you can run on any game:

import math

def elo_update(home_elo, away_elo, home_pts, away_pts, neutral=False, k=20, hfa=65):
    diff = home_elo - away_elo + (0 if neutral else hfa)
    p_home = 1 / (1 + 10 ** (-diff / 400))           # home win probability
    result = 1 if home_pts > away_pts else 0 if home_pts < away_pts else 0.5
    winner_diff = diff if result == 1 else -diff
    mov_mult = math.log(abs(home_pts - away_pts) + 1) * 2.2 / (winner_diff * 0.001 + 2.2)
    shift = k * mov_mult * (result - p_home)
    return home_elo + shift, away_elo - shift

# Week 8: Washington Commanders beat Philadelphia Eagles 27-10
print(elo_update(1411, 1448, 27, 10))   # (1437.2, 1421.8)

GET THE DATA

The file behind these rankings is included in the Spreadspoke ANALYST package. It includes historical data for every NFL game since 1966—including scores, closing spreads, weather, and pre- and post-game ELO ratings.

See ANALYST pricing →

Frequently Asked Questions

What is a good ELO rating?

ELO centers around 1500 for an average team. Strong playoff-caliber teams sit above 1600; rebuilding teams fall below 1400. The gap between two teams maps to an expected point spread.

Methodology

All figures are computed from the Spreadspoke Analyst data package: spreadspoke_enhanced.csv (results with pre- and post-game ELO: elo_home_pre, elo_home_post, etc.) and nfl_elo_handicapping_master.csv (ELO, closing spreads and model edge per game). Coverage is all 121 regular-season games from Weeks 1–8 of 2026; 49ers, Giants, Saints, and Texans were on a bye in Week 8 and keep their Week 7 rating. The model uses K = 20, a 65-point home-field advantage (none at neutral sites) and a margin-of-victory multiplier. League average is 1500. This page is published weekly while games are played.

Explore: Power Rankings Tracker · ATS Standings · Over/Under Records · All 32 Teams