Data notes · where the numbers come from, and every place they deserve an asterisk
Every chart on this site is built from a league's own data feed, or,
where a league publishes none, from a respected open data project: the NFL
from FiveThirtyEight's openly licensed historical data before 1999, its week
numbers checked against devstopfix from 1978, and from nflverse since, and
the Premier League and the Championship from football-data.co.uk, with
footballcsv and engsoccerdata filling in an earliest season each. Nothing
here is scraped from websites or typed out of
record books. That choice has a consequence: when a league's feed and the
printed books disagree, this site sides with the league. Complete seasons
are validated before publishing, against a league's own official standings
wherever it publishes them, and for the two English divisions against the
arithmetic of every table together with the published record. The handful
of places where history needed repair or judgment are all listed here.
What the y-axis means
The MLB, NBA, WNBA, and NFL charts plot games above .500. Games
above .500 means wins minus losses. A team at 60-40 is twenty games
above .500, so its line sits at +20. The difference is not divided by
two. An NFL tie moves the line neither up nor down: ties count in the
record and in winning percentage, not on this axis.
The NHL chart plots points above a point-per-game pace. That is
standings points minus games played. A team with 50 points through 40
games sits at +10. The zero line is a team earning exactly one point
per game.
The MLS, Premier League, and Championship charts plot points above
draw pace. The arithmetic is the same: points minus games played. A
draw pays one point, so the zero line is the pace of a side drawing
every match. A club with 50 points through 30 matches sits at +20.
That is the whole definition. The longer answer, with a worked example
from the 1951 pennant race and the difference between games above .500 and
games behind, is its own page: What does games
above .500 mean on a standings chart?
MLB 1901 to today · MLB Stats API
Layouts are shown as they existed: before 1969 there were no
divisions, so those charts show the two league pennant races. East and
West arrive in 1969, the Central in 1994.
The wild card cutoff line appears from the format's birth in 1994:
one spot through 2011, two from 2012, three from 2022. It tracks the
team holding the last spot each day, ranked by winning percentage;
the league's official tiebreaker procedures are not applied to
day-by-day ties, so on tied days the line can sit a team off from the
official playoff picture.
1994 keeps its wild card race even though the strike cancelled the
postseason and no wild card was ever awarded. The race was real while
the season ran.
A few seasons before 1963 differ from the Elias record books by a
game or two. MLB's own feed counts ties, replayed games, and tiebreaker
playoffs slightly differently than the books do. Nine team-seasons out
of roughly 2,800 are affected.
Tiebreaker playoff games count in the regular season, matching the
feed: the 1962 Giants finish 103-62 here, including their three-game
playoff over the Dodgers, where some books stop at the scheduled 162.
Tie games (called for darkness in the years before ballpark lights)
are not counted. They were replayed and the replay counts, which is how
the official records treat them too. The 1927 Yankees are 110-44 here,
as they should be.
Charts show AL and NL play only. The Negro Leagues, which MLB
recognizes as major leagues, keep their statistics in a separate part of
MLB's data that this site does not yet chart.
A suspended game counts on its original date once it finishes, so a
day or two of recent history can quietly correct itself.
Doubleheaders get a point each. Baseball is the only sport here
that plays a team twice in a day, and a split doubleheader nets to
zero, so a chart drawn one point per day would show a rest day where
two games were actually played. Each game gets its own step instead,
which is why an MLB line occasionally jogs up and straight back down
inside a single date. The hover readout names the game, and teams
that played once that day simply hold their position. Postponed games
count on whichever day they are eventually made up.
Interrupted seasons appear exactly as they happened: 1981 shows its
mid-season strike gap, 1994 simply ends on August 11, and 2020 is 60
games long.
MLB's feed sends a copyright notice with every response, and from
August 2026 that notice is kept rather than dropped. Each season file picks
it up the next time it is built, in a rights field, worded
exactly as the feed worded it that day, so anyone who takes the numbers
takes MLB's notice along with them, which is what a notice is for. Seasons
that finished before the change and are latched against rebuilding will
carry no field unless they are ever rebuilt. MLB's own terms are published
at mlb.com/official-information/terms-of-use,
and the notice itself cites gdx.mlb.com/components/copyright.txt.
NHL 1917-18 to today · NHL API
Points and records come from the league's own day-by-day standings,
so every era's point rules (two for a win, one for a tie, the
overtime-loss point after 1999, no ties after 2004) are the league's own
arithmetic, not ours.
Division and conference layouts are shown as they existed each
season, from no divisions at all, to Canadian and American, to Adams and
Patrick and Norris and Smythe, to today's four. The 2020-21 season's
sponsor-branded division names appear here without the sponsors.
The wild card cutoff line traces the pace of the team holding the
last wild card spot in each conference, and exists only for seasons
that used the format (2013-14 onward). 2020-21 has none: that season's
playoffs took the top four from each division, so there was no wild
card race to draw.
2004-05 does not exist. The whole season was lost to the lockout.
The Montreal Wanderers' line in 1917-18 goes flat after six games:
their arena burned down and the team folded. Lines that stop moving
usually mean a franchise died mid-season.
2019-20 keeps its wild card races even though the league replaced
that postseason with a 24-team format after the March stoppage. The
races were real while the season ran.
NBA 1946-47 to today · NBA.com
The NBA counts its BAA years (1946-1949) as its own history, and so
does this site. The NBL, the other half of the 1949 merger, exists in no
open data source and is not charted.
The playoff cutoff line marks the pace of each conference's eighth
seed, the final playoff spot of the sixteen-team era that began in
1983-84. Earlier seasons have no cutoff line, and in today's play-in
years the line still tracks the eighth seed.
A few early-era division tiebreaker games (1948-1957) appear in the
league's game log but not in official standings. They are excluded here
so final records match the official books exactly.
The Baltimore Bullets folded fourteen games into the 1954-55 season,
and the league struck those games from the record. This site follows the
league: 1954-55 shows no Baltimore line at all.
The 1953-54 season includes a forfeit (Milwaukee over Baltimore) that
has no box score. It is credited at season's end, keeping the final
records exact.
The NBA Cup championship game does not count toward standings and is
not charted. Cup group-stage games count, and are.
WNBA 1997 to today · NBA.com's WNBA statistics
Three games exist in official standings but have no box score in the
league's game log: awarded results in 2007 (New York over Connecticut)
and 2009 (Los Angeles over New York), and the only true forfeit in
league history, awarded to Washington in 2018 after the Aces' 26-hour
travel ordeal. Each is credited at season's end, so final records match
the official standings exactly, but those teams' daily lines run one
game light from the true date until then.
The playoff cutoff line follows the format of its era: the four
best records league-wide in 1997 and 1998, three per conference in
1999, four per conference from 2000 through 2015, and the top eight
league-wide since 2016.
2020 is the 22-game season played entirely in Bradenton, Florida.
The Commissioner's Cup final does not count toward standings and is
not charted. Cup group games count, and are.
NFL 1970 to today · FiveThirtyEight, devstopfix, and nflverse
History starts in 1970, the AFL-NFL merger, so every season here is
the modern NFL of two conferences. Game results from 1970 through 1998
come from FiveThirtyEight's openly licensed historical NFL data, with week
numbers derived from the game dates; from 1978 they are checked against the
public-domain devstopfix results set. 1999 onward comes from nflverse. Pro-Football-
Reference, whose terms forbid automated access, was not used. Seasons
before 1970, and the old AFL and AAFC, exist in these sources but are not
charted yet.
The chart moves one point per completed week, not per day, and a
week joins the chart only when all of its games are final. Bye weeks
show as flat line segments.
Division and conference layouts are shown as they existed each season,
through every expansion and realignment: the 26-team league of 1970,
Seattle and Tampa Bay arriving in 1976 and swapping conferences in 1977,
Carolina and Jacksonville in 1995, the Ravens in 1996, up to the 31-team,
six-division setup of 1999 through 2001, before the 2002 realignment into
eight divisions.
The wild card cutoff line marks the last wild card spot in each
conference: one per conference from 1970, two from 1978, three from 1990
through 2001, two from 2002 through 2019, three again since 2020. Teams are
ranked by winning percentage alone; the league's full tiebreakers are not
applied, so in tied weeks the line can sit a team off from the official
playoff picture. The 1982 strike season is the exception: its walkout led
to a one-off playoff that took the top eight per conference regardless of
division, so that year is charted with no wild card line at all.
2001 shows its September 11 pause: the second week's games were
postponed and played in early January as Week 17, so the chart skips a
weekend after Week 1 and runs into January.
Ties count as half a win in the winning percentage, the NFL's own
method. The 2022 Bills-Bengals game, cancelled after Damar Hamlin's
collapse, was never played: both teams simply finished with 16 games,
exactly as the official standings record it.
The 1982 and 1987 seasons carry a "Players' strike" band over the
weeks the walkouts wiped out: two months in 1982, the single cancelled
week of 1987 before the replacement games.
Teams are shown as they were each season: the Houston Oilers, the
Baltimore and then Indianapolis Colts, the St. Louis, Phoenix, then
Arizona Cardinals, the Boston Patriots of 1970. When both Los Angeles
teams shared the city from 1982 to 1994, the Raiders read RAI and the Rams
RAM so the two never collide on the chart.
Data comes from FiveThirtyEight's openly licensed NFL data for 1970
through 1998, with the devstopfix results set validating the week numbers
from 1978, and the community-maintained nflverse project from 1999, with
thanks to all three.
MLS 1996 to today · MLS stats API
The 1996-1999 shootout era is charted with its real rules: no draws
existed, a regulation win paid three points, a shootout win paid one.
Shootout wins count as wins in the record, exactly as the league's own
tables show them (the 1996 Galaxy won 19 games but only 49 points; the
Mutiny won 20 and 58).
Three wounds in the league's feed were repaired here, each verified
against the official final table: a 2001 San Jose at New England game
abandoned in a storm and recorded as a draw, a 2008 Houston 0-0 D.C.
match missing from the feed entirely (the Hurricane Ike makeup), and
four 2015 games the feed stamps 0-0 that actually had winners.
Standings sort by total points, the way the league's own live table
reads, with wins breaking a tie and points per game after that, so a
club at level points on fewer games ranks higher. Two finished seasons
are the exception and sort by points per game throughout: 2001, which
the league cut short after September 11 with teams at different game
counts, and 2020. Points per game was the league's own method for
those uneven schedules.
2020 follows the league's own accounting: the MLS is Back tournament
group games count toward standings, teams finished with anywhere from
18 to 23 games, and the chart shows two long flat stretches (the
four-month spring shutdown, and the tournament's knockout rounds, which
did not count).
The Supporters' Shield view shows the single-table, league-wide race
that decides the Shield.
Premier League 1992-93 to today · football-data.co.uk and footballcsv
Results come from football-data.co.uk's freely published per-season
files, which cover 1993-94 to today and update through the season, with
thanks. The league's very first season, 1992-93, predates their coverage
and comes from the footballcsv open data project instead. Five seasons
were cross-checked club by club against a second source, the 2025-26
table was verified against the season's final press coverage, and famous
seasons (the Invincibles' 90 points, Manchester City's 100, Derby's 11)
are re-asserted every time the data rebuilds.
The dashed line is not a playoff line here. It is the relegation
line, the pace of the best team inside the drop zone, because in England
the race at the bottom is the famous one. The line is era-true: the
first two seasons had 22 clubs with three going down, in 1994-95 four
went down to shrink the league to twenty, and from 1995-96 it is the
modern three-from-twenty, so the line sits at 20th, then 19th, then
18th place.
Every Premier League season scores three points for a win and one
for a draw; the league has never used another scheme. Records read in
the English order, wins-draws-losses, and the table sorts by points,
then goal difference, then goals scored, the league's own tiebreakers.
The chart's zero line is a point-per-game pace, a draw every game,
the same convention as MLS.
English football dresses overwhelmingly in two colors: fifteen of
the fifty-one Premier League clubs wear red first and sixteen wear
royal or navy blue, and a single 20-team table gives them nowhere to
hide. Colors here spread each family across light and dark steps, a
few clubs wear an official secondary instead (Brentford the bee amber,
Stoke their navy trim), some wear a shifted shade of their own color
so a rival's line stays tellable apart (Coventry a teal of their sky,
Forest a lighter Garibaldi red), and one-season visitors wear hues
English football never claimed, which is why Swindon are purple and
Luton are green. All 941 pairs of clubs that ever shared a season were
scored and the close ones were moved apart. That scoring is done in
full color here. Twenty lines on one table is past the point where a
palette can separate for a colorblind reader too, and chasing it was
costing clubs their real colors without buying the separation: Villa's
claret and Newcastle's black read almost identically to a colorblind
eye and neither color is negotiable, though full color separates them
easily. A few pairs still sit closer than the rest even in full
color, the tightest of them Manchester United and Sheffield United,
and Arsenal and Nottingham Forest. The end labels, the chips, and the
hover readout always carry identity, and none of them uses color.
How this chart knows a day is finished. The MLB and MLS charts
check each day game by game and refuse to draw it until every game
has finished, and the NFL does the same thing a week at a time. The
Premier League charts lean on the source instead, because
football-data lists only matches already played, which comes to the
same thing and always has: the rebuild runs late in the UK evening,
once the day's matches are done, and again at four in the morning to
catch anything the source posted late. Were that file ever updated
partway through a Saturday, an in-season day could appear a game
light, and the next run would put it right.
Finished seasons are not affected. The Championship works the same
way, from the same files one division down. The NHL, NBA, and WNBA
have no game-by-game check either, and lean on their own update times
instead, which the All leagues section below sets out.
2019-20 is the longest season on the site's EPL chart: 353 days,
with the spring COVID pause showing as a long flat stretch before the
June restart.
Points deductions are real and dated. Sources publish results, not
punishments, so the five times the league docked points are written
into the data by hand and the daily lines move the day each ruling
landed: Middlesbrough drop three points in January 1997 (the deduction
that relegated them), Portsmouth drop nine in March 2010, and in
2023-24 Everton fall ten in November, win four back on appeal in
February, lose two more in April, while Forest drop four in March.
Final tables here match the league's official ones, deductions and
all.
EFL Championship 1992-93 to today · football-data.co.uk and engsoccerdata
England's second tier, shown throughout under its current name, the EFL
Championship. It was the Football League First Division until 2004 and the
Football League Championship until 2016; the site uses today's name for
every season and records the older ones here. It has been 24 clubs playing
46 games apiece in every season since 1992-93.
Results come from the same football-data.co.uk files as the Premier
League, one division down, covering 1993-94 to today and updating through
the season. The very first season, 1992-93, is the one season the second
tier has no football-data or footballcsv file for, so it comes from
James P. Curley's engsoccerdata open dataset instead; the table it
produces matches the record books club by club.
There are three dashed lines here, not one, because the second tier
runs three races at once: the automatic promotion pace at 2nd, the last
play-off place at 6th, and the relegation line at the top of the drop
zone. That relegation line is era-true. Three clubs go down in a normal
season and it sits at 22nd, but in 1994-95 a fourth club went down, to
shrink the Premier League above from 22 clubs to 20, and the line sits at
21st.
Scoring, order, and tiebreakers match the Premier League: three
points for a win, records read wins-draws-losses, and the table sorts by
points, then goal difference, then goals scored. The chart's zero line is
a point-per-game pace, a draw every game.
Points deductions are the second tier's defining asterisk, far more
common down here than in the top flight: clubs were docked points fifteen
times across eleven seasons. Sources publish results, not punishments, so
each is written in by hand with the date it took effect, and the daily
line drops that day. The famous ones all land correctly. Derby lose
twenty-one points in 2021-22, twelve for administration in September and
nine more for accounting breaches in November, and finish bottom on 34.
Wigan's twelve for administration in 2019-20 are held back to the final
day, the point at which surviving on the pitch made the drop their
penalty, and it relegates them. Sheffield Wednesday begin 2020-21 already
twelve points down, win six back on appeal, and in 2025-26 lose eighteen
to finish on nothing, the lowest total the division has ever seen. And in
2025-26 the punishments decided the drop: Leicester and West Brom were
docked six and two, and Leicester went down having been safe on the field.
Every complete season's final table is checked against the official
record, champion, cutoff places, and every docked club's total, or the
build refuses to publish.
Colors are shared with the Premier League. The forty-five clubs that
have played in both wear the same line in each, so a club you know from
one is the same color in the other. Twenty-eight more that never reached
the Premier League in this era are added just for this chart. Three clubs
the top-flight palette had dressed in a free hue for a rare visit up
(Swindon in purple, Luton in emerald, Barnsley in copper) are regulars
down here, so they wear their own colors instead, red and orange and red.
Twenty-four lines on a single table is more than color alone can carry, so
a few clubs that only ever meet in this division wear a shifted shade to
stay apart, every pair that shared a season was scored in full color, and
the end labels, chips, and hover readout carry identity the rest of the
way. Like the Premier League, and for the same reason, this chart does not
claim to separate its lines for a colorblind reader.
2019-20 is the longest season anywhere on the site, 356 days, with the
spring COVID pause showing as a long flat stretch before the June
restart.
All leagues
Colors and colorblindness, stated plainly. Every palette here is built
so that no two teams meeting in a real season are hard to tell apart, and
that check includes the common kinds of colorblindness. It is a best
effort, and it is not perfect. How well it can work depends on how many
lines share a chart: leagues with divisions or conferences keep that
number low enough to reach, and colorblind separation stays a goal the
palette is held to. The Premier League and the Championship put twenty and
twenty-four clubs on one table, which is past the point where color alone
can separate them for anyone, colorblind or not. Those two are built to
separate in full color and stop there, rather than promise something they
cannot deliver. On every chart in every league the end labels, the chips,
and the hover readout carry identity, and none of them depends on color.
How a day is known to be finished is not the same in every league,
so here it is plainly. MLB and MLS go through a day game by game and
refuse to draw it until every game has ended. The NFL does the same
thing a week at a time: a week joins the chart only once all of its
games are final. The NHL, NBA, WNBA, Premier League, and Championship
have no game-by-game check. They take what the day's data holds and
rely on the update running late enough that the games are over, which
is the next note. During a season that means a team's record here can
briefly trail the league's live table until the next update, and a day
that ever landed a game light would put itself right on the next
run.
Days nobody plays still count. In MLB, MLS, the NBA, the WNBA, the
Premier League, and the Championship, the date under the title keeps up
with the calendar through a break: a league that last played Saturday
reads "through Tuesday" on a quiet Tuesday, because nothing that
happened since Saturday is missing. The moment a day has games, the
chart waits for them again. For the two English leagues, whose results
files list only matches already played, the date of the next game comes
from the season fixture calendars published by fixturedownload.com,
with thanks; only dates are read from them, and if that calendar is
ever unreachable the header simply waits at the last matchday. The NHL
already worked this way, and the NFL counts weeks, not days.
Charts update nightly, shortly after the last game goes final. The
North American leagues update in the small hours Pacific time. The two
English leagues run on a UK clock instead, late in the evening and
again at four in the morning, so a Saturday is drawn that same night
rather than waiting on an American morning. The NBA and WNBA come from
a home machine in the very early morning Pacific time, and on rare
mornings can run a day behind.
Teams are followed across moves and renames as franchises: Brooklyn
flows into Los Angeles, the MetroStars into the Red Bulls, the
Philadelphia A's through Kansas City and Oakland to today's city-less
Athletics. Team names are shown as they were in each season.
Line colors are each team's brand color where possible, but
legibility wins ties: some teams wear an official alternate so rivals
sharing a chart stay tellable apart, a few franchises change color at an
era boundary (the Blackhawks wear black before 1994, the Jazz wear New
Orleans purple in the 1970s, the SuperSonics wear green), and teams
without a usable identity (the long-dead New York Americans, the
brand-new Toronto Tempo) wear colors chosen purely so their lines can
be followed. Modern palettes are validated for colorblind
distinguishability; in deep-history charts crowded with defunct teams,
the end-of-line labels and the hover readout carry the load.
Historical teams otherwise wear their franchise's modern colors: the
1902 Athletics play in today's gold, Brooklyn in Dodger blue.
What to call these charts: charts like these are often called bump
charts, the season-long line races that show a whole league's standings
climbing and falling over the year, and that is a perfectly good name for
them. Strictly they are race charts, a close relative of the bump chart:
a classic bump chart plots rank order, first place against second against
third, while a race chart keeps the real distances, so a five game lead
looks five games wide and the y-axis is the classic games above .500 view.
They are drawn in the tradition of the pennant race charts newspapers once
printed. One of the sites that inspired this one calls its charts runnings,
a pun on standings worth preserving.
Found something that looks wrong? It might be. The repairs on this
page all started as a number that refused to match.
What this site counts analytics and privacy
Two visitor counters run here, Cloudflare Web Analytics and PostHog.
Between them they record which pages get opened, which race charts get
looked at, and which of the controls on the page get used. Nobody has an
account on this site and nothing on it asks who you are.
Neither counter sets a cookie, so there is no cookie banner to click.
Your screen is never recorded or played back, and no profile is built
about you. PostHog keeps a random id in your browser's own storage so that
a second visit is not counted as a second person; it is tied to nothing
else, and clearing your site data clears it.
Your approximate region, from Cloudflare, decides which race a page
opens on. It is never stored and never tied to who you are. Your browser
keeps the race you picked in each league, and the height you dragged a
chart to, so the site can open the same way next time; both stay on your
own device. The privacy page covers all of it.
If your browser sends a Do Not Track signal, PostHog counts nothing.
Cloudflare's counter does not read that signal, and never collects more
than the page address, where you came from, and basic browser
information.