Dota 2 Party & Match Analyzer

Analyze match history for one player or a regular group of friends. Compare lineup, hero, and role win rates, explore 5-of-6 or 5-of-7 rotations, and measure results before and after patch 7.40.

Match data comes from STRATZ. You need a personal STRATZ API token; your browser uses it directly and never sends it to a qsen.ru server.

STRATZ API

Not tested
The API schema has not been loaded yet.
Your token stays in this browser. It is never included in diagnostics, CSV exports, or match links.

Players

Filters

Active: 0
Match: mode, patch, duration, and side
Lineup: required and excluded players
Exclude from the match:
Player stats: K/D/A, farm, damage, and wards
If STRATZ has no parsed value for a metric, the match is treated as unknown, not zero. A match with an unknown value does not pass an active numeric filter.
Items
Item purchase timing requires purchase logs. The analyzer deliberately avoids loading heavy logs for every match so normal analysis stays fast.
Weekday, time of day, and game number in a session
Weekdays
The game number is calculated from the anchor player’s full history within the scanned range, including games played on other heroes.
Match flow: comeback, throw, Roshan, and First Blood
Draft order, exact lane outcomes at 10 minutes, and major item timings require heavier timeline or draft data. They are intentionally excluded from normal analysis to keep it responsive.
STRATZ loading
STRATZ returns at most 100 matches per request. The analyzer stores them in IndexedDB: a source’s full history is downloaded once, then only the newest pages are checked. Rotation mode merges all required five-player lineups locally.

Local match database

Initializing IndexedDB...
Local matches0
History sources0
Last synchronization -
Browser storage -
The first analysis saves match history in IndexedDB. Later runs filter local matches and usually make no history requests. At most once every six hours, automatic sync checks the newest pages; old history is not downloaded again when there are no new matches.
The CSV captures the last completed selection and contains enough match data for later analysis without a STRATZ token.

Results

Test your token and select at least one player.
Diagnostics will appear here.

Matches

`pos -` means STRATZ did not provide that player’s position for this match. It does not affect the match result.
DateMatch IDResultsSelected playersDuration

How to use the Dota 2 Party Analyzer

  1. Open the official STRATZ API page, sign in with Steam, and copy your personal API token.
  2. Paste the token into the STRATZ API field. Save it locally only on a device you control.
  3. Add players by Steam Account ID. You can also paste a numeric SteamID64 and convert it locally.
  4. Select one or more players. For a regular group, Select all is the quickest starting point.
  5. For a six-player or seven-player roster, choose the rotation threshold, such as at least 5 of 7.
  6. Keep Result perspective set to Party / team side to calculate the team’s overall win rate across rotations.
  7. Select Analyze matches. The first run may take time while the required history is synchronized.
  8. Later analyses use the local database and fetch only new matches when a synchronization is due.

Steam Account ID, SteamID64, and profile URLs

A Steam Account ID is the 32-bit numeric identifier used by Dota 2. It is not a profile URL and it is not the 17-digit SteamID64. The player field accepts an Account ID or numeric SteamID64. SteamID64 conversion happens only in your browser; a vanity URL such as steamcommunity.com/id/name cannot be converted without an external lookup.

How to get a STRATZ API token

Open the STRATZ API page, sign in with Steam, and copy the token from your API profile. The token controls are visible only after sign-in. qsen does not issue STRATZ tokens and uses yours only as a Bearer credential for STRATZ GraphQL requests.

Open the official STRATZ API page

Party analysis and lineup rotations

Save your regular roster once, then select the group you want to analyze. The analyzer checks exact Account IDs, team side, and every active filter, so games as opponents are not mixed with games on the same team.

How the 5-of-7 rotation mode works

With seven regular players and five playing at a time, the analyzer checks all C(7,5) = 21 possible lineups and merges their matches. Duplicate Match IDs are removed. You get games, W-L, and win rate for every five-player lineup, plus party win rate with each player. A player may be absent from a particular game; Party / team side ties the result to the side of the lineup that was found.

What the analyzer measures

Filters cover heroes, positions, game modes, lobby, patches, dates, weekdays, time, lineup, K/D/A, farm, damage, utility stats, items, Roshan, First Blood, comebacks, and throws. Match details show Radiant and Dire, inventory, backpack, neutral items, buybacks, and data coverage. An unknown value is never treated as zero.

How local match synchronization works

The first run downloads the required history and stores matches in IndexedDB for qsen.ru. Later analyses use local data, while synchronization checks for new or changed matches without downloading old history again. Full resync is rarely needed. Clearing browser or site data can remove the database; data from a standalone file:// version does not migrate to qsen.ru automatically.

STRATZ API token and privacy

Your browser uses the STRATZ API token directly for requests to STRATZ. qsen.ru does not send it to its server. The token is never placed in URLs, CSV exports, analytics, SSR HTML, or structured data. localStorage saving is off by default and happens only if you choose it.

Frequently asked questions

What can the Dota 2 Party Analyzer do?

It analyzes one player or a group across lineups, win rate, heroes, positions, patches, utility stats, match details, and player rotations.

Do I need a STRATZ API token?

Yes, for the first download and later synchronization. Matches already stored locally can be analyzed without a token.

Where can I get a STRATZ token?

Use the official stratz.com/api page after signing in with Steam. qsen does not create or issue STRATZ tokens.

Does qsen send my token to its server?

No. Your browser sends it directly to STRATZ in the Authorization header.

What is a Steam Account ID?

It is the 32-bit numeric identifier used by Dota 2. It differs from SteamID64 and from a profile URL.

Can I analyze one player?

Yes. Select one player, then filter by heroes, positions, patches, or match statistics.

Can I analyze a group of six or seven players?

Yes. Select the full roster and set the required player count, usually five.

What does 5 of 7 mean?

The analyzer checks all 21 five-player lineups, deduplicates matches, and counts the result from the side of each lineup found.

Why is a position sometimes shown as “-”?

STRATZ does not provide a position for every historical match. Missing position data does not affect the match result.

Why are some metrics unavailable?

Some matches lack complete STRATZ parsed data. The analyzer reports coverage and does not turn unknown values into zero.

Why is a utility stat total sometimes a minimum?

With partial coverage, the total includes only known values. The true value may be higher.

Must I download every match again each time?

No. After the first full synchronization, analysis is local and network sync checks only the newest pages.

Where are downloaded matches stored?

In IndexedDB in this browser, scoped to the qsen.ru origin.

What does Full resync do?

It rebuilds the selected history sources from STRATZ. Use it only when data appears incomplete or has changed.

Can I compare results before and after patch 7.40?

Yes. Keep the 7.40 filter on All matches, run the analysis, then open the comparison.

Can I download the data?

Yes. CSV includes match-level data, present and absent players, result source, filters, and detailed player stats. It never includes the token.

Why does STRATZ sometimes rate-limit requests?

STRATZ applies limits to API tokens. On HTTP 429 the analyzer waits and retries with backoff.

Is the analyzer free?

The qsen tool is free. STRATZ access remains subject to the terms and limits of your STRATZ token.