Guides / How WoW datamining works, and what the game client does not contain

How WoW datamining works, and what the game client does not contain

Method guide | explains how ForeverDiff works | updated Sep 16, 2026

World of Warcraft ships its game data as database files (DB2) inside Blizzard's CASC content system, which sits on a public CDN. ForeverDiff pulls those files, parses them with community-maintained column definitions, and diffs them build to build. Important limit: the Classic client does not contain quest text, NPC names, vendor lists or loot tables. Those live on Blizzard's servers, so we never claim to have them.

  • The client ships DB2 tables (items, spells, talents, and more) inside CASC on a public CDN.
  • Column names come from WoWDBDefs, a community project we pin to one commit per build.
  • Quest text, NPC names, vendor and loot tables are server-side and are not in these files.

What the client actually ships

The game client stores its static data in DB2 tables inside Blizzard's CASC (Content Addressable Storage Container) system, distributed from a public CDN. Tables like ItemSparse (item names and stats), SpellName and Spell (spell names and tooltips), and Talent are the ones ForeverDiff reads. We pull the raw files ourselves and record a sha256 of each, so the source is fixed and checkable.

Reading the columns: WoWDBDefs

The tables ship as columns of numbers with no names attached. A community project, WoWDBDefs, maps those columns to human names. We pin one commit of it per build and record which commit, so the way we read a table is reproducible. When a new build adds a column nobody has named yet, we keep it as an unidentified field rather than guess.

Encrypted and withheld content

Blizzard ships some unreleased content encrypted and releases the keys later. Encrypted blocks read as absent, so a row inside one is recorded as withheld, never as removed. When Blizzard releases the key, the next build we pull turns those withheld rows into added rows.

What the client does not contain

This is the honest limit of the whole approach. In the Classic engine, quest text, NPC names, vendor inventories and drop or loot tables are server-side. They are not in the client files, so no amount of client datamining recovers them, and ForeverDiff never implies it has them. What we cover is items, spells and abilities, talents, recipes, item sets, enchants, factions, zones, classes and races, which we verified against a real Classic Era build. See the methodology for the full table list.

Frequently asked

Does ForeverDiff have quest text or NPC dialogue?

No. In the Classic client those are server-side and are not in the datamined files. We only publish what the client actually ships, and we say so plainly.

Do you scrape Wowhead or other databases?

Never. Every value comes from Blizzard's own client files, pulled from Blizzard's CDN. We use the community datamining site wago.tools only as an independent cross-check of our own parsing, never as a source.

Where do item and spell names come from?

From the client tables themselves: item names from ItemSparse, spell names from SpellName. They are read verbatim, not typed in by us.

Related

How we read this → · All guides →