{
 "generated": "2026-10-16",
 "fetchedAt": "2026-10-16 11:15 EDT",
 "staleRule": "stale: not updated in 12+ months; very stale: 24+ months (as of 2026-10-16).",
 "aimTypes": [
  "general",
  "tracking",
  "flicking",
  "projectile",
  "movement",
  "ability"
 ],
 "codes": [
  {
   "code": "VAXTA",
   "aim": "general",
   "desc": "All-in-one sandbox: pick any hero, set bot count and movement, and loosen up before queueing.",
   "heroes": [],
   "tags": [
    "warmup"
   ],
   "title": "Aim training and warm up 🎯",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2026-02-20",
   "created": "2021-09-08",
   "ageDays": 238,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/VAXTA"
  },
  {
   "code": "JEENZ",
   "aim": "general",
   "desc": "Fixed six-scenario routine (6- or 12-minute versions per the creator) that logs a score so you can track progress; tuned around hitscan.",
   "heroes": [
    "cassidy",
    "soldier-76"
   ],
   "tags": [
    "routine"
   ],
   "title": "Aim Routine 🎯",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2026-06-22",
   "created": "2026-04-19",
   "ageDays": 116,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/JEENZ"
  },
  {
   "code": "ZHTD8",
   "aim": "general",
   "desc": "Bots fight back on real maps, so you practice aim with cover, height and pressure instead of a flat range.",
   "heroes": [],
   "tags": [
    "realistic"
   ],
   "title": "Realistic Battle Bots Aim Trainer",
   "author": "D4iChiN",
   "authorUrl": "https://workshop.codes/u/D4iChiN%231178",
   "updated": "2026-10-12",
   "created": "2021-08-04",
   "ageDays": 4,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/ZHTD8"
  },
  {
   "code": "TXCXX",
   "aim": "general",
   "desc": "Open 1v1 arena for duels against a friend; exposes habits that bots don't punish.",
   "heroes": [],
   "tags": [
    "duel"
   ],
   "title": "1v1 Arena ⚔️",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2026-02-16",
   "created": "2020-06-21",
   "ageDays": 242,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/TXCXX"
  },
  {
   "code": "ATJZQ",
   "aim": "general",
   "desc": "Large customizable practice range with many toggles for range, targets and cooldowns.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "🎯 Advanced Practice Range | Aim Trainer",
   "author": "WezMasta",
   "authorUrl": "https://workshop.codes/u/WezMasta%231588",
   "updated": "2026-07-28",
   "created": "2026-03-12",
   "ageDays": 80,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/ATJZQ"
  },
  {
   "code": "HB018",
   "aim": "general",
   "desc": "Lightweight adjustable range for quick, low-setup reps.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "Samwich Aim Trainer",
   "author": "samwich",
   "authorUrl": "https://workshop.codes/u/samwich",
   "updated": "2026-09-16",
   "created": "2026-03-25",
   "ageDays": 30,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/HB018"
  },
  {
   "code": "DRF46",
   "aim": "general",
   "desc": "Broad aim trainer with multiple modes, recently maintained.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "「Tassadar Aim Trainer」",
   "author": "Tassadar",
   "authorUrl": "https://workshop.codes/u/Tassadar",
   "updated": "2026-10-11",
   "created": "2026-06-19",
   "ageDays": 5,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/DRF46"
  },
  {
   "code": "12621",
   "aim": "general",
   "desc": "Scenario-based trainer with configurable difficulty.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "Advanced Aim Trainer",
   "author": "peterjwest",
   "authorUrl": "https://workshop.codes/u/peterjwest",
   "updated": "2026-03-06",
   "created": "2024-12-10",
   "ageDays": 224,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/12621"
  },
  {
   "code": "AA5QQ",
   "aim": "general",
   "desc": "Collection of small aim exercises in one lobby.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "Aim Training Labs",
   "author": "mitsiee",
   "authorUrl": "https://workshop.codes/u/mitsiee",
   "updated": "2026-02-21",
   "created": "2020-05-07",
   "ageDays": 237,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/AA5QQ"
  },
  {
   "code": "9FEDF",
   "aim": "general",
   "desc": "Practice-range toolbox: extra utilities layered on the standard range.",
   "heroes": [],
   "tags": [
    "sandbox"
   ],
   "title": "CactusPuppy's Toolbox - Practice Range",
   "author": "CactusPuppy",
   "authorUrl": "https://workshop.codes/u/CactusPuppy",
   "updated": "2025-11-13",
   "created": "2025-11-13",
   "ageDays": 337,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/9FEDF"
  },
  {
   "code": "VERYD",
   "aim": "tracking",
   "desc": "Dedicated tracking mode: keep the crosshair glued to moving bots.",
   "heroes": [],
   "tags": [],
   "title": "Aim training: Tracking 🎯",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2024-07-06",
   "created": "2024-05-26",
   "ageDays": 832,
   "staleness": "very-stale",
   "staleNote": null,
   "url": "https://workshop.codes/VERYD"
  },
  {
   "code": "45W2N",
   "aim": "tracking",
   "desc": "KovaaK's-style 1v1 tracking target with strafes.",
   "heroes": [],
   "tags": [],
   "title": "KovaaK's tracking 1v1",
   "author": "WifeLeaver",
   "authorUrl": "https://workshop.codes/u/WifeLeaver",
   "updated": "2026-01-03",
   "created": "2025-06-01",
   "ageDays": 286,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/45W2N"
  },
  {
   "code": "NX7BZ",
   "aim": "tracking",
   "desc": "Bots that strafe like real players; good for reading direction changes.",
   "heroes": [
    "soldier-76"
   ],
   "tags": [],
   "title": "Montana's Ultra Realistic Strafe Aimtrainer",
   "author": "MoStackŜŊǍƇƘ",
   "authorUrl": "https://workshop.codes/u/MoStack%C5%9C%C5%8A%C7%8D%C6%87%C6%98%232490",
   "updated": "2026-07-10",
   "created": "2026-03-25",
   "ageDays": 98,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/NX7BZ"
  },
  {
   "code": "A9FBX",
   "aim": "tracking",
   "desc": "Strafing-target trainer for micro-adjustments.",
   "heroes": [],
   "tags": [],
   "title": "Aim Strafing Trainer",
   "author": "Mightyy",
   "authorUrl": "https://workshop.codes/u/Mightyy",
   "updated": "2025-08-04",
   "created": "2021-01-01",
   "ageDays": 438,
   "staleness": "stale",
   "staleNote": null,
   "url": "https://workshop.codes/A9FBX"
  },
  {
   "code": "9G6Z2",
   "aim": "tracking",
   "desc": "Evasive bot for smooth tracking reps.",
   "heroes": [],
   "tags": [],
   "title": "smooth tracking evasive INT",
   "author": "yvkil",
   "authorUrl": "https://workshop.codes/u/yvkil",
   "updated": "2025-02-08",
   "created": "2025-02-08",
   "ageDays": 615,
   "staleness": "stale",
   "staleNote": null,
   "url": "https://workshop.codes/9G6Z2"
  },
  {
   "code": "TR2E7",
   "aim": "tracking",
   "desc": "Older strafing trainer focused on small corrections.",
   "heroes": [],
   "tags": [],
   "title": "Aim strafing trainer",
   "author": "Jesss",
   "authorUrl": "https://workshop.codes/u/Jesss%2321571",
   "updated": "2023-06-03",
   "created": "2023-04-04",
   "ageDays": 1231,
   "staleness": "very-stale",
   "staleNote": null,
   "url": "https://workshop.codes/TR2E7"
  },
  {
   "code": "NADDS",
   "aim": "flicking",
   "desc": "Dedicated flicking mode: snap to targets and confirm the shot.",
   "heroes": [],
   "tags": [],
   "title": "Aim training: Flicking 🎯",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2024-06-23",
   "created": "2023-09-24",
   "ageDays": 845,
   "staleness": "very-stale",
   "staleNote": null,
   "url": "https://workshop.codes/NADDS"
  },
  {
   "code": "BETF8",
   "aim": "flicking",
   "desc": "Short flick warm-up with quick target swaps.",
   "heroes": [],
   "tags": [],
   "title": "Flicking Aim Warmup",
   "author": "sntr",
   "authorUrl": "https://workshop.codes/u/sntr",
   "updated": "2026-10-04",
   "created": "2026-10-04",
   "ageDays": 12,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/BETF8"
  },
  {
   "code": "51GMA",
   "aim": "flicking",
   "desc": "Flicks at long range for snipers and precision hitscan.",
   "heroes": [
    "widowmaker",
    "ashe",
    "cassidy"
   ],
   "tags": [],
   "title": "Long range flick training",
   "author": "Soldier67",
   "authorUrl": "https://workshop.codes/u/Soldier67%232965",
   "updated": "2026-01-01",
   "created": "2026-01-01",
   "ageDays": 288,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/51GMA"
  },
  {
   "code": "2EGDV",
   "aim": "flicking",
   "desc": "Ashe headshot reps against bots that don't stand still.",
   "heroes": [
    "ashe"
   ],
   "tags": [],
   "title": "Ashe Headshots with Inaccurate Bots",
   "author": "Majjespecter",
   "authorUrl": "https://workshop.codes/u/Majjespecter%231366",
   "updated": "2026-03-23",
   "created": "2025-10-22",
   "ageDays": 207,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (3 patches since), so some details may differ.",
   "url": "https://workshop.codes/2EGDV"
  },
  {
   "code": "ATJHG",
   "aim": "flicking",
   "desc": "Headshot reps against bots that move precisely (same creator as 2EGDV).",
   "heroes": [
    "ashe"
   ],
   "tags": [],
   "title": "Ashe Headshots with Accurate Bots",
   "author": "Majjespecter",
   "authorUrl": "https://workshop.codes/u/Majjespecter%231366",
   "updated": "2025-10-22",
   "created": "2025-10-22",
   "ageDays": 359,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/ATJHG"
  },
  {
   "code": "CQY3A",
   "aim": "flicking",
   "desc": "Widowmaker shot analysis: shows how far off your misses land.",
   "heroes": [
    "widowmaker"
   ],
   "tags": [],
   "title": "[New 2026] Widow Diff Analyzer",
   "author": "leonwangg1",
   "authorUrl": "https://workshop.codes/u/leonwangg1",
   "updated": "2026-02-25",
   "created": "2026-02-25",
   "ageDays": 233,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-09-08 patch changed this hero (2 patches since), so some details may differ.",
   "url": "https://workshop.codes/CQY3A"
  },
  {
   "code": "JZ192",
   "aim": "flicking",
   "desc": "Cassidy one-shot practice drill.",
   "heroes": [
    "cassidy"
   ],
   "tags": [],
   "title": "Cassidy 1 shot \"relaunch\"",
   "author": "Luizin10",
   "authorUrl": "https://workshop.codes/u/Luizin10",
   "updated": "2026-02-18",
   "created": "2024-04-07",
   "ageDays": 240,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/JZ192"
  },
  {
   "code": "PYDEY",
   "aim": "flicking",
   "desc": "1v1 Widowmaker sniping arena.",
   "heroes": [
    "widowmaker"
   ],
   "tags": [
    "duel"
   ],
   "title": "1v1 Widow Arena ⚔️",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2021-06-15",
   "created": "2020-06-21",
   "ageDays": 1949,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-09-08 patch changed this hero (3 patches since), so some details may differ.",
   "url": "https://workshop.codes/PYDEY"
  },
  {
   "code": "JPYHG",
   "aim": "general",
   "desc": "Adaptive trainer that speeds targets up as you get kills.",
   "heroes": [],
   "tags": [
    "adaptive"
   ],
   "title": "ioStux DPO Aim Trainer",
   "author": "ioStux",
   "authorUrl": "https://workshop.codes/u/ioStux",
   "updated": "2023-03-02",
   "created": "2023-02-27",
   "ageDays": 1324,
   "staleness": "very-stale",
   "staleNote": null,
   "url": "https://workshop.codes/JPYHG"
  },
  {
   "code": "45FAN",
   "aim": "projectile",
   "desc": "Projectile workshop: leading shots on moving targets at range.",
   "heroes": [],
   "tags": [],
   "title": "Blockerman's Projectile Workshop",
   "author": "Blockerman_101",
   "authorUrl": "https://workshop.codes/u/Blockerman_101",
   "updated": "2026-09-19",
   "created": "2026-09-19",
   "ageDays": 27,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/45FAN"
  },
  {
   "code": "TKBR3",
   "aim": "projectile",
   "desc": "Hit targets in the air; for leading airborne heroes.",
   "heroes": [],
   "tags": [],
   "title": "Aerial Aim Trainer",
   "author": "Giacomand",
   "authorUrl": "https://workshop.codes/u/Giacomand%232371",
   "updated": "2026-06-07",
   "created": "2020-08-04",
   "ageDays": 131,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/TKBR3"
  },
  {
   "code": "X1YB0",
   "aim": "projectile",
   "desc": "Junkrat direct-hit airshots.",
   "heroes": [
    "junkrat"
   ],
   "tags": [],
   "title": "Junkrat Airshot Practice V2",
   "author": "JohnnyBoy",
   "authorUrl": "https://workshop.codes/u/JohnnyBoy%2312550",
   "updated": "2026-03-11",
   "created": "2026-03-05",
   "ageDays": 219,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/X1YB0"
  },
  {
   "code": "RF1E4",
   "aim": "projectile",
   "desc": "Pharah rockets in a ball game — fun direct-hit and splash practice.",
   "heroes": [
    "pharah"
   ],
   "tags": [],
   "title": "Rocket Ball",
   "author": "Dropthatbeat",
   "authorUrl": "https://workshop.codes/u/Dropthatbeat",
   "updated": "2026-03-04",
   "created": "2024-02-26",
   "ageDays": 226,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-08-11 patch changed this hero (3 patches since), so some details may differ.",
   "url": "https://workshop.codes/RF1E4"
  },
  {
   "code": "4JFM3",
   "aim": "projectile",
   "desc": "Wuyang orb aim trainer.",
   "heroes": [
    "wuyang"
   ],
   "tags": [],
   "title": "Wuyang Aim Trainer",
   "author": "Hydraballs",
   "authorUrl": "https://workshop.codes/u/Hydraballs%231183",
   "updated": "2025-09-19",
   "created": "2025-09-19",
   "ageDays": 392,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (8 patches since), so some details may differ.",
   "url": "https://workshop.codes/4JFM3"
  },
  {
   "code": "PCJZ8",
   "aim": "projectile",
   "desc": "Hanzo headshot practice.",
   "heroes": [
    "hanzo"
   ],
   "tags": [],
   "title": "Hanzo Headshot Practice",
   "author": "Carson23",
   "authorUrl": "https://workshop.codes/u/Carson23%2311640",
   "updated": "2023-12-31",
   "created": "2023-12-27",
   "ageDays": 1020,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (2 patches since), so some details may differ.",
   "url": "https://workshop.codes/PCJZ8"
  },
  {
   "code": "1H6Y7",
   "aim": "projectile",
   "desc": "Projectile headshot reps.",
   "heroes": [],
   "tags": [],
   "title": "Projectile HeadShot AimTrainer",
   "author": "Futz",
   "authorUrl": "https://workshop.codes/u/Futz%2311182",
   "updated": "2022-11-22",
   "created": "2022-11-22",
   "ageDays": 1424,
   "staleness": "very-stale",
   "staleNote": null,
   "url": "https://workshop.codes/1H6Y7"
  },
  {
   "code": "JZ1H5",
   "aim": "projectile",
   "desc": "Ana-only paintball free-for-all — live practice for dart aim.",
   "heroes": [
    "ana"
   ],
   "tags": [
    "live"
   ],
   "title": "Ana Paintball FFA",
   "author": "thenickm2",
   "authorUrl": "https://workshop.codes/u/thenickm2%231474",
   "updated": "2024-11-19",
   "created": "2020-09-08",
   "ageDays": 696,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/JZ1H5"
  },
  {
   "code": "CQ4HZ",
   "aim": "movement",
   "desc": "Bots use movement abilities, so you aim at dashes, jumps and blinks.",
   "heroes": [],
   "tags": [
    "aim-vs-movement"
   ],
   "title": "Unique Action Aim Trainer",
   "author": "D4iChiN",
   "authorUrl": "https://workshop.codes/u/D4iChiN%231178",
   "updated": "2026-10-04",
   "created": "2026-05-02",
   "ageDays": 12,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/CQ4HZ"
  },
  {
   "code": "HEWAZ",
   "aim": "movement",
   "desc": "Pharah flight-control trainer.",
   "heroes": [
    "pharah"
   ],
   "tags": [],
   "title": "Pharah Flying Trainer",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2024-02-18",
   "created": "2023-04-30",
   "ageDays": 971,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-08-11 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/HEWAZ"
  },
  {
   "code": "PP13P",
   "aim": "movement",
   "desc": "Lúcio wall-ride runner course.",
   "heroes": [
    "lucio"
   ],
   "tags": [],
   "title": "Lucio Runner",
   "author": "Wesker",
   "authorUrl": "https://workshop.codes/u/Wesker%2321645",
   "updated": "2026-07-13",
   "created": "2026-07-13",
   "ageDays": 95,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (2 patches since), so some details may differ.",
   "url": "https://workshop.codes/PP13P"
  },
  {
   "code": "KVKKR",
   "aim": "movement",
   "desc": "Lúcio surf course.",
   "heroes": [
    "lucio"
   ],
   "tags": [],
   "title": "Lucio Surf",
   "author": "duckling_2728",
   "authorUrl": "https://workshop.codes/u/duckling_2728",
   "updated": "2025-03-12",
   "created": "2020-06-30",
   "ageDays": 583,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/KVKKR"
  },
  {
   "code": "N8ZFR",
   "aim": "movement",
   "desc": "Wrecking Ball gauntlet on Dorado.",
   "heroes": [
    "wrecking-ball"
   ],
   "tags": [],
   "title": "Dorado Wrecking Ball Gauntlet",
   "author": "fasteroid",
   "authorUrl": "https://workshop.codes/u/fasteroid",
   "updated": "2026-07-07",
   "created": "2026-07-07",
   "ageDays": 101,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (2 patches since), so some details may differ.",
   "url": "https://workshop.codes/N8ZFR"
  },
  {
   "code": "XKWJV",
   "aim": "movement",
   "desc": "Wrecking Ball training center.",
   "heroes": [
    "wrecking-ball"
   ],
   "tags": [],
   "title": "Wrecking ball training center",
   "author": "Fryeman",
   "authorUrl": "https://workshop.codes/u/Fryeman",
   "updated": "2024-03-26",
   "created": "2021-02-05",
   "ageDays": 934,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/XKWJV"
  },
  {
   "code": "MT53C",
   "aim": "movement",
   "desc": "Winston leap parkour.",
   "heroes": [
    "winston"
   ],
   "tags": [],
   "title": "🐒 Winston Leaping Parkour",
   "author": "DragonEngineer",
   "authorUrl": "https://workshop.codes/u/DragonEngineer",
   "updated": "2026-02-15",
   "created": "2021-08-19",
   "ageDays": 243,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-09-08 patch changed this hero (3 patches since), so some details may differ.",
   "url": "https://workshop.codes/MT53C"
  },
  {
   "code": "2TN47",
   "aim": "movement",
   "desc": "Juno double-jump parkour.",
   "heroes": [
    "juno"
   ],
   "tags": [],
   "title": "Juno Double Jump parkour",
   "author": "KoiBabe",
   "authorUrl": "https://workshop.codes/u/KoiBabe%231614",
   "updated": "2025-05-17",
   "created": "2025-05-17",
   "ageDays": 517,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (5 patches since), so some details may differ.",
   "url": "https://workshop.codes/2TN47"
  },
  {
   "code": "1VANW",
   "aim": "movement",
   "desc": "Mercy movement parkour.",
   "heroes": [
    "mercy"
   ],
   "tags": [],
   "title": "Mercy Parkour-Runasapi",
   "author": "MimikyuGame",
   "authorUrl": "https://workshop.codes/u/MimikyuGame%231502",
   "updated": "2026-07-06",
   "created": "2026-07-06",
   "ageDays": 102,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (1 patch since), so some details may differ.",
   "url": "https://workshop.codes/1VANW"
  },
  {
   "code": "HWVFM",
   "aim": "movement",
   "desc": "Mercy Guardian Angel and super-jump tool.",
   "heroes": [
    "mercy"
   ],
   "tags": [],
   "title": "Mimi's Guardian Angel & Superjump Tool",
   "author": "Mimi",
   "authorUrl": "https://workshop.codes/u/Mimi%2323128",
   "updated": "2020-12-28",
   "created": "2020-12-28",
   "ageDays": 2118,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (5 patches since), so some details may differ.",
   "url": "https://workshop.codes/HWVFM"
  },
  {
   "code": "08ZSZ",
   "aim": "movement",
   "desc": "Doomfist training facility.",
   "heroes": [
    "doomfist"
   ],
   "tags": [],
   "title": "Doomfist Training Facility",
   "author": "Daddy",
   "authorUrl": "https://workshop.codes/u/Daddy",
   "updated": "2022-07-08",
   "created": "2022-07-08",
   "ageDays": 1561,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (6 patches since), so some details may differ.",
   "url": "https://workshop.codes/08ZSZ"
  },
  {
   "code": "6JC8V",
   "aim": "movement",
   "desc": "Tracer aim training with blink-distance markers.",
   "heroes": [
    "tracer"
   ],
   "tags": [],
   "title": "Aim training w/Tracer blink distance markers",
   "author": "nira",
   "authorUrl": "https://workshop.codes/u/nira",
   "updated": "2026-02-22",
   "created": "2026-02-22",
   "ageDays": 236,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/6JC8V"
  },
  {
   "code": "WJ5G7",
   "aim": "movement",
   "desc": "Kiriko parkour with headshot targets.",
   "heroes": [
    "kiriko"
   ],
   "tags": [],
   "title": "Kiriko Headshot Parkour Numbani",
   "author": "BelgianTony",
   "authorUrl": "https://workshop.codes/u/BelgianTony%231842",
   "updated": "2025-01-02",
   "created": "2025-01-02",
   "ageDays": 652,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-10-13 patch changed this hero (7 patches since), so some details may differ.",
   "url": "https://workshop.codes/WJ5G7"
  },
  {
   "code": "9WNGS",
   "aim": "ability",
   "desc": "Skill-shot trainer for sleep dart, rock, hook and javelin.",
   "heroes": [
    "ana",
    "sigma",
    "roadhog",
    "orisa"
   ],
   "tags": [],
   "title": "Sleep/Rock/Hook/Javelin Trainer",
   "author": "-lysine",
   "authorUrl": "https://workshop.codes/u/-lysine",
   "updated": "2026-08-03",
   "created": "2022-11-14",
   "ageDays": 74,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/9WNGS"
  },
  {
   "code": "RFYNP",
   "aim": "ability",
   "desc": "Roadhog hook trainer.",
   "heroes": [
    "roadhog"
   ],
   "tags": [],
   "title": "hook trainer",
   "author": "maxersk",
   "authorUrl": "https://workshop.codes/u/maxersk",
   "updated": "2025-08-17",
   "created": "2025-08-17",
   "ageDays": 425,
   "staleness": "stale",
   "staleNote": "Last updated before the Season 5 Roadhog changes; hook behavior may differ.",
   "url": "https://workshop.codes/RFYNP"
  },
  {
   "code": "VHAT6",
   "aim": "ability",
   "desc": "Kiriko mastery course covering her kit.",
   "heroes": [
    "kiriko"
   ],
   "tags": [],
   "title": "「Hero Mastery: Kiriko」",
   "author": "Tassadar",
   "authorUrl": "https://workshop.codes/u/Tassadar",
   "updated": "2026-09-09",
   "created": "2026-08-23",
   "ageDays": 37,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-13 patch changed this hero (2 patches since), so some details may differ.",
   "url": "https://workshop.codes/VHAT6"
  },
  {
   "code": "BS0N1",
   "aim": "ability",
   "desc": "Winston kit training facility.",
   "heroes": [
    "winston"
   ],
   "tags": [],
   "title": "🐵 Winston Training Facility",
   "author": "DragonEngineer",
   "authorUrl": "https://workshop.codes/u/DragonEngineer",
   "updated": "2025-04-26",
   "created": "2021-12-12",
   "ageDays": 538,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-09-08 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/BS0N1"
  },
  {
   "code": "BSRXK",
   "aim": "ability",
   "desc": "Mei kit training facility.",
   "heroes": [
    "mei"
   ],
   "tags": [],
   "title": "🧊 Mei Training Facility",
   "author": "DragonEngineer",
   "authorUrl": "https://workshop.codes/u/DragonEngineer",
   "updated": "2025-04-26",
   "created": "2020-06-28",
   "ageDays": 538,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-06-16 patch changed this hero (1 patch since), so some details may differ.",
   "url": "https://workshop.codes/BSRXK"
  },
  {
   "code": "4862T",
   "aim": "ability",
   "desc": "Tracer 180 pulse-bomb practice.",
   "heroes": [
    "tracer"
   ],
   "tags": [],
   "title": "Tracer 180 Pulse Practice",
   "author": "Giraffe323",
   "authorUrl": "https://workshop.codes/u/Giraffe323",
   "updated": "2023-02-10",
   "created": "2023-02-10",
   "ageDays": 1344,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (5 patches since), so some details may differ.",
   "url": "https://workshop.codes/4862T"
  },
  {
   "code": "VYB14",
   "aim": "ability",
   "desc": "Tracer pulse-bomb warm-up.",
   "heroes": [
    "tracer"
   ],
   "tags": [],
   "title": "Tracer Pulse Bomb Warm-up 💣",
   "author": "Seita",
   "authorUrl": "https://workshop.codes/u/Seita%232315",
   "updated": "2021-06-15",
   "created": "2020-09-27",
   "ageDays": 1949,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (5 patches since), so some details may differ.",
   "url": "https://workshop.codes/VYB14"
  },
  {
   "code": "XRGGW",
   "aim": "ability",
   "desc": "Ana sleep-dart against divers.",
   "heroes": [
    "ana"
   ],
   "tags": [],
   "title": "Ana sleep dive practice (Genji, Sombra, Winston, Doomfist)",
   "author": "Scar",
   "authorUrl": "https://workshop.codes/u/Scar%2312301",
   "updated": "2022-04-07",
   "created": "2022-04-07",
   "ageDays": 1653,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/XRGGW"
  },
  {
   "code": "KQNBT",
   "aim": "ability",
   "desc": "Kiriko Suzu timing (creator marks it WIP).",
   "heroes": [
    "kiriko"
   ],
   "tags": [],
   "title": "Kiriko Suzu timing Training (WIP) 0.1.0",
   "author": "ChefCantCook",
   "authorUrl": "https://workshop.codes/u/ChefCantCook%231514",
   "updated": "2022-12-05",
   "created": "2022-12-05",
   "ageDays": 1411,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-13 patch changed this hero (7 patches since), so some details may differ.",
   "url": "https://workshop.codes/KQNBT"
  },
  {
   "code": "WA18P",
   "aim": "flicking",
   "desc": "Whack-a-mole reaction shots.",
   "heroes": [],
   "tags": [
    "fun"
   ],
   "title": "Whack-a-Mole! (for Aim training)",
   "author": "D4iChiN",
   "authorUrl": "https://workshop.codes/u/D4iChiN%231178",
   "updated": "2025-11-09",
   "created": "2025-11-09",
   "ageDays": 341,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/WA18P"
  },
  {
   "code": "3PWX2",
   "aim": "movement",
   "desc": "Swift Strike (dash) practice against up to eight bots, with damage multipliers, strafing and a choice of bot hero.",
   "heroes": [
    "genji"
   ],
   "tags": [
    "dash"
   ],
   "title": "Genji Dash Training V5",
   "author": "TomyB",
   "authorUrl": "https://workshop.codes/u/TomyB",
   "updated": "2024-09-01",
   "created": "2020-06-25",
   "ageDays": 775,
   "staleness": "very-stale",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (3 patches since), so some details may differ.",
   "url": "https://workshop.codes/3PWX2"
  },
  {
   "code": "95WAG",
   "aim": "ability",
   "desc": "Arena sandbox for Scattergun aim, Gracie hits, Carnage and Commanding Shout, with bots set up for each.",
   "heroes": [
    "junker-queen"
   ],
   "tags": [
    "kit"
   ],
   "title": "Junker Queen Kit Trainer",
   "author": "GJigglypuff3",
   "authorUrl": "https://workshop.codes/u/GJigglypuff3%231250",
   "updated": "2026-02-15",
   "created": "2025-09-26",
   "ageDays": 243,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/95WAG"
  },
  {
   "code": "YEM1J",
   "aim": "ability",
   "desc": "Scenario drills where you save allies from, or survive, specific ultimates (Meteor Strike, Graviton Surge, Pulse Bomb and more) using Petal Platform and the rest of the kit.",
   "heroes": [
    "lifeweaver"
   ],
   "tags": [
    "kit"
   ],
   "title": "Hero Mastery: Lifeweaver",
   "author": "jejopads",
   "authorUrl": "https://workshop.codes/u/jejopads",
   "updated": "2026-10-07",
   "created": "2023-09-07",
   "ageDays": 9,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/YEM1J"
  },
  {
   "code": "SS98Z",
   "aim": "ability",
   "desc": "Neon Junction drill for timing Catnapper pulls into the train, with 11 bots including tanks.",
   "heroes": [
    "jetpack-cat"
   ],
   "tags": [
    "map"
   ],
   "title": "Jetpack Cat Roadkill Trainer",
   "author": "deadlibor",
   "authorUrl": "https://workshop.codes/u/deadlibor",
   "updated": "2026-07-06",
   "created": "2026-07-06",
   "ageDays": 102,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (4 patches since), so some details may differ.",
   "url": "https://workshop.codes/SS98Z"
  },
  {
   "code": "YVXG5",
   "aim": "movement",
   "desc": "Collection of 330+ Brigitte bash-jump routes across most maps; also works with friends.",
   "heroes": [
    "brigitte"
   ],
   "tags": [
    "rollouts"
   ],
   "title": "Brigitte Rollout Trainer | Multiplayer Ready",
   "author": "sunriseseagull",
   "authorUrl": "https://workshop.codes/u/sunriseseagull",
   "updated": "2025-09-06",
   "created": "2025-01-17",
   "ageDays": 405,
   "staleness": "stale",
   "staleNote": "Last updated before Blizzard's 2026-09-08 patch changed this hero (6 patches since), so some details may differ.",
   "url": "https://workshop.codes/YVXG5"
  },
  {
   "code": "RYAV4",
   "aim": "movement",
   "desc": "Rialto route map with 30+ Venture spots, burrow-dash gaps and roof positions, plus custom respawn points.",
   "heroes": [
    "venture"
   ],
   "tags": [
    "spots"
   ],
   "title": "Venture Spots (Rialto)",
   "author": "VentureVolt",
   "authorUrl": "https://workshop.codes/u/VentureVolt",
   "updated": "2026-09-07",
   "created": "2026-09-07",
   "ageDays": 39,
   "staleness": "fresh",
   "staleNote": "Last updated before Blizzard's 2026-10-06 patch changed this hero (1 patch since), so some details may differ.",
   "url": "https://workshop.codes/RYAV4"
  },
  {
   "code": "9V2H2",
   "aim": "movement",
   "desc": "Ilios parkour course for Anran with timed levels and ability restrictions, solo or with a friend.",
   "heroes": [
    "anran"
   ],
   "tags": [
    "parkour"
   ],
   "title": "Anran Parkour Ilios",
   "author": "maemini",
   "authorUrl": "https://workshop.codes/u/maemini",
   "updated": "2026-10-14",
   "created": "2026-10-14",
   "ageDays": 2,
   "staleness": "fresh",
   "staleNote": null,
   "url": "https://workshop.codes/9V2H2"
  }
 ],
 "heroes": {
  "ana": {
   "weapon": "Biotic Rifle",
   "blizzardLine": "Long-range rifle that heals allies and damages enemies.",
   "aim": [
    "flicking",
    "projectile"
   ],
   "note": "precision rifle / revolver",
   "specific": [
    "JZ1H5",
    "9WNGS",
    "XRGGW"
   ]
  },
  "anran": {
   "weapon": "Zhuque Fans",
   "blizzardLine": "Hand fans that shoot fiery projectiles.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "9V2H2"
   ]
  },
  "ashe": {
   "weapon": "The Viper",
   "blizzardLine": "Semi-automatic rifle.",
   "aim": [
    "flicking"
   ],
   "note": "precision rifle / revolver",
   "specific": [
    "51GMA",
    "2EGDV",
    "ATJHG"
   ]
  },
  "baptiste": {
   "weapon": "Biotic Launcher",
   "blizzardLine": "Three-round burst gun.",
   "aim": [
    "tracking",
    "flicking"
   ],
   "note": "burst weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "bastion": {
   "weapon": "Configuration: Assault",
   "blizzardLine": "A slow-moving tank with a powerful rotary cannon.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "brigitte": {
   "weapon": "Rocket Flail",
   "blizzardLine": "Melee weapon with extended range.",
   "aim": [],
   "note": "melee or lock-on primary",
   "specific": [
    "YVXG5"
   ]
  },
  "cassidy": {
   "weapon": "Peacekeeper",
   "blizzardLine": "Accurate, powerful revolver.",
   "aim": [
    "flicking"
   ],
   "note": "precision rifle / revolver",
   "specific": [
    "JEENZ",
    "51GMA",
    "JZ192"
   ]
  },
  "dmon": {
   "weapon": "Plasma Saber",
   "blizzardLine": "Fast energy melee weapon.",
   "aim": [],
   "note": "melee or lock-on primary",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "doctrine": {
   "weapon": "Eternal Scepter",
   "blizzardLine": "Mid-range weapon that heals allies and damages enemies.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "domina": {
   "weapon": "Photon Magnum",
   "blizzardLine": "Medium-range beam that culminates in a high impact shot.",
   "aim": [
    "tracking"
   ],
   "note": "beam / cone weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "doomfist": {
   "weapon": "Hand Cannon",
   "blizzardLine": "Short-range weapon with spread. Reloads automatically.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [
    "08ZSZ"
   ]
  },
  "dva": {
   "weapon": "Fusion Cannons",
   "blizzardLine": "Automatic short-range spread weapons.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [],
   "noneNote": "Only old D.Va codes turned up (for example a bomb-radius visualizer last updated in 2020). Codes can expire after six months, so we left them out."
  },
  "echo": {
   "weapon": "Tri-Shot",
   "blizzardLine": "Fires 3 shots at once, in a triangle pattern.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "emre": {
   "weapon": "Synthetic Burst Rifle",
   "blizzardLine": "Three-round burst weapon.",
   "aim": [
    "tracking",
    "flicking"
   ],
   "note": "burst weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "freja": {
   "weapon": "Bola Shot",
   "blizzardLine": "Fire an explosive bola. Hitting an enemy wraps them up and pulls in other nearby enemies.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "genji": {
   "weapon": "Shuriken",
   "blizzardLine": "Throw an accurate burst of 3 projectiles.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "3PWX2"
   ]
  },
  "hanzo": {
   "weapon": "Storm Bow",
   "blizzardLine": "Hold to charge then release to launch arrows further.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "PCJZ8"
   ]
  },
  "hazard": {
   "weapon": "Bonespur",
   "blizzardLine": "Fire a burst of spikes.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "illari": {
   "weapon": "Solar Rifle",
   "blizzardLine": "Long range auto-charging rifle.",
   "aim": [
    "flicking"
   ],
   "note": "precision rifle / revolver",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "jetpack-cat": {
   "weapon": "Biotic Pawjectiles",
   "blizzardLine": "Mid-range projectile spread that heals allies and damages enemies.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "SS98Z"
   ]
  },
  "junker-queen": {
   "weapon": "Scattergun",
   "blizzardLine": "Pump action shotgun.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [
    "95WAG"
   ]
  },
  "junkrat": {
   "weapon": "Frag Launcher",
   "blizzardLine": "Bouncing explosive projectile weapon.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "X1YB0"
   ]
  },
  "juno": {
   "weapon": "Mediblaster",
   "blizzardLine": "Burst fire weapon that heals allies and damages enemies.",
   "aim": [
    "tracking",
    "flicking"
   ],
   "note": "burst weapon",
   "specific": [
    "2TN47"
   ]
  },
  "kiriko": {
   "weapon": "Healing Ofuda",
   "blizzardLine": "Channel a burst of healing talismans that can seek targeted allies.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "WJ5G7",
    "VHAT6",
    "KQNBT"
   ]
  },
  "lifeweaver": {
   "weapon": "Healing Blossom",
   "blizzardLine": "Hold to charge a healing burst. Release to heal a targeted ally.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "YEM1J"
   ]
  },
  "lucio": {
   "weapon": "Sonic Amplifier",
   "blizzardLine": "Sonic projectile launcher.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "PP13P",
    "KVKKR"
   ]
  },
  "mauga": {
   "weapon": "Incendiary Chaingun",
   "blizzardLine": "Igniting enemies with Incendiary Chaingun grants 50 overhealth.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "mei": {
   "weapon": "Endothermic Blaster",
   "blizzardLine": "Short-range spray weapon that slows enemies.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [
    "BSRXK"
   ]
  },
  "mercy": {
   "weapon": "Caduceus Staff",
   "blizzardLine": "Hold to heal an ally.",
   "aim": [],
   "note": "melee or lock-on primary",
   "specific": [
    "1VANW",
    "HWVFM"
   ]
  },
  "mizuki": {
   "weapon": "Spirit Glaive",
   "blizzardLine": "Bouncing projectile that damages enemies.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "moira": {
   "weapon": "Biotic Grasp",
   "blizzardLine": "Hold to heal all allies in front of you. Consumes biotic energy.",
   "aim": [
    "tracking"
   ],
   "note": "beam / cone weapon",
   "specific": [],
   "noneNote": "Only a 2020 Fade jump trainer turned up; it may have expired, so we left it out."
  },
  "orisa": {
   "weapon": "Augmented Fusion Driver",
   "blizzardLine": "Automatic heat based weapon.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [
    "9WNGS"
   ]
  },
  "pharah": {
   "weapon": "Rocket Launcher",
   "blizzardLine": "Long-range explosive projectile weapon.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "RF1E4",
    "HEWAZ"
   ]
  },
  "ramattra": {
   "weapon": "Void Accelerator (Omnic Form)",
   "blizzardLine": "Fire a stream of projectiles.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "reaper": {
   "weapon": "Hellfire Shotguns",
   "blizzardLine": "Short-range spread weapons.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "reinhardt": {
   "weapon": "Rocket Hammer",
   "blizzardLine": "Devastating melee weapon.",
   "aim": [],
   "note": "melee or lock-on primary",
   "specific": [],
   "noneNote": "Shatter practice codes we found date from 2020–2023 and may have expired; we left them out."
  },
  "roadhog": {
   "weapon": "Scrap Gun",
   "blizzardLine": "Short-range shotgun that fires in two bursts.",
   "aim": [
    "flicking",
    "tracking"
   ],
   "note": "close-range spread / spray",
   "specific": [
    "9WNGS",
    "RFYNP"
   ]
  },
  "shion": {
   "weapon": "Kira Pistols",
   "blizzardLine": "Rapid-fire anima pistols.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "sierra": {
   "weapon": "Helix Rifle",
   "blizzardLine": "Automatic assault weapon. Shoots in a spiral pattern, gaining accuracy with sustained fire.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "sigma": {
   "weapon": "Hyperspheres",
   "blizzardLine": "Launch two charges which implode after a short duration, dealing damage in an area.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "9WNGS"
   ]
  },
  "sojourn": {
   "weapon": "Railgun",
   "blizzardLine": "Rapid firing projectiles that generate energy on hit.",
   "aim": [
    "projectile",
    "flicking"
   ],
   "note": "projectile primary, charged railgun shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "soldier-76": {
   "weapon": "Heavy Pulse Rifle",
   "blizzardLine": "Automatic assault weapon.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [
    "JEENZ",
    "NX7BZ"
   ]
  },
  "sombra": {
   "weapon": "Machine Pistol",
   "blizzardLine": "Short-range automatic weapon.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "symmetra": {
   "weapon": "Photon Projector",
   "blizzardLine": "Short-range beam weapon with increasing damage.",
   "aim": [
    "tracking"
   ],
   "note": "beam / cone weapon",
   "specific": [],
   "noneNote": "Only a 2021 teleporter trainer turned up; it may have expired, so we left it out."
  },
  "torbjorn": {
   "weapon": "Rivet Gun",
   "blizzardLine": "Slow firing, long-ranged weapon.",
   "aim": [
    "projectile",
    "flicking"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "tracer": {
   "weapon": "Pulse Pistols",
   "blizzardLine": "Short-range automatic weapons.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [
    "6JC8V",
    "4862T",
    "VYB14"
   ]
  },
  "vendetta": {
   "weapon": "Palatine Fang",
   "blizzardLine": "Hard-light greatsword. Combo swings to end with a destructive overhead slash.",
   "aim": [],
   "note": "melee or lock-on primary",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  },
  "venture": {
   "weapon": "SMART Excavator",
   "blizzardLine": "Launch a seismic charge that bursts after a short distance.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "RYAV4"
   ]
  },
  "widowmaker": {
   "weapon": "Widow's Kiss",
   "blizzardLine": "Automatic assault weapon.",
   "aim": [
    "flicking"
   ],
   "note": "precision rifle / revolver",
   "specific": [
    "51GMA",
    "CQY3A",
    "PYDEY"
   ]
  },
  "winston": {
   "weapon": "Tesla Cannon",
   "blizzardLine": "Electric frontal-cone weapon.",
   "aim": [
    "tracking"
   ],
   "note": "beam / cone weapon",
   "specific": [
    "MT53C",
    "BS0N1"
   ]
  },
  "wrecking-ball": {
   "weapon": "Quad Cannons",
   "blizzardLine": "Automatic assault weapons.",
   "aim": [
    "tracking"
   ],
   "note": "automatic weapon",
   "specific": [
    "N8ZFR",
    "XKWJV"
   ]
  },
  "wuyang": {
   "weapon": "Xuanwu Staff",
   "blizzardLine": "Fire a damaging water orb. Hold to control its trajectory and empower its explosion.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [
    "4JFM3"
   ]
  },
  "zarya": {
   "weapon": "Particle Cannon",
   "blizzardLine": "Short-range linear beam weapon.",
   "aim": [
    "tracking"
   ],
   "note": "beam / cone weapon",
   "specific": [],
   "noneNote": "The one Zarya training range we found was last updated in 2022, so it may no longer work; we left it out."
  },
  "zenyatta": {
   "weapon": "Orb of Destruction",
   "blizzardLine": "Energy projectile weapon.",
   "aim": [
    "projectile"
   ],
   "note": "projectile / charged shot",
   "specific": [],
   "noneNote": "We searched Workshop.codes by hero name on Oct 16, 2026 and found no practice code built around this hero's kit that we could verify."
  }
 },
 "progression": [
  {
   "stage": "beginner",
   "title": "Beginner — learn your weapon",
   "goal": "Get comfortable with one hero's primary fire against slow, predictable bots before adding pressure.",
   "steps": [
    {
     "text": "Open the all-in-one sandbox, pick your hero, start with 1–3 slow-moving bots.",
     "codes": [
      "VAXTA"
     ],
     "duration": "per-drill"
    },
    {
     "text": "Do one drill matching your weapon type (see your hero below).",
     "codes": [],
     "duration": "per-drill"
    },
    {
     "text": "Then play real matches; keep the whole warm-up short.",
     "codes": [],
     "duration": "warmup-total"
    }
   ]
  },
  {
   "stage": "intermediate",
   "title": "Intermediate — target your weakness",
   "goal": "Pick drills by aim type and add movement, strafes and ability usage.",
   "steps": [
    {
     "text": "Run a fixed routine and log the score so you can compare sessions.",
     "codes": [
      "JEENZ"
     ],
     "duration": null,
     "note": "Routine itself runs 6 or 12 minutes (creator description); no guide-agreed session length."
    },
    {
     "text": "Practice against bots that strafe or use movement abilities.",
     "codes": [
      "NX7BZ",
      "CQ4HZ"
     ],
     "duration": null
    },
    {
     "text": "Hero-specific movement or ability drill from your hero list.",
     "codes": [],
     "duration": null
    }
   ]
  },
  {
   "stage": "ranked",
   "title": "Ranked — pre-queue warm-up + pressure",
   "goal": "Short warm-up before Competitive, then realistic pressure in separate sessions.",
   "steps": [
    {
     "text": "Short pre-queue warm-up: your hero in the sandbox plus one aim-type drill.",
     "codes": [
      "VAXTA"
     ],
     "duration": "warmup-total"
    },
    {
     "text": "Bots that fight back on real maps.",
     "codes": [
      "ZHTD8"
     ],
     "duration": null
    },
    {
     "text": "1v1 duels with a friend to expose habits.",
     "codes": [
      "TXCXX"
     ],
     "duration": null
    }
   ]
  }
 ],
 "durationClaims": [
  {
   "id": "warmup-total",
   "text": "A pre-match warm-up of roughly 5–15 minutes is enough; longer sessions belong in separate practice time.",
   "sources": [
    "1v9",
    "esportsnet"
   ]
  },
  {
   "id": "per-drill",
   "text": "About 5 minutes per drill before switching to the next one.",
   "sources": [
    "1v9",
    "esportsnet"
   ]
  }
 ],
 "guides": {
  "1v9": {
   "name": "1v9.gg — Best Overwatch 2 Aim Training Codes (2026)",
   "url": "https://1v9.gg/blog/best-overwatch-aim-training-custom-game-codes",
   "date": "2026 (excerpt via search; site refused direct fetch)"
  },
  "esportsnet": {
   "name": "esports.net — Best Overwatch 2 Custom Game Codes (2026)",
   "url": "https://www.esports.net/wiki/guides/overwatch-custom-game-codes/",
   "date": "2026-01-29"
  }
 },
 "rejected": {
  "codes": [
   "9MWR8",
   "F5RYK",
   "8QE38",
   "FCBPY",
   "2NK0P",
   "K3W7Y",
   "JR98T"
  ],
  "why": "Listed by fpsaim.com but not found on workshop.codes; that guide was excluded."
 },
 "failed": []
}