Match summary
KuPS won 1-0 at home to AC Oulu. KuPS led 1-0 at half-time.
Agon Sadiku put KuPS ahead from a corner in the 23rd minute.
The chances backed that up: KuPS created 1.28 expected goals (xG) from 9 shots to AC Oulu's 0.90 from 9.
12 April 2025 · Veikkausliiga · 2025 · Referee Kalle Makinen
Half-time: 1–0
KuPS won 1-0 at home to AC Oulu. KuPS led 1-0 at half-time.
Agon Sadiku put KuPS ahead from a corner in the 23rd minute.
The chances backed that up: KuPS created 1.28 expected goals (xG) from 9 shots to AC Oulu's 0.90 from 9.
Running total of expected goals (xG) for each side through the match. xG rates each chance by how often similar shots are scored. A goal is marked where it was scored.
Tap a goal for the scorer and score.
Every shot and where it was taken from.
Hover or tap a shot for the player, minute and xG.
| 90′ | 6 | 0 | 64 | 1 | – | – | – | – |
| 90′ | – | 1 | 1 | 5 | – | 74 | 1 | – | – | – | ||
| 90′ | – | 3 | 1 | 2 | 2 | 107 | 2 | – | – | – | ||
Samuli Miettinen
|
90′ | – | 3 | – | 7 | 2 | 55 | – | – | – | – | |
Rasmus Tikkanen
Taken off
|
88′ | – | 2 | – | 1 | – | 36 | – | – | – | – | |
Derrick Agyei
Came on as a substitute
|
8′ | – | 1 | – | – | – | 3 | – | – | – | – |
| 90′ | – | 1 | 29 | 1 | 0.59 | – | 1 | 3 | 1 | 2 | |||
| 90′ | – | – | 75 | – | – | 1 | 4 | 8 | – | 5 | – | ||
Doni Arifi
Taken off
|
69′ | – | – | 68 | 1 | 0.03 | – | – | 3 | – | 1 | – | |
Petteri Pennanen
Taken off
|
88′ | – | – | 49 | 1 | – | – | 3 | 3 | 2 | 1 | – | |
Otto Ruoppi
Taken off
|
80′ | – | – | 31 | 2 | 0.02 | – | 1 | 2 | – | – | – | |
Arttu Heinonen
Came on as a substitute
|
26′ | – | – | 9 | – | – | 1 | – | 1 | 1 | – | – | |
Joslyn Luyeye-Lutumba
Came on as a substitute
|
16′ | – | – | 3 | – | – | – | – | 2 | 1 | 1 | – | |
Jerry Voutilainen
Came on as a substitute
|
8′ | – | – | 5 | – | – | – | – | – | 1 | – |
Agon Sadiku
Taken off
|
69′ | 1 | – | 1 | 1 | 0.59 | 0.18 | 1 | 4 | 3 | 19 | – | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dion Krasniqi
Came on as a substitute
|
26′ | – | – | 1 | – | 0.09 | 0.01 | 1 | 2 | – | 7 | – |
William Eskelinen
|
90′ | 3 | 1 | 28 | – | – | – | – | – |
|---|
Miika Koskela
|
90′ | – | 1 | – | 7 | 2 | 61 | 2 | – | – | – | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
Leon Bergsma
|
90′ | – | 4 | 1 | 4 | 1 | 62 | 1 | – | – | – | |
| 90′ | 1 | 1 | 1 | 2 | 1 | 63 | 1 | – | – | – | ||
| 90′ | – | 2 | – | 2 | – | 27 | 1 | – | – | – | ||
Santeri Silander
Taken off
|
87′ | – | 1 | – | 4 | 1 | 25 | 1 | – | – | – | |
Adramane Cassama
Came on as a substitute
|
9′ | – | – | – | – | – | 2 | 2 | – | – | – |
Matias Ojala
Taken off
|
55′ | – | – | 29 | – | – | 2 | 1 | 3 | – | – | – | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Abu Dumbuya
Taken off
|
70′ | – | – | 44 | – | – | – | 1 | 3 | 5 | 1 | ||
Danny Barrow
Taken off
|
55′ | – | – | 19 | 1 | 0.20 | – | 1 | 3 | – | – | – | |
| 90′ | – | – | 45 | 2 | 0.29 | – | 2 | 4 | – | 1 | – | ||
Julius Paananen
Came on as a substitute
|
40′ | – | – | 19 | – | – | – | 2 | 3 | – | 2 | – | |
Marokhy Ndione
Came on as a substitute
|
40′ | – | – | 5 | – | – | – | 1 | 5 | 1 | 1 | – | |
Aleksi Paananen
Came on as a substitute
|
25′ | – | – | 14 | – | – | – | – | – | 1 | – | – |
Justin Rennicks
Taken off
|
55′ | – | – | 1 | 1 | 0.20 | – | – | 2 | 1 | 7 | – | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Julius Körkkö
Came on as a substitute
|
40′ | – | – | 1 | 1 | 0.18 | 0.15 | 1 | 2 | – | 10 | – |
Every player who took the pitch, starters first and then substitutes. A dash means none. xG and xA are expected goals and assists.
Shots, expected goals, timeline, lineups, team and player statistics from Bzzoiro Sports Data (sports.bzzoiro.com). Results and odds from football-data.co.uk. Referee data before 2025/26 from the Transfermarkt datasets project.