← All tools

Shot Map & xG Visualizer

Click the pitch to log a shot, pick its details, and get an instant Expected Goals (xG) estimate. Watch the cumulative xG race build up as the match goes on. Everything runs in your browser.

About this xG model (click to expand)

This is a simplified, educational Expected Goals model — not a professional Opta/StatsBomb-grade model (those are trained on hundreds of thousands of shots with defender positions, shot speed, assist type, etc.). It uses just two geometric inputs, which is the classic textbook starting point for xG:

  • Distance — straight-line distance in metres from the shot location to the centre of the goal.
  • Angle — the angle the goal mouth subtends from the shot location (how much open goal the shooter can actually see), computed geometrically from the two post positions. A shot 6m out but right on the byline has almost no angle, even though it's close.

Formula: xG = 1 / (1 + exp(-(b0 + b1·distance + b2·angle))) with b0 = -2.65, b1 = -0.0625 (per metre), b2 = 2.65 (per radian). These were hand-tuned so a close, central shot (~6m, wide open angle) lands around 0.40–0.50 xG, a 30m strike lands around 0.02–0.05 xG, and a shot from just as close but hit from a near-zero angle (tight to the byline) drops back under 0.08 — in the right ballpark of published simple xG models, and a concrete illustration that angle matters as much as raw distance.

Adjustments on top of the geometric estimate:

  • Headers ×0.68 and other body parts ×0.60 — headers/awkward contacts convert at a noticeably lower rate than clean footed strikes from the same spot.
  • Penalties are fixed at 0.76 regardless of geometry — real penalty conversion doesn't vary by "where you clicked", so it skips the geometric model entirely.
  • Free kicks ×0.75 and corner-derived / set-piece shots ×0.85–0.90 — a modest penalty for a defended, moving-ball situation.

Treat the numbers as illustrative, not a betting model.

Home Away
Filter
Click anywhere on the pitch to log a shot. Click an existing marker to see its details.
New shot
Shot log