Analyze your Halo 5: Guardians and Halo Infinite stats match by match, track your progress over time, and compare your performance with your squad.
v7.3 — Overtime, first kill / first death & a repaired Achievements page
A release focused on reading a match better: an overtime flag on every match that went past regulation time, a new first kill / first death chart on three pages, and a round of repairs on Halo 5, on the language switch and on the demo.
Overtime
- A badge when the match went past regulation time — in the match header and as a pill in the Explorer, with the extra time played
- Your whole history at once — the flag is computed as you read, so every past match is covered without waiting for a re-sync; Halo 5 stays deliberately unflagged until its regulation times are declared
First kill / first death
- A new chart replacing the old histograms — one lane per player, first kills above, first deaths below, with each median and the advance window between the two
- On three pages — Squad ("Dynamics" tab), Timeseries ("Progression" tab) and session detail, including the session comparison panel
Halo 5
- Achievements page repaired — the page returned an error instead of your milestones, and the section title now stays in place whether the grid is loading, empty or in error
Reading in your language
- Commendations follow the language switch — their labels used to stay in the previous language until you reloaded the page, and "Headshots" showed up under its raw field name
Match view & demo
- A missing objective statistic no longer breaks the scoreboard — the match no longer reads as incomplete; only the Objectives section stays empty
- A more complete demo — improvement campaigns and objective statistics are visible at last, and player identifiers are anonymized as well
- Rank history — LUSR and CSR rating per playlist over time, with your rank name at each step
- Path to Hero — projection chart showing how close you are to the Hero rank
- Career KPI cards — 8 cards at a glance: matches played, total time, frags, deaths, assists, accuracy, time alive, W/L/T/DNF bar — each color-coded against your all-time average
- Commendations — monitor your Halo commendations with medal grids and per-medal distributions
- XP progression — XP curve with multi-player comparison overlay
- Objectives — create individual or squad challenges (collective or competitive) on any Halo metric with configurable windows, tiers (Normal / Heroic / Legendary / Mythic), and narrative arcs; earn Prestige Points (PP) on completion
- Prestige — PP leaderboard in Palmares ranking you against your squad and relations; four tiers with color-coded badges
- Explorer — browse all your matches with cascade filters (map, mode, playlist, outcome, date, session), partial match ID search, and encounter badges
- Last Match — full scoreboard with K/D, medals, weapons, performance score, impact badges, and encounter history panel for recurring opponents
- Kill cadence — kills by 15-second intervals for you and the enemy team, with moving-average overlay — see exactly when the pace shifted
- Match intensity heatmap — kill density per game phase (early/mid/late) across all your matches at a glance
- Comeback badges — Remontada (you were losing and came back), Collapse (you were winning and blew it), Contre-Remontada (you stopped the enemy comeback)
- Session comparison — side-by-side analysis of two play sessions
- Activity heatmap — win rate and activity by day of week and time slot
- Unified squad view — same rich charts for 1, 2, or 3 friends; works for all party sizes
- Per-player intensity heatmap — see each squad member's kill profile by game phase across shared matches
- Squad records — career bests for each member (K/D, kills, streaks…) with per-map breakdown
- Synergy radar — per-minute stats and complementarity across your squad
- Kill cadence per player — synchronized kill tempo across shared matches
- Impact timeline — narrative badges (Top Killer, Silent Hero, False Brother…) per match
- Media library — browse screenshots and video clips linked to their match; filter by owner, map, mode, outcome, or solo/squad context
- Auto-indexing — clips re-scanned automatically every few hours and after each sync
- Manual reassociation — fix a wrongly linked clip in one click: a built-in picker suggests matches around the capture timestamp (±15 / ±60 / ±180 min) with map thumbnails, outcome and full lobby
- In-app notification center — per-player feed with unread badge, category filters, day-grouped timeline, and bulk actions; 60-second live refresh; preferences per player
- Discord alerts — configurable notifications after sync and after backfill, independently
- One-click setup — Xbox Device Code login (
xbox.com/activate) with automatic player provisioning; no Azure account required
Main dashboard: multi-page navigation and real-time interactive charts.
Advanced filters (type, playlist, mode, map,session/period), Time-to-First-Kill vs First Death distribution, and per-match performance score.
| KDA | Cumulative performance & trend |
|---|---|
![]() |
![]() |
K/D ratio with trend, cumulative performance score, average lifespan and combat skills.
| Distributions | Correlations |
|---|---|
![]() |
![]() |
Histograms for accuracy/kills/scores with means and medians — scatter plots (time alive vs kills, etc.).
Win rate and activity heatmap by day of week and time slot.
| Last match | Scoreboard |
|---|---|
![]() |
![]() |
| Impact & Dominance | Antagonists |
![]() |
![]() |
Full scoreboard for your latest game (searchable by match ID) — and your most formidable rivals, MVP/LVP, scoreboard, commendations (Halo 5 inspired) grid and medal distributions.
| Squad overview | Session stats |
|---|---|
![]() |
![]() |
| Teammates performance | Squad ranking |
![]() |
![]() |
Filter your sessions by squad: compare your stats when playing with friends and see how you and your teammates perform across shared matches.
| Career | Ranks (LUSR/CSR) |
|---|---|
![]() |
![]() |
![]() |
![]() |
Rank history, progression to Hero, LUSR/CSR per playlist group
| Explorer | Encounter History |
|---|---|
![]() |
![]() |
Browse and filter all your matches in detail with the Explorer, including search by player — track recurring opponents and cross-match encounter patterns with the Encounter History view.
| Media library | Commendations |
|---|---|
![]() |
![]() |
Browse and search your clips and screenshots linked to their matches (still in beta) — track your commendations with medal grids and distributions.
Prerequisites: Go 1.26+, Node.js + npm, GNU Make, and Air for Go hot reload.
git clone https://github.com/JGtm/LevelUp.git
cd LevelUp
cd apps/web && npm install && cd ../..
go install github.com/air-verse/air@latest
make devOpen http://localhost:5173 in your browser, then follow the in-app wizard.
Useful variants:
make go-api-dev
make webDetailed docs: docs/INSTALL.md
French README: docs/FR/README.md
v6 — Zero configuration. LevelUp bundles its own Azure client ID.
Just launch the app, enter your gamertag, and authenticate via Device Code Flow
(https://xbox.com/activate). No .env.local file or Azure account required.
If you cannot use the interactive wizard (e.g. server/headless setup), open the login page
at http://localhost:5173/auth/xbox/login from any browser on the same network and follow the
Device Code Flow. Alternatively, configure a redirect URI via LEVELUP_OAUTH_REDIRECT_URI
for a fully browser-based flow.
The bundled LEVELUP_CLIENT_ID is an Azure App Registration tied to this project.
If you fork LevelUp, please create your own free Azure App Registration
(see docs/CONFIGURATION.md) and set:
# .env.local
SPNKR_AZURE_CLIENT_ID=your_own_client_idThis env var takes precedence over the bundled ID.
Full configuration reference: docs/CONFIGURATION.md
| Document | Content |
|---|---|
| INSTALL.md | Detailed installation guide |
| CONFIGURATION.md | Tokens and profiles configuration |
| COMMANDS.md | Common commands cheat sheet |
| ARCHITECTURE_V6.md | v6 architecture (shared matches + i18n assets) |
| SYNC_GUIDE.md | Sync guide |
| BACKUP_RESTORE.md | Backup and restore |
| testing.md | Go testing strategy (CGO, coverage ratchet) |
| FAQ.md | Frequently asked questions |
| COMMENDATIONS.md | Commendations system (architecture & usage) |
| COMMENDATIONS_REFERENCE.md | Full commendations reference |
French docs: docs/FR/
Archived docs (not translated): docs/archive/
Contributions are welcome! See CONTRIBUTING.md for guidelines.
| Technology | Usage |
|---|---|
| Go 1.26+ | API backend |
| React 19 + Vite | Frontend UI |
| TanStack Query / Router / Table | Data fetching, routing, tables |
| ECharts 5 | Interactive charts |
| DuckDB 1.4+ | OLAP query engine |
| SPNKr | Halo Infinite API |
- Halo API: Depends on SPNKr — some endpoints can be unstable or rate-limited. Weapon kills are extracted from match film binary data (SPNKr), not from the stats API; POV coverage ~87.5 %.
This project is licensed under MIT. See LICENSE for details.
- Andy Curtis (acurtis166) for SPNKr
- Den Delimarsky (dend) for Grunt and OpenSpartan
See also ACKNOWLEDGMENTS.md.
Made with passion for the Halo community























