A browser extension for Valve's CS2 VACNet clip labeling portal: the whole replay instead of a twelve second window, a player built for review, keyboard control, and a history of everything you have labeled.
Show screenshots
The wide layout: the replay on the left with the graded clip marked in red on the seek bar, the clip instructions and verdicts beside it.
Labeling history, behind the portal's own "Clips Labeled" counter.
Labeling in fullscreen, without leaving the video.
Everything stays on your machine. No accounts, no analytics, no telemetry.
- Playback starts at the beginning of the replay, with the graded clip marked on the player's own seek bar and the flagged moment ticked.
- Jump 10 or 30 seconds before the clip to watch the run-up, then jump back. You can check whether a suspect was already tracking someone through a wall before the moment you were shown.
- Seek anywhere in the replay. The portal normally snaps you back into the clip a few times a second; that is switched off.
- Loop the clip without the pause and stall the portal does between plays.
- Speeds up to 4x, and down to 0.1x, instead of the portal's 1x ceiling.
- Frame stepping, tap to play or hold to speed up, and a slow motion replay of the flagged moment on one key.
- Preview thumbnails when you scrub the seek bar.
- Review controls sit in the control bar next to play and fullscreen, not bolted on underneath.
- Theater mode, and a wide layout that puts the verdicts beside the video rather than under it.
- Verdict buttons work in fullscreen and theater, so you never have to drop out of the video to answer.
- Submitting does not reload the page. The next clip is swapped in, so fullscreen and your playback position survive.
- Set a default answer per question. Everything ships as Uncertain.
- A watch coverage strip shows which parts of the clip you actually played, and warns you once if you answer confidently without having watched the flagged moment.
- The clip details Valve renders but never shows you, Task ID, App and Match ID, are readable in the console.
- Clips are matched by replay and timestamp rather than task id, so a re-served clip is recognised even though its task id changed.
- A notice above the player tells you when you last saw it and what you picked, and fills that verdict back in for you to confirm or change.
- If the exact clip is new but you have judged another moment of the same replay, the most recent of those is offered instead, and the notice says so.
- Click the notice for the full record: when, which task, what you answered, and how much of it you had watched.
- Every clip you label is recorded behind the portal's own "Clips Labeled" counter, with session stats, filters and search.
- Click any entry to open that raw replay at the graded window.
- Export to JSON or CSV.
- The toolbar popup shows the same history when the portal is not open.
- The whole review runs from the keyboard: playback, seeking, frame stepping, volume, verdicts and submission.
- Bindings resolve from the physical key, so they work on non-US layouts.
- Rebindable in the settings panel, with a help overlay on
Shift+/.
The portal works, but a few things in it are genuinely broken:
- The clip details dialog can never open. The page builds a dialog bound to an element that is not on the page, so the code throws before it can show anything. That data is read and shown in the console instead.
- Playback is capped at 1x. The player ships no rate above real time.
- You cannot see what happened before the clip. A timer rewinds playback whenever it leaves the graded window and actively reverts backward seeks.
- The clip restart stalls. At the end the page pauses, rewinds, waits half a second, then plays again.
- The layout wastes a widescreen display. The video is pinned to a fixed height and the verdict panel to a fixed 500px, whatever your screen.
- The fixed footer overlaps the page, and it holds the only Report Bad Clip control. That control moves into the console and the footer is hidden.
- The "Submitting..." pill never clears unless the page reloads.
- Chrome Web Store, which also covers Edge, Brave, Opera and anything else Chromium based.
- Firefox Add-ons, for Firefox and Firefox Developer Edition.
Requirements: Firefox 128 or newer. The extension needs a content script running in the page's main world to switch off the playback clamp, and Firefox only gained that in 128. Chrome has no extra requirement.
Installing from a release zip instead
Grab the zip for your browser from the Releases page.
- Chrome: open
chrome://extensions, turn on Developer mode, and drag the chrome zip onto the page. - Firefox: open
about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select the firefox zip. Note that a temporary add-on is removed when Firefox restarts, which the store version is not.
git clone https://github.com/luminary-cloud/vacnet-labeling-plus.git
cd vacnet-labeling-plus
npm install
npm run build
npm run build:firefoxBuilds land in .output/chrome-mv3 and .output/firefox-mv3. npm run package
typechecks and produces the store zips instead. See
CONTRIBUTING.md for the project layout and conventions.
| Key | Action | Key | Action |
|---|---|---|---|
Space |
Tap to play or pause, hold for 2x | Up Down |
Volume |
K M |
Play or pause, mute | Home End |
Clip start, clip end |
Left Right |
Seek 5s | - = or [ ] |
Playback rate |
J L |
Seek 10s | F T |
Fullscreen, theater |
, . |
Frame step | C V |
Clip start, flagged moment |
Q Shift+Q |
10s and 30s of run-up | B |
Slow-motion replay |
E |
Back to the clip | G D |
Loop, open the raw replay |
1 to 4 |
Toggle Not or Uncertain | Shift+1 to Shift+4 |
Label as guilty |
A S |
History, settings | Shift+/ |
Keyboard help |
Enter |
Proceed, then confirm | Backspace |
Back to editing |
Esc |
Close the open panel |
Every binding except Space is rebindable. Space is fixed because it doubles as
tap to play and hold to speed up.
storagekeeps your labeling history and settings inbrowser.storage.local.https://www.counter-strike.net/*is the only host. The extension does not run anywhere else.
No analytics, no telemetry, and nothing is ever sent to the developer or to a third party. The one request the extension makes is posting your verdict to counter-strike.net when you confirm it, which is the submission the page would have made itself. Details in PRIVACY.md.
Pull requests are welcome. See CONTRIBUTING.md.
This extension is a quality of life layer over the labeling portal. It does not label clips for you, does not submit verdicts for you, and does not automate any part of the review.
Every answer is one you pick, and submitting is still two deliberate presses, Proceed then Confirm. A recalled verdict from a clip you have already seen is filled in for you to confirm or change, never sent on its own. There is no bulk labeling, no auto-advance, no scripted answering and there will not be one.
Reviewers are asked not to stream, record or share these clips, so there is no frame export, clip download or sharing feature either. The raw replay link opens a clip you were already assigned.
Counter-Strike, Counter-Strike 2 and VACNet are trademarks of Valve Corporation. This project is not affiliated with or endorsed by Valve.