VCT Americas Stage 2All ten teams
Primary navigation

playbyplay oracle

playbyplayoracle In beta

A Computer Vision Parser for Valorant VODs

Oracle reads VALORANT broadcasts. Our computer vision pipeline parses the killfeed and round clock, then links each recorded event to its moment in the video.

This version uses tournament broadcasts, without relying on match demo files. Search by player, team or round to review the footage. Missing events and uncertain timings are marked.

Roadmap

  1. Kill boundary

    Ongoing

    Identify who killed whom, place each kill within its round, and narrow down when it happened in the VOD. Check the sequence and flag gaps.

  2. Map awareness

    Planned

    Read player positions from the minimap. Track round-start setups, defaults, rotations and site hits as the round develops.

  3. Full VOD review

    Planned

    Review whole matches inside Oracle: mark moments, build clip lists, and turn them into strategy plans you can carry into prep.

Situation & provenance 19 more filters: round, series, agent, spike phase, man-count, clock, every class and mark 1 active
Where
–
Who
Situation
–

Not available. Killfeed weapon icons are not classified yet: the column exists and is empty for every event. Filtering on it would silently return nothing.

Provenance every mark is filterable
144 events searching… 112 rounds · 28 maps · 13 series ChronologicalMost recent
30 rounds have missing events. For the selected maps and series. Player and event filters do not hide these gaps. The missing events' positions in each round are unknown.
Where Kill Clock Video Marks Expand
KRU v LOUDLotusR2LessKRUDEF→LessKRUsame team1v4+1:3210:13
KRU v LOUDLotusR5saadhakKRUDEF→saadhakKRUsame team2v2+1:4115:57
KRU v LOUDLotusR5mwzeraKRUDEF→mwzeraKRUsame team1v2+1:4215:58
KRU v LOUDLotusR14DaviHLOUDDEF→DaviHLOUDsame team2v4+1:3138:31
KRU v LOUDLotusR14lukxoLOUDDEF→lukxoLOUDsame team1v4+1:3338:33
KRU v LOUDLotusR16erdeLOUDDEF→erdeLOUDsame team1v4+1:2942:51
KRU v LOUDBreezeR23saadhakKRUDEF→saadhakKRUsame team2v0+1:091:49:49
KRU v LOUDBreezeR32saadhakKRUDEF→saadhakKRUsame team1v0+2:082:10:40
KRU v LOUDSunsetR9erdeLOUDATK→lukxoLOUDsame team4v5+0:112:25:42
KRU v LOUDSunsetR9LessKRUDEF→heatKRUsame team4v3+0:302:26:01
NRG v MIBRSunsetR17brawkNRGATK→brawkNRGsame team4v0+1:1242:20
NRG v MIBRBreezeR4brawkNRGDEF→brawkNRGsame team1v0+1:051:01:00
NRG v MIBRBreezeR11EthanNRGDEF→zekkenMIBR3v4+0:471:13:36
NRG v MIBRBreezeR17madaNRGATK→zekkenMIBR5v5+0:181:28:37
NRG v MIBRSummitR3madaNRGDEF→zekkenMIBR5v5+0:371:49:02
NRG v MIBRSummitR6EthanNRGDEF→zekkenMIBR5v4+0:271:55:01
NRG v MIBRSummitR12skubaNRGDEF→zekkenMIBR5v3+0:172:08:01
NRG v MIBRSummitR16keikoNRGATK→zekkenMIBR3v3+1:242:19:03
FUR v NRGBreezeR12EthanNRGDEF→artzinFUR1st5v5+0:0626:24
FUR v NRGBreezeR13EthanNRGATK→EthanNRGsame team3v0+1:0831:40
FUR v NRGBreezeR14koalanoobFURDEF→koalanoobFURsame team4v5+1:5634:09
FUR v NRGBreezeR14basicFURDEF→basicFURsame team3v5+1:5634:09
FUR v NRGBreezeR14C0MFURDEF→C0MFURsame team2v5+1:5734:10
FUR v NRGBreezeR14ShyyFURDEF→ShyyFURsame team1v5+1:5934:12
FUR v NRGBreezeR17ShyyFURDEF→EthanNRGtraded5v4+0:5640:27
FUR v NRGBreezeR17brawkNRGATK→EthanNRGsame team2v2+1:0440:35
FUR v NRGBreezeR19brawkNRGATK→artzinFUR4v4+0:1645:52
FUR v NRGSummitR9basicFURATK→EthanNRG1v4+1:311:24:43
FUR v NRGSummitR9skubaNRGDEF→EthanNRGsame team3v0+1:461:24:58
G2 v C9BreezeR6jawgemoG2DEF→ZellsisC92v2+1:1415:02
G2 v C9SunsetR1jawgemoG2ATK→jawgemoG2same team2v0+1:0838:10
G2 v C9SunsetR1BABYBAYG2ATK→BABYBAYG2same team1v0+1:0838:10
G2 v C9SunsetR8ZellsisC9DEF→JackkC9same team4v3+1:0153:28
G2 v C9SunsetR12leafG2ATK→jawgemoG2same team2v5+0:261:01:41
G2 v C9SunsetR18leafG2DEF→jawgemoG2same team4v4+0:381:15:27
SEN v LOUDLotusR18corteziaSENDEF→corteziaSENsame team2v3+1:2153:05
SEN v LOUDLotusR18ReduxxSENDEF→ReduxxSENsame team1v3+1:2153:05
SEN v LOUDBreezeR9DarkerLOUDATK→ReduxxSEN4v4+1:091:14:33
SEN v LOUDBreezeR16tkzinLOUDDEF→ReduxxSEN5v5+0:211:28:20
SEN v LOUDBreezeR18lukxoLOUDDEF→lukxoLOUDsame team2v4+1:201:34:51
SEN v LOUDBreezeR20lukxoLOUDDEF→ReduxxSEN5v5+0:141:38:30
KRU v G2BreezeR2valynG2DEF→valynG2same team1v4+1:058:30
KRU v G2BreezeR3leafG2DEF→heatKRU4v2+0:199:25
KRU v G2BreezeR4jawgemoG2DEF→heatKRU4v5+0:2210:47
KRU v G2BreezeR8jawgemoG2DEF→heatKRU4v5+0:1819:36
KRU v G2BreezeR11jawgemoG2DEF→heatKRU3v4+0:3624:42
KRU v G2LotusR18heatKRUDEF→heatKRUsame team3v4+1:561:35:47
KRU v G2LotusR18Dantedeu5KRUDEF→Dantedeu5KRUsame team2v4+1:561:35:47
KRU v G2LotusR18mwzeraKRUDEF→mwzeraKRUsame team1v4+1:561:35:47
KRU v G2LotusR23leafG2ATK→leafG2same team3v1+1:371:49:38
KRU v G2LotusR23trentG2ATK→trentG2same team2v1+1:381:49:39
100T v SENSunsetR4corteziaSENATK→Asuna100T4v3+0:365:19
100T v SENSunsetR5Timotino100TDEF→ReduxxSEN4v5+0:126:32
100T v SENSunsetR8Asuna100TDEF→ReduxxSEN5v4+0:2014:12
100T v SENSunsetR11corteziaSENATK→Asuna100T4v5+1:0322:11
100T v SENSunsetR15bang100TATK→ReduxxSEN2v5+0:4931:45
100T v SENSunsetR18vora100TATK→vora100Tsame team1v1+1:5038:33
100T v SENSunsetR18johnqtSENDEF→johnqtSENsame team1v0+1:5038:33
100T v SENSunsetR20Timotino100TATK→ReduxxSEN5v4+1:2442:42
100T v SENSunsetR22JerrwinSENDEF→Asuna100T5v5+0:4045:56
100T v SENSunsetR24vora100TATK→ReduxxSEN4v4+0:5451:08
100T v SENAscentR4JonahPSENATK→Asuna100T5v4+1:171:09:12
100T v SENAscentR8JonahPSENATK→Asuna100T2v4+1:161:17:24
100T v SENAscentR12JerrwinSENATK→Asuna100T4v5+1:061:26:09
100T v SENAscentR14corteziaSENDEF→corteziaSENsame team2v4+2:011:33:47
100T v SENAscentR14JonahPSENDEF→JonahPSENsame team1v4+2:011:33:47
100T v SENAscentR16JerrwinSENDEF→Asuna100T5v5+0:141:37:26
100T v SENAscentR18JerrwinSENDEF→Asuna100T5v5+0:521:41:57
100T v SENAscentR18Asuna100TATK→ReduxxSEN5v5+1:241:42:29
100T v SENAscentR21JerrwinSENDEF→Asuna100T2v5+1:201:50:56
100T v SENBreezemapnot verified→vora100T——
100T v SENBreezeR1johnqtSENDEF→johnqtSENsame team1v1+1:081:52:33
100T v SENBreezeR5JonahPSENDEF→Asuna100T5v5+1:121:59:35
100T v SENBreezeR5JerrwinSENDEF→JerrwinSENsame team2v4+2:172:00:40
100T v SENBreezeR5ReduxxSENDEF→ReduxxSENsame team1v4+2:172:00:40
100T v SENBreezeR11JerrwinSENDEF→Asuna100T5v5+0:182:13:47
100T v SENBreezeR11Asuna100TATK→ReduxxSEN3v5+0:512:14:20
100T v SENBreezeR16Cryocells100TDEF→ReduxxSEN5v5+0:062:25:06
100T v SENBreezeR16JerrwinSENATK→Asuna100T5v5+0:102:25:10
100T v SENBreezeR18ReduxxSENATK→Asuna100T4v4+0:082:29:48
C9 v LOUDHavenR1FireBallOpsC9DEF→DarkerLOUD1v3+1:061:25
C9 v LOUDHavenR10erdeLOUDATK→lukxoLOUDsame team4v5+0:3819:40
C9 v LOUDHavenR19erdeLOUDDEF→tkzinLOUDsame team2v1+0:4953:30
C9 v LOUDSunsetR1lukxoLOUDATK→lukxoLOUDsame team1v1+1:2458:15
C9 v LOUDSunsetR1ZellsisC9DEF→ZellsisC9same team1v0+1:2458:16
C9 v LOUDSunsetR6erdeLOUDATK→tkzinLOUDsame team4v3+0:411:07:43
C9 v LOUDSunsetR8ZellsisC9DEF→FireBallOpsC9same team2v3+1:181:11:59
C9 v LOUDSunsetR9erdeLOUDATK→lukxoLOUDsame team3v3+1:191:13:59
C9 v LOUDSunsetR11ZellsisC9DEF→OXYC9same team4v2+1:221:19:05
C9 v LOUDSunsetR17ZellsisC9ATK→JackkC9same team4v5+0:141:30:30
C9 v LOUDSunsetR17erdeLOUDDEF→tkzinLOUDsame team3v1+0:551:31:11
C9 v LOUDSummitR3lukxoLOUDATK→lukxoLOUDsame team3v1+1:461:46:36
C9 v LOUDSummitR7erdeLOUDATK→tkzinLOUDsame team4v4+1:031:55:52
C9 v LOUDSummitR10erdeLOUDATK→lukxoLOUDsame team3v4+0:392:01:58
C9 v LOUDSummitR12DaviHLOUDATK→ZellsisC93v3+1:102:07:14
C9 v LOUDSummitR13DaviHLOUDDEF→OXYC92v3+0:362:10:30
C9 v LOUDSummitR19erdeLOUDDEF→tkzinLOUDsame team3v1+1:152:20:18
G2 v SENBreezeR3valynG2DEF→ReduxxSEN4v5+1:035:47
G2 v SENBreezeR6jawgemoG2DEF→ReduxxSEN3v4+0:3713:50
G2 v SENBreezeR8not verified→trentG2——
Rows follow the killfeed within each round: the broadcast printed the kills in this order. Two kills too close to time apart keep it and carry an . Marks less certain · single witness · outside match records · not an ordinary kill · needs a look · checked by a person. Expand any row to read them in full.
126 rounds in this filter were measured less precisely
  • Lotus R6: the on-screen scoreboard froze for a moment
  • Lotus R9: the exact end of the round is known only to within a few seconds
  • Lotus R15: the on-screen scoreboard froze for a moment
  • Lotus R20: the on-screen scoreboard froze for a moment
  • Breeze R2: the on-screen scoreboard froze for a moment
  • Breeze R3: the exact end of the round is known only to within a few seconds
  • Breeze R8: the on-screen scoreboard froze for a moment
  • Breeze R11: the on-screen scoreboard froze for a moment
  • Breeze R13: the exact end of the round is known only to within a few seconds
  • Breeze R18: the exact end of the round is known only to within a few seconds
  • Breeze R23: kills landed after the round was already decided
  • Breeze R32: kills landed after the round was already decided
  • Sunset R12: the on-screen scoreboard froze for a moment
  • Sunset R17: kills landed after the round was already decided
  • Sunset R18: the exact end of the round is known only to within a few seconds
  • Breeze R4: kills landed after the round was already decided
  • Breeze R7: the on-screen scoreboard froze for a moment
  • Breeze R20: the exact end of the round is known only to within a few seconds
  • Summit R5: the on-screen scoreboard froze for a moment
  • Summit R6: the exact end of the round is known only to within a few seconds
  • Summit R9: the on-screen scoreboard froze for a moment
  • Breeze R13: kills landed after the round was already decided
  • Breeze R18: the exact end of the round is known only to within a few seconds
  • Breeze R20: the on-screen scoreboard froze for a moment
  • Breeze R25: the exact end of the round is known only to within a few seconds
  • …and 101 more.
Run-up 0s 3s 6s 10s 15s
Watch at 8:04 ↗ heat → trent · Breeze R2

Opens in one reused tab; a second click re-seeks the same tab. The broadcaster has embedding turned off for these VODs, so the video cannot play inside this page.

heat → trent KRU v G2 · Breeze · R2 · feed:15

Seeking to 8:04 minus 6s run-up · round clock +0:39

Class
Kill
Record
In the match records
Timing
Timing exact
Order
Order certain
Witness
Two witnesses
Source
Read from the killfeed
Spike
After the plant