#DHSeaDev — Chrome MV3 — Popup + Full Page
Dota Companion
Dota Companion is a free Chrome extension that gives you a private Dota 2 dashboard — improvement streaks, goals measured against your own baseline, hero stats, private player notes, and a full valuation of your Steam inventory. Local-first: no account, no API key.
Available now on the Chrome Web Store — free, no account, no API key.
Field Guide
Dota Companion is built for the climb between matches, not the match itself. Its improvement streak counts consecutive recent games that beat your own GPM baseline — so the number tracks getting better, not just showing up. Set a goal against a real metric (GPM, KDA, last hits, or win rate) and the progress bar measures it against your current twenty-game average. The player-notes tab is the piece you cannot get from a stats site: tag and rate the people you run into — smurf, thrower, playmaker — and it stays, privately, only on your device. Enable “Expose Public Match Data” in Dota 2 settings so your matches are visible to the public OpenDota API the extension reads from.
The inventory page opens as a full tab and values everything you own against the Steam Community Market. Every inventory calculator on the web answers the same question — what is it worth. This one also answers whether it is doing anything for you: because the extension already knows your match history, it can separate the cosmetics riding on heroes you actually play from the ones sitting idle on heroes you have not picked in twenty games. Value is tracked from your own refreshes, so the chart is your inventory’s history rather than a market average, and items that appeared since you last looked are flagged.
It is deliberately slow about Steam, and that is a feature. Steam rate-limits these endpoints per IP address — a tool that hammers them does not just break itself, it locks you out of your own inventory page and the market for hours. So this one never fetches on its own: you press a button, it paces at twelve requests a minute against a ceiling of roughly twenty, caps itself daily, prefers one bulk request over a hundred small ones, and stops entirely the moment Steam pushes back — then tells you plainly why and for how long.
What it does
Improvement Streak
Counts consecutive recent games that beat your own GPM baseline. The streak measures progress, not attendance.
Goals & Progress
Target a GPM, KDA, last-hits, or win rate. A progress bar tracks it against your current 20-game average.
Player Notes
Tag and rate anyone you run into — smurf, thrower, playmaker. Private, stored only on your device.
Recent Form
Win/loss streak, last-ten results, and most-played heroes with per-hero win rate — one toolbar click.
Inventory Value
Every Dota 2 item you own, priced against the Steam Community Market, grouped and sorted by value. Filter by rarity, hero, slot or type; search by name; watch the total move over time.
Idle Cosmetics
What a price alone cannot tell you: it knows which heroes you actually play. See how much of your cosmetic spend sits on heroes you have not touched in twenty games — and which of your most-played heroes have nothing equipped at all.
Smart Insights
Names the one metric that has fallen furthest below your own baseline and gives you a concrete drill for it — with progress split by hero and by lane, because a number blended across roles describes nobody.
Draft Helper
Type the enemy heroes as they are picked and see your own hero pool ranked by how you actually perform, alongside your real record against each pick.
Screenshots
Available now on the Chrome Web Store — free, no account, no API key.
Read more
What 1.9.0 changed · How the inventory half got built · Why it is deliberately slow · Short answers · All projects · The permissions write-up on DEV
Privacy Policy
Your notes, goals, cached matches, inventory and price history are stored locally in your browser and never leave your device. No accounts, no telemetry, no analytics, and no remote code.
The extension makes two kinds of network request, both on your behalf and neither carrying your identity: public Dota 2 match data from the OpenDota API for the account ID you enter, and your public Steam inventory plus Community Market prices from steamcommunity.com. Steam access is an optional permission you grant with a button — the performance dashboard works fully without it. Those requests are sent without your Steam login cookies, and the extension never lists, buys, sells or trades anything.
Not affiliated with, endorsed by, or sponsored by Valve Corporation. Dota and Dota 2 are trademarks of Valve. Match data provided by OpenDota. Item prices provided by the Steam Community Market.
Contact: >dhseadev@gmail.com
Changelog
1.9.0 — 25 August 2026
Adds an Insights tab. It names the one metric that has fallen furthest below your own baseline and gives you a concrete drill for it, instead of six numbers and no instruction. Beside it: per-hero progress, measured against your own earlier games on that hero, and baselines split by lane — because a number blended across safelane and mid describes nobody.
A status line on the Overview tab now says what the data is before showing anything built on it: a hidden profile, an uncalibrated rank, too thin a sample, a stale cache, or simply that a finished game can take up to an hour to reach OpenDota. Every first-run failure this extension had was a silent one.
The Matchups tab gains a draft helper. Type the enemy heroes as they are picked and see your own hero pool ranked by how you actually perform, alongside your real record against each of those picks. It reads the same lifetime data that tab already fetched, so opening it costs no extra request. The ranking is ordered by a confidence bound rather than a raw percentage, so a three-game hero never outranks a forty-game one.
Fixes. A stat missing from OpenDota is now recorded as missing rather than as a zero — the old behaviour quietly dragged every average, baseline and trend line down. A failed lookup can no longer leave the previous player’s stats on screen under a new name. Lane data now survives ingest at all, which is what made the role split possible. Plus guards on adding and removing goals, and on changing currency while prices are still loading.
1.8.0
First-run guidance: a five-step inline guide that is dismissable and reopenable from Settings.
1.7.0
Steam inventory valuation, Simplified Chinese, and an optional Steam permission that is requested only at the moment you turn that feature on.