The Expected Assists (xA) Calculator estimates the chance each pass leads to an assist using location, pass type, pressure and shot context.
Expected Assists (xA) Calculator
Example Presets
Report an issue
Spotted a wrong result, broken field, or typo? Tell us below and we’ll fix it fast.
What Is a Expected Assists (xA) Calculator?
An xA calculator estimates how many assists a player should have produced, given the quality of the chances created by their passes. Instead of counting only completed assists, it sums the goal probabilities of the shots that followed a player’s key passes. This helps separate creative skill from teammate finishing luck and small sample swings.
Most systems tie xA to shot-based expected goals (xG). If a pass leads directly to a shot, the xG of that shot is credited as xA to the passer. If no shot occurs, the pass usually adds zero. Some tools also offer pass-only models that estimate the chance a pass becomes a goal without needing shot data, but the standard approach remains shot-anchored xA.

Formulas for Expected Assists (xA)
These formulas show how the calculator aggregates chance quality and scales results for fair comparison across minutes and matches. We use a shot-anchored approach by default, with optional rate adjustments for minutes played.
- Single-pass xA (shot-anchored): xA_pass = xG_shot that resulted from that pass (0 if no shot follows).
- Match xA: xA_match = Σ xA_pass over all key passes in the match.
- Player xA over a span: xA_total = Σ xA_match across matches.
- Per-90 rate: xA90 = 90 × xA_total / minutes_played.
- Contribution share: Player xA share = xA_player / xA_team during the same span.
- Optional pass-only variant: xA_pass ≈ P(shot | pass context) × P(goal | modeled shot context).
The shot-anchored method is transparent and widely used in public data. The pass-only variant helps when detailed shot data is missing, but it depends heavily on pass-context modeling. Choose the method that matches your data access and analysis goals.
How to Use Expected Assists (xA) (Step by Step)
Before you start, collect your event data: passes that lead to shots, their locations, and shot outcomes. Then confirm the pitch coordinate system and minutes played. Decide if you want totals, per-90 rates, or both.
- Identify key passes (the final pass before a shot) from your event logs.
- For each shot, grab its xG value from your xG source or model.
- Assign that xG to the passer as xA for that event.
- Sum xA across events to get match and span totals.
- Scale by minutes for xA per 90 to compare across players and leagues.
Use filters to split open play from set pieces, or to isolate crosses, cutbacks, and through balls. Context filters make comparisons fairer and reveal role-specific strengths.
Inputs, Assumptions & Parameters
The calculator supports a core set of inputs that work with publicly available data. You can also toggle optional fields when deeper context is present.
- Key Pass Events: list of passes that directly precede a shot, with timestamps.
- Shot xG Values: probability of the shot becoming a goal (0–1) from your xG model.
- Pass and Shot Locations: start/end pass points and shot coordinates on a standard pitch.
- Play Type Flags: open play, corner, free kick, throw-in, or penalty situations.
- Minutes Played: for per-90 calculations and load-adjusted comparisons.
Typical xG values range from near 0 (long shots) to 0.7+ (clear one-on-ones). Edge cases include rebounds, blocked shots without a registered attempt, mis-logged coordinates, or penalties (usually excluded from xA). Always align pitch dimensions and coordinate orientation with your data source.
Step-by-Step: Use the Expected Assists (xA) Calculator
Here’s a concise overview before we dive into the key points:
- Import or paste your event data and confirm the pitch coordinate system.
- Select your time range (single match, last five matches, full season).
- Mark key passes and link each to the resulting shot event.
- Load or compute xG for each shot, then assign that value as xA to the passer.
- Sum xA by player, by match, and by competition as needed.
- Enter minutes played to generate xA per 90 and per-position comparisons.
These points provide quick orientation—use them alongside the full explanations in this page.
Example Scenarios
A winger delivers a driven cross from 28 meters out on the right flank to the near post. The striker heads from 7 meters, central, under mild pressure. Your xG model gives this header a value of 0.25. The winger is credited with 0.25 xA for that pass. If the same player produces three similar chances in the match with xG values 0.25, 0.05, and 0.12, their match xA is 0.42. What this means
A central midfielder slides a through ball behind the back line. The forward shoots from 12 meters, slightly wide, with an xG of 0.38. The passer gets 0.38 xA for that action. The same player later hits a cutback that leads to a 0.35 xG shot and an outswinging corner that creates a 0.06 xG header. Total xA for the match becomes 0.79, even if no assist was recorded. What this means
Limits of the Expected Assists (xA) Approach
xA is powerful, but it is still a model-based estimate that depends on inputs and assumptions. Keep these constraints in mind when making decisions from the numbers.
- Teammate finishing and goalkeeper quality still matter; xA removes some luck but not all context.
- Event data granularity varies; missing pressure or body-part details can bias xG and xA.
- Different providers use different pitch grids and xG models, affecting absolute values.
- Some dangerous passes create chaos without an immediate shot, awarding zero xA despite value.
- Game state, opposition tactics, and weather can shift chance quality in ways models miss.
Treat xA as one layer in your analysis stack. Pair it with video, role-specific metrics, and opponent context for stronger conclusions.
Units & Conversions
Distance, speed, and angle units affect pass and shot context features, which in turn affect xG and xA. Use consistent units across your data sources to avoid scaling errors.
| Quantity | Common unit | Alternative unit | Conversion |
|---|---|---|---|
| Pitch length | m | yd | 1 m = 1.0936 yd |
| Pitch width | m | yd | 1 yd = 0.9144 m |
| Pass speed | m/s | km/h, mph | 1 m/s = 3.6 km/h = 2.2369 mph |
| Angles | degrees | radians | 1 rad = 57.2958°; 1° = 0.01745 rad |
| Time | seconds | minutes | 60 s = 1 min |
If your raw data uses yards and mph but your model expects meters and m/s, convert first. Keep a single pitch size and orientation across all calculations for consistent spatial features.
Tips If Results Look Off
Strange totals often come from data mismatches rather than bad modeling. Run these quick checks before reworking your approach.
- Verify pitch coordinates, origin, and direction match your xG model expectations.
- Confirm that only the first shot after a pass is counted as the key shot.
- Exclude penalties from xA unless your workflow requires them.
- Check minutes played for substitutes and stoppage time; then recompute xA90.
- Ensure set-piece flags and pass types are labeled consistently.
If issues persist, sample a few events, watch the clips, and compare logged positions to video. A small audit usually reveals the mismatch.
FAQ about Expected Assists (xA) Calculator
How is xA different from actual assists?
Assists depend on whether a teammate scores. xA credits the passer for the quality of the chance they created, even if no goal is scored.
Can xA predict future assists?
Yes, better than assists alone. Players with strong xA per 90 tend to collect assists over time as finishing luck evens out.
Does xA treat crosses and through balls differently?
Indirectly, yes. Crosses and through balls lead to shots from different locations and angles, producing different xG values and thus different xA.
Can I compare xA across leagues?
You can, but be careful. League styles, pitch sizes, and data providers vary. Normalize by minutes and consider provider-specific biases.
Key Terms in Expected Assists (xA)
Expected Goals (xG)
The probability a shot becomes a goal, estimated from features like location, angle, pressure, body part, and pass type.
Expected Assists (xA)
The sum of xG values from shots created by a player’s passes. It estimates how many assists they should have produced.
Key Pass
The final pass leading to a shot. In xA, the shot’s xG is credited to the player who made this pass.
Cutback
A low pass played from the end line back toward the penalty spot. Often creates high-xG shots due to better angles.
Through Ball
A pass split between defenders into space for a runner. Frequently leads to one-on-one shots with higher xG.
Cross
A ball delivered from wide areas into the box. Crosses vary widely in shot quality based on height, speed, and target zone.
Set Piece
Restarts like corners and free kicks. These can inflate or deflate xA depending on delivery quality and routines.
xA per 90 (xA90)
xA scaled to 90 minutes for fair comparisons across playing time. Calculated as 90 times total xA divided by minutes played.
References
Here’s a concise overview before we dive into the key points:
- The Analyst: What Is Expected Assists (xA)?
- FBref Glossary: Advanced metrics including xA and xG
- StatsBomb: Expected Goals (xG) Explained
- American Soccer Analysis: Expected Assists overview
- Friends of Tracking: Expected Goals modelling video
These points provide quick orientation—use them alongside the full explanations in this page.