Privacy policy.
Hardstuck keeps your matches on your PC. An account is optional, there are no ads and nothing is sold. This page lists everything the app keeps, where, and the few things that leave your PC, each with when and why.
The short version
- Your matches stay on your PC. They're never uploaded, with an account or without one.
- Crash and error reports go only if you say yes. The app asks once and sends nothing until you answer. They never include your matches, your screen or your name.
- A bug report goes only when you press Send. You choose whether the logs go with it.
- Update checks go to our update server, so the app can update itself.
- A party room, if you make or join one, shares your party card and live lineup with the friends in it.
- A Hardstuck account is optional. With one, the party finder shows other players your display name, and your BattleTag or Discord details go only to the players you accept.
- Shared match stats, only while you're signed in (on by default, and you can switch them off), send an anonymous summary of each match (heroes, map, result), never a name.
- The website counts visits without cookies, and the waitlist keeps the email you give it.
Hardstuck Anonymous makes the app and runs this website. Questions about this policy, or about anything we hold: hello@hardstuckanonymous.com.
What the app keeps on your PC
Everything is in one folder, %APPDATA%\Hardstuck. Settings > App > Your data shows how big each part is and has a button that opens it.
- Your match history (
history.sqlite): each match's map, mode, queue, result, length, heroes and both teams' lineups, and the kill feed as it was read. Other players are kept by their in-game name as the app read it off the kill feed, the name everyone in the match could see, never a BattleTag or its number. Your own player name is kept so the app knows which line is you. These names never leave your PC: the app never sends them anywhere, and they're only copied into backups and exports you save yourself. - Aim trainer and sens finder runs (
aim.sqlite), read from the Workshop log files Overwatch writes. - Settings (
settings.json): your player name, so the app knows which line is you, and your choices: the screen or camera to read, recording, startup, notifications, updates and reports. - Logs (
logs\, each kept small): what the app read and did in each session, the engine's errors, and snapshots of the pre-match screens, map votes and Tab boards it read. If you turn on calibration screenshots, it also keeps frames of the screens it checks (under 200 MB in all) and the last moments of a match it couldn't read the end of. - Hero labels, data packs and the party: heroes you labelled by hand (
banks\), the hero data downloaded with updates (packs\), and the party you're in (party.json). Your hero pool, role and party name are in the app window's own storage. - Friends you add (also in the app window's own storage): for each, the name you typed or that the app read off the lobby, their hero pool, their role and the hero you marked as them. Besides the names in your match history, these are the only other players' names the app keeps, and only the ones you add yourself. They never leave your PC: in a party, each person's app sends only their own name and pool. Remove a friend on the Party page and they're gone.
Recordings, if you use OBS, stay where OBS saves them. The app reads the screen (or OBS's virtual camera) in memory as you play; the only pictures it writes are the snapshots above. If you ask for graphics advice, it reads Overwatch's settings file and never changes it.
The folder isn't encrypted. Anyone using your Windows account, and any program you run, can read it, the same as your other files. The snapshots are pictures of the screen, so other players' names can be seen in them; they never leave your PC. Uninstalling the app leaves it in place, so a reinstall keeps your history. To remove everything, use Delete everything in Settings > App > Your data, or uninstall and delete the folder.
A backup or a JSON export of your history carries your matches as they were saved, so other players' in-game names are in it. A CSV export holds only your own numbers. A share card carries no other player's name: it shows only you and your team as a whole. A backup also holds your hero pool, party name and the friends you added (their names, pools and roles), so a restore brings them back too. It adds the friends you don't have and never replaces what you have.
What leaves your PC
Update checks
When the app starts and every six hours after, it asks our update server, updates.hardstuckanonymous.com, for the newest version and the newest hero data, and downloads them if there's something new. The request says which version of the app and of the hero data you have, and nothing about you or your matches. We count how many checks come from each version, so we know when an old one is no longer in use; the count isn't tied to you. Like any website, the server sees your internet address to answer it; we don't keep it or count by it.
Crash and error reports, only with your yes
The first time you open the app, it asks whether to send crash and error reports. Until you answer, and if you say no, none are sent. You can change your mind any time in Settings, under Reports.
With your yes, when something breaks, the app sends a report to Sentry, the service we use to collect them. A report holds:
- The error, where in the app it happened (its stack), and which part of the app it came from.
- The app's version and the hero data's version.
- The basics of your PC: Windows version, processor, memory and screen size.
- The app's last few steps before the error, and, if the engine stopped, the end of its error log.
Before a report goes, your player name, your Windows username and your home folder's path are taken out of everything in it, logs included. Reports never include your matches, your screen, your computer's name, your time zone or language, or the app's working memory. Sentry sees your internet address when a report arrives, like any website; the app (from version 0.6.11) tells it not to keep the address or work out from it where you are. The same error goes once per session, and at most 20 reports in all.
Bug reports you send
Settings has a Report a bug box. Nothing goes until you press Send, whether or not crash reports are on. A bug report holds what you wrote and, if you fill it in, how to reach you (a Discord name or email, sent as you typed it, so we can write back).
If Include the logs is ticked (it is unless you untick it), the report also carries the end of the engine's error log, the end of your latest session log, and your settings without your player name. Your player name, Windows username and home folder are taken out of these too. Session logs record what the app read in your matches: the map, heroes and kills. Other players' names aren't in them: a name read off the screen is logged as a random tag that changes every session. Logs from version 0.6.10 and earlier kept the menu screens' text, names included, so a bug report leaves that text out. Untick the box to send only what you wrote.
Party rooms, if you join one
If you make or join a party, the app connects to a room on our update server. It sends the name you entered for the party, your party card (hero pool, record per hero and rank) and, while you play, your live lineup (queued role, hero, team, the enemy team, map and bans). The room passes these to the others in the party and keeps only the latest of each. A member gone for 30 minutes drops out, and a room empty for six hours is deleted. Your internet address is used only to limit how fast rooms can be made and joined.
A Hardstuck account and the party finder, if you make one
Accounts aren't switched on in the app yet. When they are, an account is optional: you sign in with Battle.net or Google in your own browser, through Auth0, the sign-in service we use. We never see your password or your email. Our account server, api.hardstuckanonymous.com, keeps:
- Your account: the sign-in service's id for you, the name your sign-in gives (your BattleTag without the number, or your Google first name), your BattleTag if you signed in with Battle.net, when you made the account, and a display name if you choose one. You can change the display name in Settings > Account once a day, or reset it to your sign-in's name any time. No email and no internet address.
- Your party finder listing, while it's up: your display name as it was when you listed, your role, the group's slots, rank range and region, which contact details you offer, and the Discord name or invite link you typed. A listing comes down by itself after three hours and is deleted then, with the applications and reports on it.
- Your applications, until the listing comes down: your display name, the role, and your contact card (your rank, hero pool and three most-played heroes, from your history on your PC, each line only if you leave it ticked), and whether you share your BattleTag or a Discord name. A declined or removed application keeps nothing but that it was declined or removed.
- Players you block, with their display name as you saw it, so the finder can list them for you. A block lasts until you unblock them in the finder or delete your account; they aren't told.
- Reports you make on a listing, with the reason you pick, until the listing comes down. Nobody reads them: enough reports from different accounts hide a listing by themselves.
- Finder bans: if your listings are hidden after reports more than once in 30 days, or we ban you after a complaint, the reason and the end date, which you see in the app. We keep which of your listings reports hid for 30 days, and how many automatic bans you've had, to set the next one's length.
Other players browsing the finder see your listing's roles, how many places are filled, its rank range and region, your display name and which contact methods you offer, never the details themselves. The player whose listing you apply to sees your display name, role and contact card. Your BattleTag and Discord details go only to a player who accepts you, or whom you accept, and only the ones you ticked. Nobody is told who blocked or reported them. There's no chat or messaging in the app.
Settings > Account can save everything the account server keeps about you to a file, and delete the account. Deleting removes your account, listings, applications, blocks, reports and bans, and any shared match stats still waiting to be added into the totals (below), from our server, and your profile from Auth0. One thing is kept: if you're under a finder ban that hasn't ended, a scrambled fingerprint of your sign-in id and BattleTag stays with the ban's reason and end date, so a new account can't skip it, and goes when the ban ends. And if another player blocked you, that block is theirs and stays, so signing up again doesn't undo it.
Shared match stats, only while you're signed in
With an account, Settings > Account has a Share anonymous match stats switch. It's on by default once you sign in, and you can switch it off there at any time. With it on, after each match the app sends our account server, api.hardstuckanonymous.com, a short summary of that match, to help us check the hero guides against real games:
- The map, mode, queue and result, and the patch it was played on (the patch's date, not the match's).
- The heroes on each team and how long each was played, the bans, and your rank tier and role in competitive (the tier only, like "gold", no division or progress).
- How long each of your heroes spent against each enemy hero and the kills either way, how many fights there were and who fell first, and your own Tab line per hero (eliminations, assists, deaths, damage, healing, mitigation).
- The app's and the hero data's versions, and a code worked out from the match itself, so the same match sent by two friends in a party counts once.
It never includes your name, anyone else's name or BattleTag, the kill feed, when anything happened, or anything about your PC. Replays, recordings, practice and matches you corrected by hand aren't sent. If you turn it on yourself, the app offers once to send this patch's matches you already have.
Each summary is kept with your account for at most 7 days, so we can merge copies and drop bad data, and is in your account's export. Then it's added into totals by hero, map and rank that hold no account and no match. Deleting your account deletes the summaries still waiting; what's already in the totals stays, because nothing in them is yours any more. Turning the switch off, or signing out, stops it and drops anything not yet sent. We read the totals ourselves; nothing from them shows in the app or on this site.
Links you click
Links in the app, like the ones to this website, open in your own browser. What happens there is up to the site you visit.
That's all. The app has no analytics, no ads and no trackers.
The website
Visits
Our website, hardstuckanonymous.com, uses Cloudflare Web Analytics to count visits. It doesn't use cookies, local storage or any other way to recognize you between visits, and it doesn't collect personal data: it records the page visited, the referring page, your browser type, country and page-load timings. Cloudflare, Inc. processes this data on our behalf as our processor. The analytics are on the website only; the Hardstuck app doesn't use them.
If you arrive from a link with a source tag (from Reddit, say), the site keeps that tag in your browser for the visit, so a waitlist signup can say where it came from. It's gone when you close the tab. The fundamentals guides remember the rank you pick on them in your browser's local storage, so the next guide opens at it. It never leaves your browser, and clearing the site's data removes it. The home page's 3D logo loads from jsDelivr, a public code host, which sees your internet address to send it. The download page asks our update server for the newest version's number and size, and the installer comes from there too; it sees your internet address to answer, and we don't keep it.
The waitlist
If you join the waitlist, we keep your email, the name or Battletag and rank if you gave them, where your visit came from, and when you signed up. They're kept in a database on Cloudflare, which also runs the site. We don't keep your internet address with them. We use them to send you one email when something big lands, and to see which places bring people in. We don't share them or add you to anything else. Ask and we'll delete your signup.
Who else handles it
- Sentry (Functional Software, Inc., in the United States) receives crash, error and bug reports. They're kept for Sentry's standard 30 days on our plan, and deleted sooner if you ask.
- Cloudflare (Cloudflare, Inc.) runs our update server, party rooms, account server and website, and counts website visits.
- Auth0 (Okta, Inc.) handles signing in to a Hardstuck account. It keeps your sign-in profile and sign-in logs; deleting your account deletes the profile.
- jsDelivr serves the home page's 3D logo.
We don't sell or rent anything about you, and nobody else gets it, unless the law makes us hand it over.
Your choices
- Turn reports off or on in Settings, under Reports. The engine picks the change up the next time it starts.
- Send a bug report without logs by unticking Include the logs.
- Leave a party from the Party page; the room drops you.
- Turn shared match stats off in Settings > Account. Nothing more is sent, and what hasn't gone yet is dropped.
- Delete your history in Settings > App > Your data: Delete match history removes your matches and keeps your settings, and Delete everything removes the whole folder. Single matches can be deleted in the app too.
- Save or delete your account in Settings > Account, and change or reset your display name there.
- Block a player or report a listing in the party finder.
- Ask us what we hold about you, or to delete a report or waitlist signup: hello@hardstuckanonymous.com. Tell us the email, contact or rough date to look for, since reports carry no name.
Hardstuck isn't meant for children under 13, and we don't knowingly collect anything from them.
Changes
If what the app keeps or sends changes, this page changes with it, with a new date at the top. A change that sends something new will ask you first, like crash reports do.