Five-Game Win Streaks
The last time each team won 5+ games in a row within a single season
Last 5+ Game Winning Streak by Team
Each dot is the most recent run of 5+ consecutive wins that stayed inside one season · most recent at top
Streaks by Team
#TeamStartedSeasonGamesOpponents
1Arsenal2026-04-252025-265Newcastle United, Fulham, West Ham United, Burnley, Crystal Palace
2Manchester City2025-11-292025-266Leeds United, Fulham, Sunderland, Crystal Palace, West Ham United, Nottingham Forest
3Aston Villa2025-11-092025-268Bournemouth, Leeds United, Wolverhampton Wanderers, Brighton and Hove Albion, Arsenal, West Ham United, Manchester United, Chelsea
4Liverpool2025-08-152025-265Bournemouth, Newcastle United, Arsenal, Burnley, Everton
5Wolverhampton Wanderers2025-03-152024-256Southampton, West Ham United, Ipswich Town, Tottenham Hotspur, Manchester United, Leicester City
6Newcastle United2025-03-102024-255West Ham United, Brentford, Leicester City, Manchester United, Crystal Palace
7Nottingham Forest2024-12-072024-256Manchester United, Aston Villa, Brentford, Tottenham Hotspur, Everton, Wolverhampton Wanderers
8Chelsea2024-11-232024-255Leicester City, Aston Villa, Southampton, Tottenham Hotspur, Brentford
9Manchester United2022-11-132022-235Fulham, Nottingham Forest, Wolverhampton Wanderers, Bournemouth, Manchester City
10Leicester City2019-10-192019-208Burnley, Southampton, Crystal Palace, Arsenal, Brighton and Hove Albion, Everton, Watford, Aston Villa
11Tottenham Hotspur2018-12-052018-195Southampton, Leicester City, Burnley, Everton, Bournemouth
12Burnley2018-03-032017-185Everton, West Ham United, West Bromwich Albion, Watford, Leicester City
13Crystal Palace2014-03-292013-145Chelsea, Cardiff City, Aston Villa, Everton, West Ham United
14Everton2014-03-012013-147West Ham United, Cardiff City, Swansea City, Newcastle United, Fulham, Arsenal, Sunderland
15Birmingham City2009-11-212009-105Fulham, Wolverhampton Wanderers, Wigan Athletic, West Ham United, Blackburn Rovers
16Bolton Wanderers2006-12-092006-075West Ham United, Aston Villa, Manchester City, Newcastle United, Portsmouth
17West Ham United2006-01-142005-065Aston Villa, Fulham, Arsenal, Sunderland, Birmingham City
18Wigan Athletic2005-09-242005-066Everton, Bolton Wanderers, Newcastle United, Aston Villa, Fulham, Portsmouth, Portsmouth
19Charlton Athletic2003-01-222002-035West Ham United, West Bromwich Albion, Sunderland, Everton, Aston Villa
20Leeds United2001-03-172000-016Charlton Athletic, Sunderland, Southampton, Liverpool, West Ham United, Chelsea
21Southampton2001-01-312000-015Leicester City, Bradford City, Middlesbrough, Manchester City, Everton
22Sunderland1999-09-111999-005Leicester City, Derby County, Sheffield Wednesday, Bradford City, Aston Villa
23Coventry City1998-01-311997-985Manchester City, Bolton Wanderers, Sheffield Wednesday, Southampton, Barnsley, Crystal Palace
24Wimbledon1996-09-041996-977Tottenham Hotspur, Everton, West Ham United, Southampton, Derby County, Sheffield Wednesday, Chelsea
25Middlesbrough1995-09-161995-965Coventry City, Manchester City, Blackburn Rovers, Sheffield Wednesday, Queens Park Rangers, Everton
26Blackburn Rovers1994-10-291994-957Nottingham Forest, Sheffield Wednesday, Tottenham Hotspur, Ipswich Town, Queens Park Rangers, Wimbledon, Southampton
27Sheffield Wednesday1992-12-281992-937Southampton, Norwich City, Tottenham Hotspur, Chelsea, Everton, Crystal Palace, Manchester City
28Norwich City1992-08-291992-935Crystal Palace, Nottingham Forest, Southampton, Chelsea, Sheffield Wednesday
SQL Query Used
-- Most recent run of 5+ consecutive wins within a single season, per team
copy (
    with team_games as (
        select
            match_id,
            season_label,
            kickoff_at,
            home_team_abbr as team_abbr,
            home_team_name as team_name,
            away_team_abbr as opponent_abbr,
            away_team_name as opponent_name,
            result = 'home_win' as is_win
        from "premier_league"."main"."fct_matches"
        union all
        select
            match_id,
            season_label,
            kickoff_at,
            away_team_abbr as team_abbr,
            away_team_name as team_name,
            home_team_abbr as opponent_abbr,
            home_team_name as opponent_name,
            result = 'away_win' as is_win
        from "premier_league"."main"."fct_matches"
    ),
    games_ranked as (
        select
            *,
            row_number() over (
                partition by team_abbr, season_label
                order by kickoff_at, match_id
            ) as rn_in_season
        from team_games
    ),
    wins as (
        select
            *,
            rn_in_season - row_number() over (
                partition by team_abbr
                order by season_label, kickoff_at, match_id
            ) as grp
        from games_ranked
        where is_win
    ),
    streaks as (
        select
            team_abbr,
            min(team_name) as team_name,
            season_label,
            count(*) as streak_length,
            min(kickoff_at) as started_at,
            min(rn_in_season) as start_game,
            grp
        from wins
        group by team_abbr, grp, season_label
        having count(*) >= 5
    ),
    last_streaks as (
        select
            *,
            row_number() over (
                partition by team_abbr
                order by started_at desc, start_game desc
            ) as rn
        from streaks
    )
    select
        team_name,
        season_label,
        date(started_at) as streak_start,
        streak_length,
        (
            select string_agg(opponent_name, ', ' order by kickoff_at)
            from wins w
            where w.team_abbr = ls.team_abbr and w.grp = ls.grp
        ) as opponents
    from last_streaks ls
    where rn = 1
    order by streak_start desc, team_name
)
to 'assets/data/five_game_streaks.csv' (header, delimiter ',')