Sport-specific career totals from the active profile tables, with VAL shown whenever the sport has a value file.
| Season | Age | Team | Min | G | A | Sh | SoT | KP | xG | xA | g+ | VAL |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2017 | 29 | POR | 1,309 | 0 | 0 | 9 | 0 | 0 | 0.69 | 0.00 | 0.00 | 2.5 |
| 2018 | 30 | POR | 3,323 | 5 | 1 | 27 | 12 | 5 | 2.65 | 0.42 | 1.88 | 8.8 |
| 2019 | 31 | POR | 2,204 | 2 | 0 | 22 | 7 | 2 | 2.19 | 0.15 | 0.96 | 5.8 |
| 2020 | 32 | POR | 1,984 | 2 | 0 | 8 | 3 | 1 | 1.33 | 0.09 | 0.02 | 4.6 |
| 2021 | 33 | POR | 2,488 | 2 | 1 | 12 | 3 | 6 | 1.37 | 0.80 | 0.00 | 6 |
| 2022 | 34 | POR | 1,731 | 0 | 0 | 5 | 1 | 2 | 0.23 | 0.10 | 0.00 | 3.2 |
| 2023 | 35 | POR | 1,014 | 1 | 0 | 7 | 1 | 1 | 1.58 | 0.03 | 0.59 | 2.9 |
| 2024 | 36 | POR | 48 | 0 | 0 | 1 | 0 | 0 | 0.04 | 0.00 | 0.00 | β |
Gave the Portland Timbers FC an entire corpus-attributed career β 8 seasons (2017β2024), one crest. The rarest loyalty in the sport.