betaider.com
Sign in

Borussia M.Gladbach v FC Heidenheim — Prediction, Odds & Stats

Saturday 4 April 2026 · GER-Bundesliga · 2526

Bundesliga xG Prediction generated

Shots
15 – 15
On target
7 – 6
Shots in box
6 – 10
xG per shot
0.07 – 0.06
Set-piece xG
0.02 – 0.35
Goals − xG
+0.91 – +1.12

AI prediction

ai-blend-oos No snapshot has been taken for this fixture yet; this is the stored price.
Borussia M.Gladbach win
54.2%
Draw
26.5%
FC Heidenheim win
19.3%

Probabilities, not certainties. How they are made: the methodology.

Was this pick made in advance?
A model whose name ends -oos is out of sample: it was fitted only on matches played before this one, so its pick is a genuine forecast rather than hindsight. Anything without that suffix was fitted on all available data.

What the chances say

Borussia M.Gladbach have scored 17 from 16.5 expected and conceded 25 from 23.1 — both ends in line with the chances, so the recent record is a fair reflection.

WLWLLLLLLW last 10 scored 17 from 16.5 xG conceded 25 from 23.1 xG

FC Heidenheim have scored 19 from 17.3 expected and conceded 19 from 18.3 — both ends in line with the chances, so the recent record is a fair reflection.

LLDDWLWDWL last 10 scored 19 from 17.3 xG conceded 19 from 18.3 xG

Finishing swings far more than chance creation, so a gap this size usually narrows. Over ten matches it is suggestive, not settled — a genuinely elite finisher beats expected goals for years.

What the model said

ModelHome / Draw / Away Expected goalsLikeliest score O2.5BTTSOutcome
ai-blend-oos 1.66–0.90 0% 0% 0% Home ✗
dc-xg-oos 2.08–1.17 2-1 10% 63% 60% Home ✗

A model whose name ends -oos was produced by the walk-forward backtest: it was fitted only on matches played before this one, so the pick is genuinely out of sample.

Reading the xG timeline
Each step up is a shot; the height of the step is how good the chance was. Dots mark goals. A side whose line climbs steadily created chances all match. A side that scored while its line stayed flat took a rare chance — that is finishing luck, and it rarely repeats.

Expected goals by minute

0.00.30.60.91.20'15'30'45'60'75'90'Wael Mohya 15' — goalPatrick Mainka 25' — goalMarnon Busch 63' — goalFranck Honorat 73' — goal
Borussia M.Gladbach 1.09 xGFC Heidenheim 0.88 xG
Reading the shot map
Each circle is a shot, placed where it was taken. Bigger means a better chance; filled circles are goals. Clusters near the goal mean a side worked good openings; lots of small circles far out means shooting from poor positions and hoping. Hover any circle for the player, minute and chance quality.

Shot map

Eren Sami Dinkci 6' — Blocked Shot (0.12 xG, Open Play)Wael Mohya 10' — Saved Shot (0.03 xG, Open Play)Wael Mohya 15' — Goal (0.12 xG, Open Play)Hennes Behrens 19' — Blocked Shot (0.04 xG, Open Play)Jonas Föhrenbach 20' — Blocked Shot (0.07 xG, From Corner)Patrick Mainka 20' — Missed Shot (0.03 xG, From Corner)Patrick Mainka 25' — Goal (0.10 xG, Set Piece)Kevin Diks 31' — Saved Shot (0.01 xG, Open Play)Franck Honorat 36' — Missed Shot (0.02 xG, Open Play)Rocco Reitz 36' — Blocked Shot (0.03 xG, Open Play)Budu Zivzivadze 39' — Saved Shot (0.08 xG, Open Play)Mathias Honsak 43' — Saved Shot (0.14 xG, Open Play)Eren Sami Dinkci 46' — Missed Shot (0.02 xG, Open Play)Patrick Mainka 46' — Saved Shot (0.07 xG, Set Piece)Julian Niehues 54' — Missed Shot (0.02 xG, Open Play)Eren Sami Dinkci 61' — Missed Shot (0.02 xG, Open Play)Marvin Pieringer 62' — Blocked Shot (0.02 xG, Open Play)Marnon Busch 63' — Goal (0.06 xG, Open Play)Rocco Reitz 65' — Missed Shot (0.02 xG, From Corner)Shuto Machino 65' — Blocked Shot (0.05 xG, Open Play)Kevin Stöger 68' — Saved Shot (0.01 xG, Open Play)Franck Honorat 73' — Goal (0.05 xG, Open Play)Jens Castrop 73' — Blocked Shot (0.02 xG, Open Play)Hugo Bolin 77' — Blocked Shot (0.06 xG, Open Play)Haris Tabakovic 82' — Saved Shot (0.06 xG, Open Play)Marnon Busch 84' — Blocked Shot (0.02 xG, Open Play)Haris Tabakovic 87' — Missed Shot (0.04 xG, Open Play)Jens Castrop 89' — Missed Shot (0.03 xG, Open Play)Hugo Bolin 90' — Saved Shot (0.53 xG, Open Play)Marvin Pieringer 93' — Saved Shot (0.08 xG, Set Piece)
Borussia M.Gladbach attacking right FC Heidenheim attacking left Marker size is xG; filled markers are goals.

Every shot

MinTeamPlayerxG SituationBody partResultAssisted by
6' FC Heidenheim Eren Sami Dinkci 0.12 Open Play Right Foot Blocked Shot Niklas Dorsch
10' Borussia M.Gladbach Wael Mohya 0.03 Open Play Right Foot Saved Shot Jens Castrop
15' Borussia M.Gladbach Wael Mohya 0.12 Open Play Right Foot Goal Jens Castrop
19' FC Heidenheim Hennes Behrens 0.04 Open Play Right Foot Blocked Shot Marvin Pieringer
20' FC Heidenheim Jonas Föhrenbach 0.07 From Corner Left Foot Blocked Shot —
20' FC Heidenheim Patrick Mainka 0.03 From Corner — Missed Shot Marvin Pieringer
25' FC Heidenheim Patrick Mainka 0.10 Set Piece — Goal Niklas Dorsch
31' Borussia M.Gladbach Kevin Diks 0.01 Open Play Right Foot Saved Shot Jens Castrop
36' Borussia M.Gladbach Franck Honorat 0.02 Open Play Right Foot Missed Shot Rocco Reitz
36' Borussia M.Gladbach Rocco Reitz 0.03 Open Play Right Foot Blocked Shot Jens Castrop
39' FC Heidenheim Budu Zivzivadze 0.08 Open Play Right Foot Saved Shot Patrick Mainka
43' FC Heidenheim Mathias Honsak 0.14 Open Play Left Foot Saved Shot Eren Sami Dinkci
46' FC Heidenheim Eren Sami Dinkci 0.02 Open Play Right Foot Missed Shot Julian Niehues
46' FC Heidenheim Patrick Mainka 0.07 Set Piece Right Foot Saved Shot Mathias Honsak
54' FC Heidenheim Julian Niehues 0.02 Open Play Right Foot Missed Shot Mathias Honsak
61' FC Heidenheim Eren Sami Dinkci 0.02 Open Play Right Foot Missed Shot —
62' FC Heidenheim Marvin Pieringer 0.02 Open Play Right Foot Blocked Shot Julian Niehues
63' FC Heidenheim Marnon Busch 0.06 Open Play Left Foot Goal —
65' Borussia M.Gladbach Rocco Reitz 0.02 From Corner Right Foot Missed Shot Florian Neuhaus
65' Borussia M.Gladbach Shuto Machino 0.05 Open Play Right Foot Blocked Shot Philipp Sander
68' Borussia M.Gladbach Kevin Stöger 0.01 Open Play Left Foot Saved Shot Franck Honorat
73' Borussia M.Gladbach Franck Honorat 0.05 Open Play Right Foot Goal Shuto Machino
73' Borussia M.Gladbach Jens Castrop 0.02 Open Play Right Foot Blocked Shot Kevin Stöger
77' Borussia M.Gladbach Hugo Bolin 0.06 Open Play Right Foot Blocked Shot Florian Neuhaus
82' Borussia M.Gladbach Haris Tabakovic 0.06 Open Play Right Foot Saved Shot —
84' FC Heidenheim Marnon Busch 0.02 Open Play Right Foot Blocked Shot Julian Niehues
87' Borussia M.Gladbach Haris Tabakovic 0.04 Open Play Left Foot Missed Shot Jens Castrop
89' Borussia M.Gladbach Jens Castrop 0.03 Open Play Right Foot Missed Shot Nico Elvedi
90' Borussia M.Gladbach Hugo Bolin 0.53 Open Play Left Foot Saved Shot Giovanni Reyna
93' FC Heidenheim Marvin Pieringer 0.08 Set Piece Right Foot Saved Shot Arijon Ibrahimovic

Players

Borussia M.Gladbach

PlayerMinGA ShKPxGxA xGChain
Franck Honorat AMC 90 1 0 2 1 0.07 0.01 0.30
Jens Castrop DML 90 0 1 2 5 0.05 0.23 0.88
Kevin Diks DC 90 0 0 1 0 0.01 0.00 0.22
Philipp Sander DC 90 0 0 0 1 0.00 0.05 0.17
Nico Elvedi DC 90 0 0 0 1 0.00 0.03 0.10
Moritz Nicolas GK 90 0 0 0 0 0.00 0.00 0.17
Shuto Machino FW 88 0 1 1 1 0.05 0.05 0.11
Rocco Reitz MC 73 0 0 2 1 0.06 0.02 0.11
Joe Scally DMR 73 0 0 0 0 0.00 0.00 0.06
Wael Mohya AMC 66 1 0 2 0 0.15 0.00 0.15
Yannick Engelhardt MC 66 0 0 0 0 0.00 0.00 0.01
Kevin Stöger Sub 24 0 0 1 1 0.01 0.02 0.75
Florian Neuhaus Sub 24 0 0 0 2 0.00 0.09 0.18
Hugo Bolin Sub 17 0 0 2 0 0.59 0.00 0.63
Haris Tabakovic Sub 17 0 0 2 0 0.10 0.00 0.13
Giovanni Reyna Sub 2 0 0 0 1 0.00 0.53 0.57

FC Heidenheim

PlayerMinGA ShKPxGxA xGChain
Patrick Mainka DC 90 1 0 3 1 0.20 0.08 0.12
Eren Sami Dinkci MR 90 0 0 3 1 0.16 0.14 0.30
Marvin Pieringer FW 90 0 0 2 2 0.11 0.07 0.21
Marnon Busch DR 90 1 0 2 0 0.08 0.00 0.27
Jonas Föhrenbach DC 90 0 0 1 0 0.07 0.00 0.02
Julian Niehues MC 90 0 0 1 3 0.02 0.06 0.07
Diant Ramaj GK 90 0 0 0 0 0.00 0.00 0.00
Niklas Dorsch MC 90 0 1 0 2 0.00 0.22 0.16
Mathias Honsak ML 65 0 0 1 2 0.14 0.09 0.16
Budu Zivzivadze FW 65 0 0 1 0 0.08 0.00 0.21
Hennes Behrens DL 52 0 0 1 0 0.04 0.00 0.12
Leonidas Stergiou Sub 38 0 0 0 0 0.00 0.00 0.00
Arijon Ibrahimovic Sub 25 0 0 0 1 0.00 0.08 0.00
Benedikt Gimber Sub 20 0 0 0 0 0.00 0.00 0.00
Mikkel Kaufmann Sub 5 0 0 0 0 0.00 0.00 0.00
betaider.com

Sport

Football sections

Preferences

Appearance
Aider Reading the Football model · online
Open the Radar
Bet slip
Open full page
↑↓ to move ↵ to open esc to close See all results

On this page

Match

What this page is for

One fixture in full. The model's probability for every market it prices, the prices stored against them, the teams expected to feature, and for a match already played, the shot map and the xG timeline.

How to read the shot map

Every shot is placed where it was taken and sized by its chance of being scored. A cluster of small marks from distance and a clean sheet is a side that was busy without ever threatening; two big marks and a defeat is a side that had the better of it and lost anyway. Both happen constantly, and both are invisible in the score.

How to read the xG timeline

The steps are chances as they arrived, so the shape shows who was on top and when. A flat line that jumps once near the end is a smash and grab.

Things to watch

The stored prediction is the one made before the match, kept deliberately so it can be judged afterwards. It is not re-fitted with hindsight.

Press esc to close Read the full guide