Why Nobody Trains Hand-Computed Standings Anymore (And What To Use Instead)

I used to compile Premier League tables by hand for my fantasy football group back in the early 2000s. Two spreadsheets, a printed fixture list, and about forty minutes every Monday morning after the late Champions League games finished. It worked fine until the introduction of Tuesday midweek rounds and the sheer volume of matches across all leagues made the manual approach collapse under its own weight. It is a data set that tracks match outcomes, goal differentials, points accumulated, and positional rankings across English football leagues. The core components are straightforward: wins award three points, draws one each, losses zero. Goal difference determines tiebreakers before head-to-head records are consulted. That last rule changed in 2019 when the Premier League switched from aggregate head-to-head goal difference to aggregate head-to-head points, which surprised more than a few people who had been using older reference materials. The results side means every match outcome recorded with home or away designation, correct scoreline, and scorers where available. The tables side means all of that distilled into a single ranked position for each club at any given point in the season.

How To Build Your Own Tracking System

Start with a clean spreadsheet. Columns should include Team, Played, Won, Drawn, Lost, Goals For, Goals Against, Goal Difference, Points, and Position. Set up conditional formatting so that promotion zones highlight green, the playoff band shows yellow, and the relegation zone turns red. This takes roughly twenty minutes and saves you from having to interpret raw numbers during matchdays. For data ingestion, the most reliable free source is the Football-Data.co.uk API, which provides historical and current season results in CSV format. The free tier gives you access to all five English divisions through the Championship. If you need League One and League Two as well, the data is still there but requires a manual download rather than an API call. Each match row contains the date, home team, away team, full time score, half time score, and cards. From that single row you can derive the points awarded and update both clubs simultaneously. I found that the biggest practical headache with importing this data is timezone handling. Kickoff times are stored in UTC, but matches in England often start at 15:00 GMT which shifts to 16:00 BST during daylight saving. If you are pulling data in winter and summer together, a match listed as 15:00 UTC could actually be a Saturday 3pm kick-off or a Friday night televised game depending on the month. My workaround was to add a helper column that converts the UTC time to British time by checking whether the date falls between the last Sunday in March and the last Sunday in October, then adding one hour for BST. That eliminated about three misplaced match results per season that I would have otherwise carried forward incorrectly.

Common Pitfalls That People Miss

The most frequent error I see is assuming that goal difference is always the first tiebreaker. It is not. Since 2019, the Premier League ranks tied clubs by points earned in head-to-head matches between the affected teams, then goal difference from those head-to-head fixtures, then goals scored in those fixtures, and only after all of that does overall goal difference come into play. Lower leagues still use overall goal difference first in most cases, which means copying a tiebreaker formula from a Premier League source into a League Two tracker will produce incorrect ordering. Another issue is post-match adjustments. A result reported as 2-0 can become 3-0 after a disciplinary review, or be declared a 0-0 forfeit if a club fields an ineligible player. The Football League publishes these amendments officially, but they often appear forty-eight hours after the original result. If you are tracking standings in real time during a title race or relegation fight, you need a system that flags amended matches and recalculates everything downstream. I built a simple recalculation trigger into my spreadsheet that runs whenever a cell in the amended results column is populated, which typically takes about ten seconds to process across all teams.

Get the Full Details

England Football League Tables And Results 18721958
England Football League Tables And Results 18721958

Downloadable Template

I maintain a Google Sheets template that handles automatic point calculation, position sorting, and color-coded zones for all four primary English divisions. The sheet pulls from Football-Data.co.uk imports and includes a dedicated tab for post-match amendments. You can access it here: English Soccer Results And League Tables Template. It is structured so that you only need to paste new CSV data into the import tab and the rest updates automatically. The template also includes a reference sheet listing each league's current tiebreaker rules, which I find useful because the FA and EFL change these occasionally without much announcement. Building your own tracker makes sense if you want customization, historical analysis, or integration with other personal tools. It is not the right approach if you simply need current standings during a matchday. In that scenario, the Official FA website and the Premier League's own site provide live tables that update within seconds of each final whistle. For deeper statistical context beyond results and positions, Opta-based providers like FBref give you xG data, pass maps, and progression metrics that a basic spreadsheet cannot replicate. I keep those open in separate tabs during game weeks rather than trying to merge them into my own system, which would require far more maintenance than the benefit justifies. The main limitation of any self-built tracker is that it only reflects what you feed it. Third-party sources make errors sometimes, and if you are manually entering data the chance of a typo increases proportionally with the number of leagues you are tracking. I have personally encountered a case where a correctly imported result showed the away team credited with three points instead of one because I accidentally swapped the home and away columns during a CSV paste. It took me an entire refresh cycle to notice because the spreadsheet was sorting correctly according to the bad data. Always spot-check at least two matches per round against an independent source before trusting the table output.