Expected goals
Viborg FF expected goals (xG) 2026/2027
Superliga (Denmark) · after 9 matches · updated 4 Oct
Viborg FF's attacking and defensive expected goals in Superliga (Denmark) 2026/2027, compared with the results they produced and with the rest of the competition.
Viborg FF xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | FC Nordsjælland | 2.35 |
| #2 | Lyngby | 1.85 |
| #3 | FC København | 1.62 |
| =4 | AGF | 1.60 |
| =4 | Viborg FF | 1.60 |
| #6 | Odense Boldklub | 1.55 |
| #7 | FC Midtjylland | 1.44 |
| #8 | Brøndby IF | 1.22 |
| #9 | Silkeborg IF | 1.10 |
| #10 | AC Horsens | 1.09 |
| #11 | Randers FC | 1.06 |
| #12 | Sønderjyske Fodbold | 1.01 |
- League avg
- 1.46
- Total
- 14.43 9 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | FC Midtjylland | 1.11 |
| #2 | FC København | 1.16 |
| #3 | Viborg FF | 1.17 |
| #4 | Lyngby | 1.36 |
| #5 | FC Nordsjælland | 1.43 |
| #6 | Silkeborg IF | 1.47 |
| #7 | Brøndby IF | 1.54 |
| #8 | AGF | 1.56 |
| #9 | AC Horsens | 1.57 |
| #10 | Randers FC | 1.65 |
| #11 | Odense Boldklub | 1.68 |
| #12 | Sønderjyske Fodbold | 1.81 |
- League avg
- 1.46
- Total
- 10.55 9 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | FC Nordsjælland | +0.93 |
| #2 | Lyngby | +0.48 |
| #3 | FC København | +0.46 |
| #4 | Viborg FF | +0.43 |
| #5 | FC Midtjylland | +0.33 |
| #6 | AGF | +0.04 |
| #7 | Odense Boldklub | -0.13 |
| #8 | Brøndby IF | -0.32 |
| #9 | Silkeborg IF | -0.36 |
| #10 | AC Horsens | -0.48 |
| #11 | Randers FC | -0.59 |
| #12 | Sønderjyske Fodbold | -0.80 |
- League avg
- 0.00
- Total
- +3.88 9 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | FC Nordsjælland | 1.90 |
| #2 | FC København | 1.71 |
| #3 | Viborg FF | 1.70 |
| #4 | FC Midtjylland | 1.61 |
| #5 | Lyngby | 1.61 |
| #6 | AGF | 1.49 |
| #7 | Odense Boldklub | 1.30 |
| #8 | Silkeborg IF | 1.22 |
| #9 | Brøndby IF | 1.18 |
| #10 | AC Horsens | 1.05 |
| #11 | Randers FC | 0.99 |
| #12 | Sønderjyske Fodbold | 0.82 |
- League avg
- 1.38
- Total
- 15.30 vs 17 actual pts
Early-season figures: after 9 matches, per-match rates can move quickly.
What the xG says
Viborg FF's underlying numbers are among the best in Superliga (Denmark). They rank #4 for xG difference at +0.43 per match, built on elite chance quality rather than about average shot volume. Their 15 goals are 0.57 above 14.43 xG, while 17 points are 1.70 above 15.30 xPts. After only 9 matches, those gaps should still be read cautiously.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
Viborg FF are 0.57 goals above their xG after 9 matches.
- Goals
- 15
- xG
- 14.43
- Gap
- +0.57
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Fri 24/07 | Odense Boldklub | 1 | 2.04 | -1.04 | -1.04 |
| Sun 02/08 | Brøndby IF | 0 | 1.95 | -1.95 | -2.99 |
| Fri 07/08 | Sønderjyske Fodbold | 0 | 1.47 | -1.47 | -4.46 |
| Fri 14/08 | AGF | 2 | 1.03 | +0.97 | -3.49 |
| Sun 23/08 | FC København | 4 | 1.19 | +2.81 | -0.68 |
| Fri 28/08 | AC Horsens | 3 | 1.92 | +1.08 | +0.40 |
| Fri 04/09 | Lyngby | 0 | 1.52 | -1.52 | -1.12 |
| Sun 13/09 | Silkeborg IF | 1 | 0.71 | +0.29 | -0.83 |
| Sun 20/09 | FC Nordsjælland | 4 | 2.60 | +1.40 | +0.57 |
Viborg FF xG trend
Current form +0.39 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 7 of 9 matches. The worst was against AGF on Fri 14/08 (-1.06).
- npxG · last 6
- 1.39
- npxGA · last 6
- 1.01
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Fri 24/07 | Odense Boldklub | 2.03 | 1.51 | +0.52 | +0.52 |
| Sun 02/08 | Brøndby IF | 2.24 | 1.14 | +1.10 | +0.81 |
| Fri 07/08 | Sønderjyske Fodbold | 1.53 | 0.59 | +0.94 | +0.85 |
| Fri 14/08 | AGF | 0.84 | 1.90 | -1.06 | +0.38 |
| Sun 23/08 | FC København | 1.44 | 0.37 | +1.07 | +0.51 |
| Fri 28/08 | AC Horsens | 1.80 | 0.80 | +1.00 | +0.60 |
| Fri 04/09 | Lyngby | 1.54 | 0.47 | +1.07 | +0.66 |
| Sun 13/09 | Silkeborg IF | 0.66 | 1.09 | -0.43 | +0.53 |
| Sun 20/09 | FC Nordsjælland | 2.06 | 1.40 | +0.66 | +0.54 |
Each bar is one match's non-penalty xG minus the non-penalty xG against; the line is that difference averaged over the season up to each match, and it finishes on the dashed season average — 1.57 npxG and 1.03 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- tied number 5 hardest of 12 in Superliga (Denmark)
- 0.00 xG vs league average
- Over 9 league matches
- Last 5
- tied number 5 hardest of 12 in Superliga (Denmark)
- +0.06 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
0.00 xG vs league average · over 9 matches · tied number 5 hardest of 12
- FC Nordsjælland Home +0.41
- Silkeborg IF Away −0.30
- Lyngby Home 0.00
- AC Horsens Away −0.22
- FC København Home +0.38
- AGF Home +0.25
- Sønderjyske Fodbold Away −0.51
- Brøndby IF Away +0.05
- Odense Boldklub Home −0.04
Last 5
+0.06 xG vs league average · over 5 matches · tied number 5 hardest of 12
- FC Nordsjælland Home +0.41
- Silkeborg IF Away −0.30
- Lyngby Home 0.00
- AC Horsens Away −0.22
- FC København Home +0.38
Viborg FF shots and chance quality
Average volume, high quality. Viborg FF take 13.6 shots a match (league 13.9) at 0.12 npxG a shot (league 0.10), #8 in Superliga (Denmark) for volume and #2 for quality. 75% of their shots come from inside the box (league 64%), and set pieces produce 27% of their npxG (league 25%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Nordsjælland | 17.6 |
| #2 | AGF | 16.8 |
| #3 | Odense Boldklub | 15.3 |
| #4 | Brøndby IF | 15.2 |
| #5 | FC København | 15.0 |
| #6 | Lyngby | 14.8 |
| #7 | FC Midtjylland | 14.2 |
| #8 | Viborg FF | 13.6 |
| #9 | Sønderjyske Fodbold | 11.6 |
| #10 | Silkeborg IF | 11.4 |
| #11 | AC Horsens | 11.2 |
| #12 | Randers FC | 9.9 |
- League avg
- 13.9
- Total
- 122 shots from 9 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | FC Nordsjælland | 0.13 |
| #2 | Viborg FF | 0.12 |
| #3 | Randers FC | 0.10 |
| #4 | FC København | 0.10 |
| #5 | Lyngby | 0.10 |
| #6 | FC Midtjylland | 0.10 |
| #7 | Odense Boldklub | 0.09 |
| #8 | AC Horsens | 0.08 |
| #9 | Silkeborg IF | 0.08 |
| #10 | AGF | 0.08 |
| #11 | Sønderjyske Fodbold | 0.08 |
| #12 | Brøndby IF | 0.08 |
- League avg
- 0.10
- Total
- 14.14 npxG from 122 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC København | 11.9 |
| #2 | Silkeborg IF | 12.4 |
| #3 | Brøndby IF | 12.6 |
| =4 | FC Midtjylland | 12.9 |
| =4 | Lyngby | 12.9 |
| #6 | FC Nordsjælland | 13.3 |
| #7 | Odense Boldklub | 13.6 |
| =8 | AGF | 13.7 |
| =8 | Viborg FF | 13.7 |
| #10 | AC Horsens | 15.0 |
| #11 | Randers FC | 16.4 |
| #12 | Sønderjyske Fodbold | 18.2 |
- League avg
- 13.9
- Total
- 123 shots allowed from 9 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Viborg FF | 0.08 |
| #2 | FC Midtjylland | 0.08 |
| #3 | AGF | 0.09 |
| #4 | FC Nordsjælland | 0.09 |
| #5 | FC København | 0.09 |
| #6 | Randers FC | 0.09 |
| #7 | Lyngby | 0.10 |
| #8 | Sønderjyske Fodbold | 0.10 |
| #9 | AC Horsens | 0.10 |
| #10 | Brøndby IF | 0.11 |
| #11 | Odense Boldklub | 0.11 |
| #12 | Silkeborg IF | 0.12 |
- League avg
- 0.10
- Total
- 9.27 npxGA from 123 shots
Shot profile
75% inside the box
League avg 64%
From 92 of 122 shots over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
64% allowed inside the box
League avg 64%
From 79 of 123 shots allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
73% open play · 27% set pieces
League avg 25% set pieces
From 3.8 of 14.1 npxG over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
73% open play · 27% set pieces
League avg 25% set pieces
From 2.5 of 9.3 npxG allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
Viborg FF home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 5 | 4 |
| xG / match | 1.68 | 1.51 |
| xGA / match | 1.37 | 0.93 |
| xGD / match | +0.31 | +0.59 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.61 | 1.82 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every Viborg FF match by xG
This season
- Matches
- 9
- xG / match
- 1.60
- xGA / match
- 1.17
- xGD / match
- +0.43
- Points
- 17 of 27
- Sun 20/09 FC Nordsjælland H Best underlying xG 2.60 P xGA 1.32 xGD +1.28 xPts 2.23
- Sun 13/09 Silkeborg IF A xG 0.71 xGA 0.91 xGD -0.20 xPts 1.13
- Fri 04/09 Lyngby H xG 1.52 xGA 1.55 P xGD -0.03 xPts 1.34
- Fri 28/08 AC Horsens A xG 1.92 xGA 0.83 xGD +1.09 xPts 2.20
- Sun 23/08 FC København H xG 1.19 xGA 0.34 xGD +0.85 xPts 2.15
- Fri 14/08 AGF H Weakest underlying xG 1.03 xGA 1.92 xGD -0.89 xPts 0.72
- Fri 07/08 Sønderjyske Fodbold A xG 1.47 xGA 0.62 xGD +0.85 xPts 2.11
- Sun 02/08 Brøndby IF A xG 1.95 xGA 1.34 xGD +0.61 xPts 1.82
- Fri 24/07 Odense Boldklub H xG 2.04 xGA 1.72 xGD +0.32 xPts 1.60
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.00. Best and weakest underlying mark the highest and lowest xGD once 5 matches have xG. Against the chances marks a win with xGD of −1.00 or lower, or a loss with +1.00 or higher. P marks a side with at least 0.50 xG from penalties.
Viborg FF in Superliga (Denmark)
Attack
- xG / match =4 of 12
- Shots / match #8 of 12
- Chance quality #2 of 12
- Home xG #2 of 12
- Away xG #7 of 12
Defence
- xGA / match #3 of 12
- Shots allowed =8 of 12
- Chance quality allowed #1 of 12
About the data
- xG data
- Provided by TheStatsAPI, and stored as published.
- Derived metrics
- xGD, per-match rates, rankings and rolling averages are calculated from the match data.
- Model metrics
- xPts is produced by our probability model.