The card sits below the profile's online status and adapts to the data available for that player. Open Details for recent matches, extended Leetify and FACEIT metrics, Steam activity, and an optional inventory estimate.
- Premier rating with native CS2 rank colors
- FACEIT level, ELO, lifetime stats, and level colors
- Leetify rating, recent K/D, Aim, Positioning, Utility, and Opening
- Reaction time or SCOPE.GG AWP time-to-damage when available
- Win rate, tracked match count, and recent match results
- Recent match history with map, date, source, and score
- Steam CS2 hours, recent playtime, and account creation date
- On-demand estimate for public CS2 inventories using Steam Market prices
- Compact summary plus Overview, Matches, FACEIT, and Steam detail tabs
- Independent provider loading, so one unavailable source does not hide the rest
- No mandatory API keys, telemetry, or persistent player-stat storage
- Download the latest
cs2-profile-stats-v*.zipfrom Releases. - Extract the
cs2-profile-statsfolder into<Steam>/millennium/plugins/. - Restart Steam.
- Open Steam → Millennium → Plugins, enable CS2 Profile Stats, and save the changes.
A SteamBrew plugin-directory submission is pending review.
Clone the repository and create a directory junction or symbolic link from Millennium's plugin folder to the checkout:
New-Item -ItemType Junction `
-Path '<Steam>\millennium\plugins\cs2-profile-stats' `
-Target '<repository path>'Then install dependencies, build, and restart Steam:
pnpm install
pnpm typecheck
pnpm buildBackend changes require a full Steam restart.
- Leetify Public CS API for Leetify and Premier metrics. A developer key is optional and only improves rate limits. The plugin can fall back to the keyless profile endpoint used by Leetify's web client for public legacy profiles.
- SCOPE.GG public player pages for an AWP time-to-damage range when that metric is available.
- Faceit Finder for zero-configuration Steam-to-FACEIT lookup and public FACEIT statistics.
- Steam Community public profile, inventory, and Market endpoints for Steam activity and the optional inventory estimate.
Third-party services may return incomplete data or change without notice. Private Steam game details hide playtime; private inventories cannot be valued. Inventory values are approximate and do not include sticker, float, pattern, or other item-specific premiums.
FACEIT lookup is isolated behind its own provider because the zero-configuration source is not an official versioned FACEIT API. If it changes, Leetify and Steam data continue to work.
Leetify data is displayed according to the Leetify API Developer Guidelines.
- Optional Leetify API key for higher rate limits
- Show or hide the Steam activity tab
- Expand details by default
pnpm install --frozen-lockfile
pnpm typecheck
pnpm build
pnpm dlx luaparse backend/main.luaBuild artifacts are generated in .millennium/Dist. To create an installable archive:
./scripts/package.ps1Project structure:
backend/main.lua— HTTP providers, normalization, configuration, and IPC responseswebkit/index.tsx— Steam profile detection and card renderingfrontend/index.tsx— Millennium plugin settingsstatic/— scoped styles and attribution assets
See CONTRIBUTING.md before submitting a change and CHANGELOG.md for release history.
The plugin reads the public SteamID64 of the profile being viewed and requests public gameplay statistics from the services listed above. It does not collect telemetry, use analytics, or permanently store player statistics.
Released under the MIT License.
This project is not affiliated with Valve, Steam, Counter-Strike, Leetify, FACEIT, SCOPE.GG, or Faceit Finder. All product names and trademarks belong to their respective owners.

