The Replay Lab.

The data / Story 03

Story 03 · The data

Ghost games: the data

The story rests on 27,141 matches in the Premier League, La Liga, Serie A, the Bundesliga and Ligue 1, from 2010-11 to 2024-25. The match-by-match file is too big to post here, so these two files hold what the story uses: every league in every season, and the three periods with fans, without fans and with fans back.

2datasets 82rows in all 27,141matches behind them 27figures rechecked in R

The numbers in the story

And which dataset each comes from

2.16yellow cards a game for away teams with fans, against 1.88 for home teamsFrom the three periods
15% → 1%extra yellow cards for away teams, with fans and then withoutFrom the three periods
25% → 13%extra shots on target for home teams, with fans and then withoutFrom the three periods
46% / 40%of games won by the home team, with fans and then withoutFrom the three periods
45%of the first 82 Bundesliga games without fans won by the away teamFrom every league, every season

Dataset 1 of 2

79 rows · 13 columns

Every league, every season

One row for each league in each season, with results, yellow cards, fouls and red cards per match. Seasons that were cut in two by Covid have one row with fans and one without. Ligue 1 has no row without fans for 2019-20 because that season was cancelled.

Source
Match results from football-data.co.uk, via github.com/datasets/football-datasets (PDDL, free to reuse)
Without fans
Every match from 1 May 2020 to 30 June 2021. A few of these matches let in small, limited crowds; we count them as without fans.
How exact
Calculated by The Replay Lab from every match. Recomputed independently in R in October 2026, and every number checked matched.
Used for
The Bundesliga restart figures, the five-league chart and the season-by-season chart
Download CSVghost-games-by-league-season.csv
Show the whole file
league,season,crowd,matches,home_win_pct,draw_pct,away_win_pct,home_yellows_per_match,away_yellows_per_match,home_fouls_per_match,away_fouls_per_match,home_reds_per_match,away_reds_per_match
Bundesliga,2010-11,fans,306,46.1,20.6,33.3,1.441,1.951,15.513,17.15,0.088,0.098
La Liga,2010-11,fans,380,51.8,20.8,27.4,2.432,2.613,14.803,14.292,0.121,0.171
Ligue 1,2010-11,fans,380,41.3,34.2,24.5,1.442,1.861,15.7,16.311,0.076,0.137
Premier League,2010-11,fans,380,47.1,29.2,23.7,1.413,1.839,10.987,11.429,0.076,0.089
Serie A,2010-11,fans,380,47.1,25.5,27.4,1.776,2.168,15.126,15.829,0.126,0.158
Bundesliga,2011-12,fans,306,45.4,25.8,28.8,1.523,1.967,15.621,16.81,0.101,0.092
La Liga,2011-12,fans,380,49.5,24.7,25.8,2.658,2.942,14.892,14.492,0.139,0.203
Ligue 1,2011-12,fans,380,47.1,28.4,24.5,1.642,1.997,15.27,16.153,0.097,0.187
Premier League,2011-12,fans,380,45.0,24.5,30.5,1.376,1.724,10.079,10.284,0.066,0.103
Serie A,2011-12,fans,380,45.5,29.2,25.3,2.066,2.274,15.097,15.376,0.124,0.15
Bundesliga,2012-13,fans,306,42.5,25.5,32.0,1.703,1.977,15.438,16.105,0.101,0.105
La Liga,2012-13,fans,380,49.7,22.1,28.2,2.563,2.858,14.395,14.034,0.163,0.208
Ligue 1,2012-13,fans,380,44.7,28.4,26.8,1.453,1.811,13.813,14.497,0.1,0.182
Premier League,2012-13,fans,380,43.7,28.4,27.9,1.355,1.766,10.25,10.679,0.068,0.068
Serie A,2012-13,fans,380,46.6,25.3,28.2,2.309,2.491,15.206,15.409,0.121,0.195
Bundesliga,2013-14,fans,306,47.4,20.9,31.7,1.592,1.922,14.987,15.739,0.059,0.137
La Liga,2013-14,fans,380,47.1,22.6,30.3,2.313,2.597,14.108,13.792,0.147,0.155
Ligue 1,2013-14,fans,380,44.2,28.4,27.4,1.453,1.682,13.363,14.116,0.103,0.134
Premier League,2013-14,fans,380,47.1,20.5,32.4,1.429,1.761,10.495,11.037,0.042,0.097
Serie A,2013-14,fans,380,47.6,23.7,28.7,2.216,2.384,14.634,14.903,0.129,0.153
Bundesliga,2014-15,fans,306,47.4,26.8,25.8,1.68,1.944,14.859,15.676,0.095,0.078
La Liga,2014-15,fans,380,45.0,23.9,31.1,2.505,2.782,14.074,14.371,0.116,0.15
Ligue 1,2014-15,fans,380,47.6,23.2,29.2,1.558,1.797,13.192,14.339,0.087,0.118
Premier League,2014-15,fans,380,45.3,24.5,30.3,1.629,1.961,11.245,11.445,0.068,0.118
Serie A,2014-15,fans,380,40.0,31.6,28.4,2.274,2.532,14.826,15.505,0.142,0.168
Bundesliga,2015-16,fans,306,44.1,23.2,32.7,1.791,2.003,14.183,14.863,0.052,0.075
La Liga,2015-16,fans,380,48.2,24.2,27.6,2.495,2.774,13.603,13.595,0.118,0.168
Ligue 1,2015-16,fans,380,42.1,28.4,29.5,1.737,2.021,12.961,13.753,0.158,0.15
Premier League,2015-16,fans,380,41.3,28.2,30.5,1.447,1.655,10.058,11.463,0.066,0.089
Serie A,2015-16,fans,380,46.1,25.0,28.9,2.279,2.587,15.126,15.268,0.139,0.2
Bundesliga,2016-17,fans,306,49.0,24.2,26.8,1.696,2.039,13.788,14.83,0.092,0.092
La Liga,2016-17,fans,380,47.6,23.4,28.9,2.347,2.65,14.068,13.821,0.089,0.142
Ligue 1,2016-17,fans,380,48.9,24.7,26.3,1.533,1.768,12.338,12.699,0.071,0.187
Premier League,2016-17,fans,380,49.2,22.1,28.7,1.745,1.887,11.063,11.658,0.055,0.053
Serie A,2016-17,fans,380,48.4,21.1,30.5,2.074,2.326,13.979,13.947,0.095,0.153
Bundesliga,2017-18,fans,306,45.4,27.1,27.5,1.559,1.824,12.928,13.794,0.072,0.069
La Liga,2017-18,fans,380,47.1,22.6,30.3,2.339,2.676,13.734,13.953,0.111,0.079
Ligue 1,2017-18,fans,380,45.5,25.3,29.2,1.771,2.063,12.895,13.25,0.111,0.121
Premier League,2017-18,fans,380,45.5,26.1,28.4,1.479,1.566,10.218,10.484,0.045,0.058
Serie A,2017-18,fans,380,43.2,21.8,35.0,1.908,2.163,12.742,12.811,0.095,0.139
Bundesliga,2018-19,fans,306,45.1,23.9,31.0,1.539,1.915,11.033,11.343,0.052,0.088
La Liga,2018-19,fans,380,44.2,28.9,26.8,2.529,2.642,13.632,13.45,0.087,0.121
Ligue 1,2018-19,fans,380,43.2,28.9,27.9,1.655,2.018,12.834,13.521,0.116,0.145
Premier League,2018-19,fans,380,47.6,18.7,33.7,1.526,1.684,10.153,10.305,0.047,0.076
Serie A,2018-19,fans,380,43.7,28.4,27.9,2.137,2.513,12.845,13.253,0.103,0.134
Bundesliga,2019-20,empty,82,31.7,23.2,45.1,2.159,1.988,12.768,12.5,0.098,0.085
Bundesliga,2019-20,fans,224,43.3,21.9,34.8,1.781,2.174,11.027,11.652,0.054,0.125
La Liga,2019-20,empty,110,40.9,27.3,31.8,2.482,2.127,13.682,13.273,0.118,0.109
La Liga,2019-20,fans,270,47.8,27.8,24.4,2.574,2.77,13.656,14.0,0.093,0.133
Ligue 1,2019-20,fans,279,48.0,25.1,26.9,1.796,2.007,12.903,13.093,0.125,0.125
Premier League,2019-20,empty,92,46.7,21.7,31.5,1.457,1.424,11.13,11.228,0.054,0.054
Premier League,2019-20,fans,288,44.8,25.0,30.2,1.628,1.875,10.278,10.903,0.059,0.062
Serie A,2019-20,empty,124,44.4,21.8,33.9,2.177,2.065,13.621,12.96,0.097,0.089
Serie A,2019-20,fans,256,40.2,22.7,37.1,2.562,2.938,13.777,14.238,0.125,0.168
Bundesliga,2020-21,empty,306,42.2,26.5,31.4,1.748,1.876,12.157,12.533,0.042,0.065
La Liga,2020-21,empty,380,41.6,28.7,29.7,2.158,2.3,13.289,13.203,0.1,0.1
Ligue 1,2020-21,empty,380,37.4,25.0,37.6,1.953,1.932,13.068,12.555,0.116,0.145
Premier League,2020-21,empty,380,37.9,21.8,40.3,1.424,1.447,11.224,10.55,0.05,0.071
Serie A,2020-21,empty,380,40.8,25.5,33.7,2.184,2.208,13.676,13.821,0.074,0.108
Bundesliga,2021-22,fans,306,46.7,23.9,29.4,1.637,1.876,11.588,12.183,0.023,0.056
La Liga,2021-22,fans,380,43.4,29.2,27.4,2.497,2.645,13.616,12.821,0.129,0.103
Ligue 1,2021-22,fans,380,42.6,26.8,30.5,1.803,2.142,11.526,11.789,0.116,0.163
Premier League,2021-22,fans,380,42.9,23.2,33.9,1.653,1.745,10.055,10.158,0.05,0.063
Serie A,2021-22,fans,380,38.9,25.8,35.3,2.126,2.584,13.063,13.497,0.124,0.111
Bundesliga,2022-23,fans,306,47.4,24.5,28.1,1.925,2.216,11.712,11.938,0.059,0.082
La Liga,2022-23,fans,380,47.9,23.4,28.7,2.392,2.626,13.013,12.882,0.163,0.192
Ligue 1,2022-23,fans,380,42.9,24.2,32.9,1.537,1.85,12.15,12.65,0.15,0.113
Premier League,2022-23,fans,380,48.4,22.9,28.7,1.671,1.916,10.597,10.932,0.047,0.026
Serie A,2022-23,fans,380,42.4,26.3,31.3,2.084,2.424,12.003,12.574,0.089,0.089
Bundesliga,2023-24,fans,306,43.8,26.5,29.7,1.922,2.219,11.124,11.291,0.078,0.101
La Liga,2023-24,fans,380,43.9,28.2,27.9,2.324,2.445,12.876,12.979,0.111,0.118
Ligue 1,2023-24,fans,306,39.2,26.5,34.3,1.778,2.114,12.176,12.758,0.111,0.118
Premier League,2023-24,fans,380,46.1,21.6,32.4,1.911,2.263,10.745,11.347,0.068,0.082
Serie A,2023-24,fans,380,41.8,29.5,28.7,1.982,2.337,11.761,12.3,0.087,0.087
Bundesliga,2024-25,fans,306,38.6,25.2,36.3,1.816,2.039,10.466,10.951,0.079,0.102
La Liga,2024-25,fans,380,44.5,25.5,30.0,2.158,2.324,12.253,12.479,0.103,0.103
Ligue 1,2024-25,fans,306,46.7,20.3,33.0,1.801,1.948,11.928,12.088,0.105,0.108
Premier League,2024-25,fans,380,40.8,24.5,34.7,1.905,2.145,10.789,11.276,0.068,0.068
Serie A,2024-25,fans,380,39.7,28.4,31.8,1.724,2.097,12.184,12.818,0.095,0.103
leagueseasoncrowdmatcheshome_win_pctdraw_pctaway_win_pcthome_yellows_per_matchaway_yellows_per_matchhome_fouls_per_matchaway_fouls_per_matchhome_reds_per_matchaway_reds_per_match
Bundesliga2010-11fans30646.120.633.31.4411.95115.51317.150.0880.098
La Liga2010-11fans38051.820.827.42.4322.61314.80314.2920.1210.171
Ligue 12010-11fans38041.334.224.51.4421.86115.716.3110.0760.137
Premier League2010-11fans38047.129.223.71.4131.83910.98711.4290.0760.089
Serie A2010-11fans38047.125.527.41.7762.16815.12615.8290.1260.158
Bundesliga2011-12fans30645.425.828.81.5231.96715.62116.810.1010.092
La Liga2011-12fans38049.524.725.82.6582.94214.89214.4920.1390.203
Ligue 12011-12fans38047.128.424.51.6421.99715.2716.1530.0970.187
Premier League2011-12fans38045.024.530.51.3761.72410.07910.2840.0660.103
Serie A2011-12fans38045.529.225.32.0662.27415.09715.3760.1240.15
Bundesliga2012-13fans30642.525.532.01.7031.97715.43816.1050.1010.105
La Liga2012-13fans38049.722.128.22.5632.85814.39514.0340.1630.208
Ligue 12012-13fans38044.728.426.81.4531.81113.81314.4970.10.182
Premier League2012-13fans38043.728.427.91.3551.76610.2510.6790.0680.068
Serie A2012-13fans38046.625.328.22.3092.49115.20615.4090.1210.195
Bundesliga2013-14fans30647.420.931.71.5921.92214.98715.7390.0590.137
La Liga2013-14fans38047.122.630.32.3132.59714.10813.7920.1470.155
Ligue 12013-14fans38044.228.427.41.4531.68213.36314.1160.1030.134
Premier League2013-14fans38047.120.532.41.4291.76110.49511.0370.0420.097
Serie A2013-14fans38047.623.728.72.2162.38414.63414.9030.1290.153
Bundesliga2014-15fans30647.426.825.81.681.94414.85915.6760.0950.078
La Liga2014-15fans38045.023.931.12.5052.78214.07414.3710.1160.15
Ligue 12014-15fans38047.623.229.21.5581.79713.19214.3390.0870.118
Premier League2014-15fans38045.324.530.31.6291.96111.24511.4450.0680.118
Serie A2014-15fans38040.031.628.42.2742.53214.82615.5050.1420.168
Bundesliga2015-16fans30644.123.232.71.7912.00314.18314.8630.0520.075
La Liga2015-16fans38048.224.227.62.4952.77413.60313.5950.1180.168
Ligue 12015-16fans38042.128.429.51.7372.02112.96113.7530.1580.15
Premier League2015-16fans38041.328.230.51.4471.65510.05811.4630.0660.089
Serie A2015-16fans38046.125.028.92.2792.58715.12615.2680.1390.2
Bundesliga2016-17fans30649.024.226.81.6962.03913.78814.830.0920.092
La Liga2016-17fans38047.623.428.92.3472.6514.06813.8210.0890.142
Ligue 12016-17fans38048.924.726.31.5331.76812.33812.6990.0710.187
Premier League2016-17fans38049.222.128.71.7451.88711.06311.6580.0550.053
Serie A2016-17fans38048.421.130.52.0742.32613.97913.9470.0950.153
Bundesliga2017-18fans30645.427.127.51.5591.82412.92813.7940.0720.069
La Liga2017-18fans38047.122.630.32.3392.67613.73413.9530.1110.079
Ligue 12017-18fans38045.525.329.21.7712.06312.89513.250.1110.121
Premier League2017-18fans38045.526.128.41.4791.56610.21810.4840.0450.058
Serie A2017-18fans38043.221.835.01.9082.16312.74212.8110.0950.139
Bundesliga2018-19fans30645.123.931.01.5391.91511.03311.3430.0520.088
La Liga2018-19fans38044.228.926.82.5292.64213.63213.450.0870.121
Ligue 12018-19fans38043.228.927.91.6552.01812.83413.5210.1160.145
Premier League2018-19fans38047.618.733.71.5261.68410.15310.3050.0470.076
Serie A2018-19fans38043.728.427.92.1372.51312.84513.2530.1030.134
Bundesliga2019-20empty8231.723.245.12.1591.98812.76812.50.0980.085
Bundesliga2019-20fans22443.321.934.81.7812.17411.02711.6520.0540.125
La Liga2019-20empty11040.927.331.82.4822.12713.68213.2730.1180.109
La Liga2019-20fans27047.827.824.42.5742.7713.65614.00.0930.133
Ligue 12019-20fans27948.025.126.91.7962.00712.90313.0930.1250.125
Premier League2019-20empty9246.721.731.51.4571.42411.1311.2280.0540.054
Premier League2019-20fans28844.825.030.21.6281.87510.27810.9030.0590.062
Serie A2019-20empty12444.421.833.92.1772.06513.62112.960.0970.089
Serie A2019-20fans25640.222.737.12.5622.93813.77714.2380.1250.168
Bundesliga2020-21empty30642.226.531.41.7481.87612.15712.5330.0420.065
La Liga2020-21empty38041.628.729.72.1582.313.28913.2030.10.1
Ligue 12020-21empty38037.425.037.61.9531.93213.06812.5550.1160.145
Premier League2020-21empty38037.921.840.31.4241.44711.22410.550.050.071
Serie A2020-21empty38040.825.533.72.1842.20813.67613.8210.0740.108
Bundesliga2021-22fans30646.723.929.41.6371.87611.58812.1830.0230.056
La Liga2021-22fans38043.429.227.42.4972.64513.61612.8210.1290.103
Ligue 12021-22fans38042.626.830.51.8032.14211.52611.7890.1160.163
Premier League2021-22fans38042.923.233.91.6531.74510.05510.1580.050.063
Serie A2021-22fans38038.925.835.32.1262.58413.06313.4970.1240.111
Bundesliga2022-23fans30647.424.528.11.9252.21611.71211.9380.0590.082
La Liga2022-23fans38047.923.428.72.3922.62613.01312.8820.1630.192
Ligue 12022-23fans38042.924.232.91.5371.8512.1512.650.150.113
Premier League2022-23fans38048.422.928.71.6711.91610.59710.9320.0470.026
Serie A2022-23fans38042.426.331.32.0842.42412.00312.5740.0890.089
Bundesliga2023-24fans30643.826.529.71.9222.21911.12411.2910.0780.101
La Liga2023-24fans38043.928.227.92.3242.44512.87612.9790.1110.118
Ligue 12023-24fans30639.226.534.31.7782.11412.17612.7580.1110.118
Premier League2023-24fans38046.121.632.41.9112.26310.74511.3470.0680.082
Serie A2023-24fans38041.829.528.71.9822.33711.76112.30.0870.087
Bundesliga2024-25fans30638.625.236.31.8162.03910.46610.9510.0790.102
La Liga2024-25fans38044.525.530.02.1582.32412.25312.4790.1030.103
Ligue 12024-25fans30646.720.333.01.8011.94811.92812.0880.1050.108
Premier League2024-25fans38040.824.534.71.9052.14510.78911.2760.0680.068
Serie A2024-25fans38039.728.431.81.7242.09712.18412.8180.0950.103

All 79 rows. Games without fans are in red.

Dataset 2 of 2

3 rows · 11 columns

With fans, without fans, fans back

All five leagues added together for the three periods. The percentages in the story compare home and away teams: 2.16 yellow cards against 1.88 is 15% more for away teams.

Source
The same matches as dataset 1
How exact
Averages of every match, so exact for these leagues. Recomputed independently in R in October 2026.
Used for
The yellow cards, wins, shots on target and “fans back” figures, and the 100-games chart
Download CSVghost-games-three-periods.csv
Show the whole file
period,matches,home_win_pct,draw_pct,away_win_pct,home_yellows_per_match,away_yellows_per_match,home_shots_on_target_per_match,away_shots_on_target_per_match,home_goals_per_match,away_goals_per_match
"with fans, Aug 2010 to Mar 2020",17751,45.9,25.2,28.9,1.88,2.16,5.12,4.09,1.55,1.17
"no fans, May 2020 to Jun 2021",2234,40.2,25.1,34.7,1.93,1.95,4.71,4.16,1.48,1.33
"fans back, Jul 2021 to May 2025",7156,43.4,25.4,31.2,1.94,2.21,4.84,3.99,1.55,1.27
periodmatcheshome_win_pctdraw_pctaway_win_pcthome_yellows_per_matchaway_yellows_per_matchhome_shots_on_target_per_matchaway_shots_on_target_per_matchhome_goals_per_matchaway_goals_per_match
with fans, Aug 2010 to Mar 20201775145.925.228.91.882.165.124.091.551.17
no fans, May 2020 to Jun 2021223440.225.134.71.931.954.714.161.481.33
fans back, Jul 2021 to May 2025715643.425.431.21.942.214.843.991.551.27

The games without fans are in red.

What we are still checking

Updated 19 October 2026

Use this data

Free for students and teachers

Students

Pick your league

Choose one league and plot away yellows minus home yellows for every season. Does the gap vanish in the red rows?

Teachers

A natural experiment

Fans weren’t removed at random. Ask the class what else changed in 2020, and how a researcher could rule it out.

Everyone

Credit us

Use the files however you like. Please credit “The Replay Lab” and link back to this page.