1. Who runs this extension
The Pulse (CS2 Stats for Steam) browser extension is a free project maintained by an individual developer under the alias ahake. The source code is public for transparency and auditing at cspulse.pl/source (source-available; see the LICENSE file).
Contact for privacy questions: ask on Discord.
2. What the extension does
When you visit a Steam Community profile page (steamcommunity.com/id/<name>
or steamcommunity.com/profiles/<id>), the extension reads the
SteamID64 from the page and fetches publicly available statistics about
that profile:
- Leetify: AIM rating, K/D, winrate, matches analyzed, recent form, and optionally reaction time and pre-aim if you switch on the advanced tiles
- Faceit: ELO, level, recent matches, headshot percentage, and any bans on the account together with their reason and dates, which Faceit publishes openly
- Steam: CS2 in-game Private Rank, XP progress, Friend Code, Premier rating and per-map ranks
- Public lists we host: the pro-player database, the badge lists (supporter, server booster and reviewer) and, if the pill is enabled, an inventory value estimate (see section 5)
The extension then renders these stats in a panel injected into the Steam profile page you're already viewing. Nothing is sent back to any server we operate.
The "trust check" verdict is computed in your browser out of the numbers already listed above. It is arithmetic on public stats, not a lookup: no profile is ever submitted anywhere to be scored, and no verdict is stored or shared.
3. Data we collect from you
None, as long as you only use the extension. It does not:
- collect personal identifiers (name, email, IP address, location)
- track your browsing history or which Steam profiles you view
- use cookies of its own
- run analytics scripts
- send crash reports or error telemetry
- fingerprint your browser
- create user accounts
We have no way to know which Steam profiles you look at, when, or from where, because no such logs are kept anywhere. Two ordinary page visits are worth naming as the exception: the extension opens a welcome page here once after you install it, and a "what's new" page after a feature update, carrying the two version numbers. Those are normal visits to this site, no different from typing the address yourself.
Buying a supporter badge is the one thing that does involve your personal data, because a payment cannot work without it. That is covered separately in section 6. It is the only moment when you send us anything about yourself, and it never happens while you are simply browsing profiles.
4. Data the extension stores locally
The extension uses the standard storage permission to save
only optional configuration in your browser:
- Your preferred display currency for the inventory value badge
- Your panel accent choice (default / custom color / adaptive)
- Which badges you want next to Steam nicknames, and how many map ranks to show
- Whether the advanced Leetify tiles (reaction time, pre-aim) are switched on
- Which panel sections you have collapsed (this one in
chrome.storage.local, so it stays on this device)
These values are stored via chrome.storage.sync, which means they live in
your browser profile and may sync to your other signed-in browsers: through your Google
account in Chrome, or your Mozilla account in Firefox. Both are run by those vendors,
not by us, and we never see those settings.
The extension also keeps a short-lived cache in chrome.storage.local so that
re-visiting a profile doesn't hit the same services again. The full list, with how long
each entry lives:
- In-game CS2 stats: 60 minutes
- Leetify and scope.gg stats: 15 minutes
- Faceit stats: 15 minutes
- Peak Faceit ELO: 24 hours, keyed by the viewed player's public Faceit id
- The inventory value estimate: 30 minutes
- The public pro-player list: 24 hours
- A price catalogue used as a fallback for items the main source does not price: 12 hours. This one is a plain price list and holds nothing about any player
- A note that Steam has asked us to slow down on inventory requests: 5 minutes, so that a refresh does not walk into the same wall
- Your chosen sort order for the inventory grid, kept until you change it
This cache only holds data about the profiles you open, it stays in your browser, and clearing it is as simple as removing the extension.
No API keys, tokens, or personal data are stored. The extension has no such fields.
5. Third-party data sources
When you view a Steam profile, the extension makes HTTPS requests to the following services to fetch the stats it displays:
ahake.pl: our Cloudflare Workers, which are the only hosts the extension contacts for stats. They stand in front of Leetify (aim, K/D, winrate, headshots, Premier rating), scope.gg (used only as a fallback, when Leetify has nothing for that player), Faceit (ELO, level, recent matches, peak ELO), our own Game Coordinator bot (Private Rank, XP, Commendations), the inventory value estimate, and the public supporter and pro-player lists. Each of them receives the SteamID64 of the profile you are viewing, and for the peak-ELO lookup that profile's Faceit player id*.steamstatic.com/steamuserimages-a.akamaihd.net: the profile's own avatar/background images, downloaded solely to compute the "adaptive accent" color locally in your browser; nothing is sent anywherecspulse.plandflagcdn.com: static images only (per-map rank icons and country flag icons); these are plain image downloads that carry no data beyond the icon being requested
These services receive only the SteamID64 of the profile you're currently viewing. The one exception is the inventory value estimate: to price the items, your browser sends the item names of that profile's public CS2 inventory (fetched from Steam by your own browser) to our Worker together with the SteamID64. None of these services receive any information about you personally. Each service has its own privacy policy, which we do not control, so check each site directly for their current terms:
The Faceit proxy at ahake.pl/faceit-proxy is a Cloudflare Worker that
forwards requests to Faceit's API. The Worker keeps a short-lived cache of responses
keyed by SteamID64 to reduce load on Faceit's API: 30 minutes for a profile it found,
and up to 6 hours for the answer "this SteamID has no Faceit account", which almost
never changes. It enforces a per-IP rate
limit (30 requests per minute) to prevent abuse, which means Cloudflare temporarily
sees your IP address for that purpose. The proxy does not write logs that associate
IPs with the SteamIDs being queried.
6. If you buy a supporter badge
Everything above is about the extension, which is free and asks nothing of you. The one place where real personal data enters the picture is the optional supporter badge. You can start it either here on the website or from the extension's own options page. In both cases the profile link or nickname you type, and the tier you pick, are sent to our server so the badge lands on the right account. If you have never bought one, this section does not apply to you.
The payment itself is handled by Stripe, under their privacy policy. Full card numbers never reach us. What we can see in our Stripe dashboard is the ordinary record of a sale:
- your email address, and the name on the card
- the card brand and its last four digits, and the billing country
- the amount, the date, and which tier you bought
- the SteamID64 you typed in before paying, so the badge can be granted to the right profile
- technical details recorded by Stripe's fraud checks, including your IP address. That part is Stripe's own processing, not ours
What we store ourselves is far less than that. Our own storage holds one thing: a list of SteamID64 to tier, so the extension knows which nickname gets a heart. That list has no email addresses, no names and no payment data in it, and it is the same list every copy of the extension downloads. If you linked your Discord account, we also store the pairing of your Discord user id to your SteamID64, so supporter roles can be kept in sync.
The reviewer badge follows the same shape, without any payment. It is free and open to anyone. If you claim it on Discord, the bot opens a channel just for you, you send a screenshot of your review in the store, and a human checks it. Approving it adds your SteamID64 to the same public list the extension already downloads, in a separate array. The claim channel is deleted once the decision is made. The screenshot you sent stays in the moderation channel, where only the server owner can see it, and you can ask for it to be deleted at any time. No review text, store account or email is stored, because none of it is needed: the badge is granted to a SteamID64 and nothing else.
The sale record stays with Stripe for as long as accounting rules require, which is not something we can shorten. The badge entry stays until you ask for it to be removed, or until a refund, which removes it automatically. To see, correct or delete what we hold, ask on the Pulse Discord. None of it is sold, shared with advertisers, or used to contact you about anything other than your own order.
7. Permissions we request
Your browser shows you a list of permissions when you install the extension. Here's what each one is actually used for:
storage: to remember the display settings listed in section 4, and to keep the short-lived stats cache described there. This is the only permission the extension asks for beyond the hosts below. There are no API key or token fields anywhere in the extensionsteamcommunity.com/*: to inject the stats panel into Steam profile pages, and to read the public inventory of the profile you are looking at*.steamstatic.com/*andsteamuserimages-a.akamaihd.net/*: Steam's own image hosts, for item icons and avatarsahake.pl/*: our API domain, and the only host we operate that the extension talks to. Every source in section 5 is reached through it, so the extension holds no permission for Leetify's or Faceit's own domains.ahake.plstays separate from the website atcspulse.pl: moving it would force every existing install to re-accept permissions
The extension does not request access to your tabs, your browsing history, your downloads, your camera or microphone, your clipboard, or any other permission outside what's listed above.
8. Cookies
The extension does not set or read cookies, and has no permission to do so.
One request is nevertheless sent with your existing Steam session attached: the one that reads the viewed profile's CS2 items for the inventory estimate. Steam only answers it for an inventory that is visible to you, so on a friend's profile the extension reads an inventory the public cannot see, and on your own profile it reads yours. Nothing is sent to Steam that your browser would not send by visiting the same page; what leaves the browser afterwards is the list of item names, so they can be priced. No other request carries cookies.
The companion website at cspulse.pl also does not use cookies, analytics,
or third-party tracking scripts.
9. Children's privacy
Counter-Strike 2 has an ESRB rating of Mature 17+ and a PEGI rating of 18. This extension is intended for users who are old enough to use Steam and CS2, which Valve's own terms restrict to age 13+. We do not knowingly collect any information from anyone. The extension simply collects no information at all.
10. Changes to this policy
If we change the way the extension handles data, we'll update this page and the "Last updated" date above. Substantial changes will also be noted in the changelog.
11. Source available
The full source code of the extension is published at cspulse.pl/source. You can read and audit every line, which is the most reliable way to verify that the claims above match the actual behavior of the extension. The code is source-available for review, not open source: it may not be copied, modified for redistribution, or reused in other products without permission (see the LICENSE file).