PatchDelta / Reference
Methodology
Sources
All numeric and qualitative changes are sourced from publicly published patch notes, by game:
- Black Ops 7 (Treyarch / Activision)
callofduty.com/patchnotes. Where Treyarch publishes a multiplayer-specific note we use that as canonical; where MP changes ship bundled inside a Warzone-titled note, we flag the entry with reduced confidence and cross-reference community sources to confirm MP applicability.
- League of Legends (Riot Games)
leagueoflegends.com patch notes. Champion abilities and item stats pulled from Riot's structured per-patch HTML. Champion metadata and rune descriptions (name, path, short + long description) cross-referenced against Riot's Data Dragon (ddragon) static asset feed. Rune data is metadata-only — Riot does not publish per-rune balance deltas in structured before/after form, so trajectory charts are not rendered for runes.
- Valorant (Riot Games)
playvalorant.com patch notes. Riot writes Valorant balance in prose without explicit before/after pairs, so per-agent rows are captured as a qualitative changelog and surfaced as paraphrased summaries; trajectory charts are intentionally not rendered for Valorant entities.
- Counter-Strike 2 (Valve)
Steam News for app/730. Citations link to the canonical Valve Steam News URL per patch. CS2's prose carries deltas (e.g. price changes, damage tweaks) but rarely explicit before/after pairs, so most rows route to a qualitative changelog; structured numeric rows ship when an explicit pair is available.
- Apex Legends (Electronic Arts / Respawn Entertainment)
ea.com/games/apex-legends/apex-legends/news. Respawn publishes patch notes via the EA news portal; citations link to the canonical EA URL per patch. Weapon and Legend balance changes carry explicit before/after pairs where available; qualitative rows ship when only prose descriptions are provided.
Scope
- MODE · Multiplayer-equivalent only. BO7 Warzone, Zombies, and Campaign changes are excluded. LoL and CS2 don't have a mode split for balance purposes; Valorant's competitive balance lives in the agent updates.
- WINDOW · Each game's launch (or PatchDelta's first ingest for it) through its most recent published patch.
- ITEMS · BO7: Weapons (ARs, SMGs, Shotguns, LMGs, Marksman, Snipers, Pistols, Launchers, Specials, Melee), Scorestreaks, Field Upgrades, Equipment. LoL: Champions, Items, Runes. Valorant: Agents. CS2: Weapons (Rifles, SMGs, Snipers, Shotguns, Pistols, LMGs). Apex: Weapons.
Change classification
Every numerical change is classified along two primary axes. Confidence is the third axis and gets its own section below.
- Direction
buff, nerf, neutral, mixed, or qualitative (text-only without numerical change).
- Magnitude
small (<5%), medium (5–15%), large (15–30%), overhaul (>30% or rework).
Worked examples
A patch entry in the source data and the cumulative delta computed from it. The same shape repeats for every weapon and every patch since launch.
{
"id": "preseason_2025_11",
"date": "2025-11-26",
"title": "Preseason / Launch",
"url": "https://www.callofduty.com/patchnotes/...",
"changes": [
{
"weapon": "ak-27",
"stat": "damage_med",
"before": 24,
"after": 22,
"direction": "nerf"
},
{
"weapon": "ak-27",
"stat": "range_med",
"before": 40.6,
"after": 50.8,
"direction": "buff"
}
]
}{
netVerdict: "MIXED",
verdictScore: -2.1,
patchesTouched: ["preseason_2025_11", "season_01_2025_12", ...],
trajectory: [
{ patchId: "launch_or_baseline", value: 24, direction: "neutral" },
{ patchId: "preseason_2025_11", value: 22, direction: "nerf" }
]
}Buff on one axis and nerf on another inside a single patch classifies the entry mixed; the cumulative chart shows positive and negative components stacked rather than collapsed. Pure nerfs (timing windows opening, e.g. sprint-to-fire 210→220 ms) classify as nerf, magnitude small. Qualitative changes ("First-Shot Recoil increased") tag direction from context but do not contribute to cumulative numerical totals — only stats with explicit before/after numbers do.
Confidence levels
Every entry carries a confidence flag indicating how directly we can tie the change to the publisher's source (Treyarch for BO7, Riot for LoL and Valorant, Valve for CS2, Respawn for Apex). Lower confidence means the entry should be read with more skepticism, not that it's likely wrong. The examples below use BO7's sourcing; the same tiers apply per game.
- High
Change is documented in an official multiplayer-specific patch note on callofduty.com/patchnotes with explicit before/after numbers. Default classification for the bulk of entries.
- Medium
Change appears in a Warzone-titled note that bundles MP changes, or the patch note describes the change qualitatively without numbers and direction is inferred from context. Cross-checked against at least one independent source before publication.
- Low
Change is community-reported, observed in-game, or sourced from a datamined value not yet acknowledged by Treyarch. Marked openly and prioritized for reclassification once an official note appears. Low-confidence entries do not contribute to cumulative deltas until promoted.
Cumulative computation
A weapon's cumulative delta is the sum of every numerical change applied since launch. Reworks (when Treyarch substantially restructures a weapon) reset the baseline. A post-rework weapon is treated as a fresh entity, not as continuing deltas from the pre-rework version. Attachment-level changes are tracked separately and do not roll into the base weapon's cumulative delta.
Counter-gun heuristic
Each weapon detail page surfaces up to three "soft counters" — picks whose class typically holds an engagement-distance edge. This is a one-line gameplay shorthand, not an authoritative matchup model. We don't track encounter outcomes, accuracy, or player skill; the picks are derived deterministically from a class-rotation table plus the dataset's per-weapon verdictScore.
Algorithm:
- For the target weapon's class, look up the counter classes from a fixed table (e.g. SMG and Sniper counter AR — close-quarters and long-range pressure).
- Within each counter class, list weapons that have at least one tuning since launch and a positive cumulative verdictScore (i.e. currently-strong picks, not heavily-nerfed entries that share a class with a typical counter).
- Sort by verdictScore desc within each class; pick round-robin across counter classes so the list isn't dominated by one class.
- Each pick gets a one-line "why" reason from the class-pair table (e.g. "wins close-range with mobility").
Limitations: the rotation table is based on conventional first-person-shooter matchup wisdom for BO7-shaped games. It may be wrong for specific weapon archetypes (a long-barrel SMG that out-ranges its class, a slug-loaded shotgun with mid-range reach), and it doesn't account for attachments, perks, or map geometry. Treat counter picks as starting points for experimentation, not as gospel.
What we don't do
- Reproduce publisher patch-note prose verbatim. Every change description is paraphrased — no >5 consecutive words from any official source.
- Predict future changes or speculate on publisher intent.
- Track community tier rankings; only objective stat deltas.
- Track third-party balance mods or playlist-specific tuning.
One exception: League of Legends champion ability descriptions (the per-ability blurbs that appear on champion detail pages) are pulled verbatim from Riot's Data Dragon (ddragon) static asset feed. Data Dragon is a public CDN Riot operates specifically for community use and downstream tooling; the ability prose is editorially intended to be quoted, not paraphrased. Patch-note balance copy is still paraphrased per the rule above.
Analytics
PatchDelta collects anonymous usage data to understand which pages and features matter. A small banner appears on first visit asking you to accept or decline session-level tracking. Either choice is respected and persisted; you can clear it from your browser's localStorage at any time to be asked again.
What we collect when you accept: page views, clicks on cards and external links, search palette opens and selections, and CTA clicks. Each event is tagged with a random session ID (one per browser session) so we can see funnel chains. We never store raw search queries (only a length bucket), IP addresses, full user-agent strings (only a hashed prefix), or any personally identifying field.
What changes if you decline: the same events still fire (so aggregate traffic numbers stay accurate) but no session ID cookie is set, so individual visits cannot be linked into a funnel chain. No event captures a value tied to your identity in either case.
Data lives on a Vercel-managed Postgres database accessible only to the site operator. There is no third-party sharing, no advertising integration, and no resale. The implementation is in lib/track.ts; the schema in lib/migrations.ts.
Corrections
Found a data error? Email hello@patchdelta.net with the weapon, stat, patch, and a link to the source you believe is correct. Corrections ship within 48 hours of confirmation. See the about page for general info, or the FAQ for common questions.