Details

Addon ID: 24903
Addon Version: 1.2.0
Expansion: 1.60
Upload date: Oct 06, 2026
Last Updated: Oct 06, 2026
Downloads: Less than 100
Website: Source Link

Expansion


Categories


Developers

Pmptasty
Pmptasty Creator

LibItemDB — Offline Item Database for WoW

LibItemDB is a lightweight library that lets any addon look up World of Warcraft items offline — resolve an item's name to its link or id (and back), and filter by type and subtype — without the item being in the game's cache.

WoW ships no searchable item table and no “find item by name” API. LibItemDB solves that by shipping a pre-built database captured from a full client item scan, so players never wait for a scan and addon authors get instant, reliable lookups.

This is a developer library. Install it if another addon lists it as a dependency, or depend on it if you are an addon author.

What it can do

  • Resolve a name to a full, clickable item link — even for items you've never seen
  • Resolve a name to an item id, or an id to name / quality / type / subtype / equip slot / item level
  • Read an item's stats (strength, stamina, spell power, resistances, …)
  • Read the buff a consumable grants on use — food, elixirs, flasks, potions, scrolls, sharpening stones and oils — as the same stats (e.g. +12 Stamina, +25 Agility), and browse them grouped by a category we classify ourselves (flask / elixir / potion / scroll / food / weapon), since the game files every vanilla consumable under a single type. Only real buffs are listed — bandages and other heal-over-time items grant no stat, so they stay out rather than showing up as a buff they aren't. Each consumable also knows its “one active at a time” group (one agility elixir, one strength buff, one flask, one food, one weapon oil, …), which the game itself never records — so a buffs planner can stop you from stacking two of the same kind
  • Read the stats a raid, world, self or totem buff grants — Mark of the Wild, Battle Shout, Blessing of Might, the Dragonslayer and Songflower world buffs, shaman totems, and more — at every rank, so a planner can fold a player's active buffs into their totals. Percentage buffs (Blessing of Kings, Spirit of Zandalar, Sayge's Dark Fortune) are included as real percentages, not flat numbers. Ask for every buff in a category (raid / world / self / totem) at once, so a buff picker builds itself from the database instead of a hand-kept list
  • Read any class's full talent tree — every tree, with tiers, prerequisites, ranks and names — so a planner can lay out a build for any class offline, not just the one you're logged in on (all the game itself will tell an addon) — plus each talent's stat effects (crit, hit, % stats, weapon-specific bonuses), so a planned build folds into gear scoring
  • Look up where an item comes from — a raid or dungeon boss, a quest (and where it's done), a vendor, crafting, a PvP reward, or reputation gear (and which faction) — and list every item that drops in an instance, organised by instance and boss (great for wishlists and loot planners)
  • Say how likely a boss is to drop it — a drop chance for every boss in Classic and Burning Crusade, heroic dungeons included, computed from the tested server loot tables the emulators use rather than counted from player uploads, so a loot planner can show “Lucifron — 33%” next to Felheart Gloves without you installing a loot addon. Where no single number exists (a drop that only rolls for a party holding a quest) it says nothing rather than guessing
  • Rank gear by Best-in-Slot / EP value for a class and spec — the top items for a slot, or "what to want from this raid" ranked, plus a full BiS gear list per phase. It reads the stats the game data hides — on-equip hit/crit, defense/dodge/parry/block, weapon skill, spell penetration — matches school-specific spell damage to the right caster, so a “+Fire damage” off-hand counts for a fire mage and not a frost one (generic “+spell damage” still counts for everyone), and values set bonuses and “Use:” / chance-on-hit effects, with a dedicated tank value scale for survival gear. Hunter quivers, ammo pouches and arrows/bullets are valued too — their ranged attack speed and damage are a real DPS gain that is otherwise ignored. Lists only gear your class and faction can actually obtain, and you can load your own BiS list or stat weights. Every value comes with a full breakdown — the stat, the uptime, the weight and the total — so you can see exactly how a number was reached
  • A chance-on-hit effect is valued by what actually sets it off — not by how fast you swing. An effect can fire on a weapon swing, on a spell cast, on one of your damage-over-time ticks, or on you being struck, and the game files record which. A shield that procs when you are hit is rated by how often a boss hits you; a trinket that procs off your damage-over-time ticks is rated by how often those tick. Only the swing case follows your weapon, so equipping something faster no longer inflates the value of a shield or a caster trinket that has nothing to do with swinging
  • Value a school-restricted item only for the specs that use that school. Tell the scorer which magic schools a spec actually casts and a “+Fire damage” piece stops adding its spell damage for a shadow priest — while its stamina, its crit and everything else still count, and a generic “+spell damage” item is untouched
  • Score anything with stats on the same scale as gear — hand the library a buff, consumable, enchant or talent's stats and get back its EP value for a class and spec, computed by the very same scorer that ranks items. So “is this flask worth more than that trinket?” is a fair comparison, and a planner can total gear, buffs and a talent build together without inventing its own maths (which quietly gets mana-regen and spell-power consumables wrong)
  • Say which professions use an item as a crafting material — Linen Cloth for Tailoring and First Aid, Copper Bar for Blacksmithing and Engineering — for 469 materials on Classic, 618 on Burning Crusade, 969 on Mists and 579 on Forever. It is worked out from the game's own recipe data rather than a hand-written list, so nothing is missing because somebody forgot to add it. It shows on the item's tooltip automatically — hover a material and you see which expansion it is from, where it comes from (the profession that gathers or makes it — Mining, Herbalism, Skinning, Fishing, Tailoring, Enchanting — or Drop, Vendor and so on) and which professions use it, drawn as profession icons like SmexyMats did, plus the Item ID on every item. It works on the game's tooltip and on one an addon drew itself, with no other addon needed and nothing to set up. Every line, the icons, their size and a colour-blind mode can be changed on the Tooltip tab of /itemdb. Gathering is known on Classic, Burning Crusade and Mists of Pandaria, and the expansion on Classic and Burning Crusade
  • Alt+click any item to see where to get it. A window lists every way to get the item, one row per place: the creatures that drop it with their drop chance and the zone they are in, the vendors that sell it, the ore veins, herbs, fishing pools and chests that hold it, and the bosses, quests, professions, reputations and PvP rewards that give it. Hover a row for its map coordinates. Vendors of the other faction are hidden until you ask for them. A search box across the top finds any item by name, so you can look one up without having it: type part of the name, click the item, and see where to get it. /itemdb where opens the window straight to that search. You can also set a key in the game's Key Bindings (under AddOns) to open it on whatever item is under your mouse, and on the Tooltip tab of /itemdb you can change Alt+click to another click, or switch it off, if another addon uses it. Creature, vendor and node locations are known on Classic, Burning Crusade and Mists of Pandaria
  • Carry other addons' tooltip lines into a tooltip an addon drew itself — AllTheThings, Recipe Master, Leatrix Plus, TradeSkillMaster and Auctionator. A bridge, not a re-implementation: the lines are theirs, so they read exactly as they do everywhere else, icons and all. Most of these offer nothing for another addon to call — they simply add to the game's own tooltip — so the bridge replays what they already do onto the tooltip in front of you instead of asking them for anything. All optional, none required, and each is checked at the moment it is used, so an addon that updates or moves drops out of the tooltip instead of breaking it
  • Answer what an item is worth — from TradeSkillMaster, Auctionator or Auctioneer if you run one and have switched it on, or from LibItemDB's own Auction House scan if you don't. Set your price sources up once, here, and every addon that uses LibItemDB prices items the same way. With TradeSkillMaster on, the TSM Desktop App's region-wide figures answer first — the whole region's auction house, kept current by the app — so you get complete, always-fresh prices without anyone scanning. An addon asks for a named figure — minimum buyout, market value or historical — and gets back the number, where it came from and how old it is, never a guess dressed up as a fact and never a zero for “don't know”. Prices are kept per realm and faction. An addon can also hand it a price list of its own — a guild's published prices, say — and that list becomes a source like the others, first in line until you move it, so every member values a donation at the same figure whatever price addons they run. Type /itemdb for the window: which sources are on, in what order, how old each one's data is, the default figure, auto-scan, and a Scan now button; the Auction House itself gets an ItemDB Scan button; /itemdb price and an item name, link or id tells you what it would answer and why
  • Read what a vendor pays you for an item — and unlike asking the game, it is there even for an item the character has never laid eyes on, so a bag or bank valuation never comes up blank while it waits for the game to answer. 18,140 items on Classic, 21,720 on Burning Crusade
  • Read what a vendor charges for an item — the number the game only reveals while you are stood at a merchant with their window open, so a cost-to-craft can price the reagents you would simply buy (thread, vials, dye, flux) with no vendor in sight. Only items a vendor genuinely stocks in unlimited supply for gold are priced, so ore and herbs are correctly left out rather than given a price no shop would honour. It is the standard, before-discount price — reputation discounts are applied by the server as you buy and are never sent to addons
  • Tell whether an item is restricted to a faction or class, or is a hidden/never-implemented item — so a planner can filter to what the player can really get
  • Tell whether this character can actually use it — not just the item's class tag but the class's training: a hunter cannot wield a mace, a mage cannot hold a shield, and a level-39 hunter cannot wear mail yet (mail and plate arrive at 40). One answer for a “usable by me” filter, so a guild bank, a quest-reward list and a loot planner all agree, instead of each carrying its own copy of the rules. Whether the item's required level is “not yet” or “not for me” is left to the addon, and faction is a separate question, so a guild bank can leave it out
  • Read a socket gem's colours and stats — which socket colours it fits (red, yellow, blue, several at once for a hybrid, or a meta) and what it grants — for 132 gems on Burning Crusade and 605 on Mists, so a gem picker or a best-gem-per-colour table builds itself from the database. Classic and Forever have no sockets, so nothing is listed there rather than something wrong
  • Recognise mounts as mounts. Classic files every mount under “Junk”, so a bag, bank or guild-bank list shows them as miscellaneous clutter — this types them as Mount instead, without anybody keeping a list of mount names by hand
  • Search by name, item type, subtype, quality, item-level range, and stat — e.g. plate that has strength
  • Reconstruct random-suffix variants ("of the Bear", "of the Eagle", …) from a compact id pair, letting the game render the full, correctly-scaled tooltip
  • Enumerate types/subtypes and iterate the entire database

For addon authors

local DB = LibStub("LibItemDB-1.0", true)
if DB and DB:IsReady() then
    local link  = DB:GetLink(19019)       -- coloured, interactive Thunderfury link
    local stats = DB:GetStats(13468)      -- { ITEM_MOD_..._SHORT = n, ... }
    local buff  = DB:GetEffects(18045)    -- Tender Wolf Steak use-effect: { ITEM_MOD_STAMINA_SHORT=12, ITEM_MOD_SPIRIT_SHORT=12 }
    for _, r in ipairs(DB:Search({ classID = 4, stat = "STRENGTH" })) do print(r.link) end

    -- where does it drop, and how often? Each boss row carries `rate` (percent) when the
    -- server loot tables give one; absent means unknown, never 0%. (MINOR 27)
    local drops = DB:GetSources(16921)          -- { { instance="Onyxia's Lair", boss="Onyxia", rate=... }, ... }
    local pct   = DB:GetDropRate(18814, 11502)  -- one pair, without building the list; nil = unknown
    for _, inst in ipairs(DB:GetInstances()) do
        print(inst.name, #DB:GetInstanceItems(inst.key)) -- "Molten Core  125", ...
    end

    -- can THIS character use it: the item's class tag AND the class's armour / shield /
    -- weapon proficiency at their level (a hunter and a mace: false). Deliberately NOT the
    -- required level and NOT faction -- ask those separately. (MINOR 27)
    local ok = DB:CanUse(18814)                 -- defaults: the LIVE player's class and level
    local ok1 = DB:CanUse(18814, profile.classID, profile.level)  -- an ALT: pass them, never default
    local ok2 = DB:ClassProficient(3, 2, 4, "INVTYPE_WEAPON")   -- hunter, weapon, 1H mace: false

    -- score a consumable's buff on the SAME scale as gear (4 = rogue, combat spec)
    local ep = DB:ScoreStats(DB:GetEffects(13452), 4, "combat")  -- Elixir of the Mongoose: ~38.8 EP

    -- required PLAYER level to equip it -- not the item level, and they differ
    local req = DB:GetRequiredLevel(19019)      -- 60 (Thunderfury is item level 80)

    -- what a vendor CHARGES you, in copper. The opposite of GetItemInfo's sellPrice
    -- (what a vendor pays you), and the client has no API for it at all. This is the
    -- BASE price -- a Neutral player's; reputation discounts are applied server-side.
    -- nil means we have no vendor record, NOT proof that no vendor sells it: the
    -- vendor list comes from a later expansion's data, so it can miss an old vendor.
    local cost = DB:GetVendorBasePrice(2321)    -- 100 (Fine Thread, 1s)

    -- and the other direction: what a vendor PAYS you. GetItemInfo has this too, but
    -- only once the item is cached -- this is always populated, even for an item the
    -- player has never seen. Roughly a quarter of the buy price; never mix them up.
    local paid = DB:GetVendorSellPrice(2321)    -- 25

    -- WHAT IS IT WORTH (MINOR 25): the first enabled source that carries the named
    -- statistic -- "minBuyout" | "market" | "historical" | "best" (the default) --
    -- answers, with provenance. nil means no data, never 0. With TradeSkillMaster
    -- enabled its Desktop App REGION figures answer first -- the whole region's
    -- auction house, kept current by the app. Feature-gate on `DB.GetPrice`.
    local copper, why = DB:GetPrice(13468)
    if copper then
        print(DB:FormatMoney(copper), why.sourceName, why.statistic, DB:FormatPriceAge(why.age))
    end
    local prices, n = DB:GetPrices(bankItemIDs, "historical")  -- many at once, one source probe
    DB.RegisterCallback(myAddon, "LibItemDB_ScanComplete", function() refresh() end)

    -- FEED IT A LIST (MINOR 26): a price list from outside this client -- a guild's
    -- published one -- becomes a source like the others, first in precedence by default,
    -- with its own toggle and row in /itemdb. A feed REPLACES the list for this realm +
    -- faction; junk is dropped per statistic. Feature-gate on `DB.StoreExternalPrices`.
    DB:StoreExternalPrices("guildpricelist", "guild list (Pimptasty)", {
        [13468] = { market = 1250000, at = observedEpoch },
    })
    DB:ClearExternalPrices("guildpricelist")      -- withdrawn; the row keeps its settings

    -- random suffix (field 8 of a modern link): rebuild and let the game render it
    local s = DB:BuildItemString(15218, 1196)   -- "item:15218::::::1196"
    GameTooltip:SetHyperlink(s)                 -- full Crystal Sword of the Bear tooltip

    -- an enchant (and, on TBC, up to four gems) can ride along so a stored link
    -- rebuilds exactly as it was
    local e = DB:BuildItemString(10132, 863, 2504)  -- "item:10132:2504:::::863"

    -- SCORE AN ITEM, and gate school-restricted spell damage to the schools this
    -- spec actually casts. `schools` is a SET, and one match is enough. Omit it and
    -- nothing changes -- a "+Fire" piece keeps its spell damage for everyone.
    local ep = DB:GetItemScore(19019, 1, "fury", {
        setBonus = true,
        schools  = { fire = true },              -- MINOR 24; see GetItemSchools
        attack   = { hitsPerSec = 1.4 },         -- paperdoll: WEAPON SWINGS ONLY
    })

    -- Itemised, for a tooltip: total == GetItemScore, and the factors of each row
    -- multiply back to that row's ep, so you can render the whole derivation.
    local b = DB:GetItemScoreBreakdown(19019, 1, "fury", { setBonus = true })
    for _, p in ipairs(b.parts) do print(p.key, p.ep) end

    -- A proc row says WHAT SETS IT OFF, in `sc`: "any" (weapon swing), "spell"
    -- (a cast), "periodic" (a DoT tick) or "taken" (you were struck). Only "any"
    -- follows opts.attack -- nothing in a paperdoll knows the other three. `pm` is
    -- the raw client trigger mask the label came from, if you need a finer answer.
    for _, row in ipairs(DB:GetProcEffect(1168) or {}) do   -- Skullflame Shield
        print(row.b, row.sc, row.pm)                        -- "damage  taken  40"
    end
end

Key methods, by what they answer:

  • Identity & lookup — IsReady, Count, HasItem, GetName, GetID, GetInfo, GetQuality, GetItemLevel, GetRequiredLevel, GetLink, GetItemType, Search, Iterate, GetClasses, GetSubClasses, ResolveName, GetMeta
  • Stats & effects — GetStats, GetEffects, HasEffects, GetItemSchools, GetUseEffect, GetProcEffect, HasUnscoredProc
  • Prices — GetPrice, GetPrices, GetPriceSources, HasPriceData, StoreExternalPrices, ClearExternalPrices (feed a list of your own), GetVendorBuyPrice, GetVendorBasePrice (what a vendor charges), GetVendorSellPrice (what it pays you), FormatMoney, FormatPriceAge; the scan — StartFullScan, StartTargetedScan, GetScanState, GetScanListings, CancelScan, IsAuctionHouseOpen, AuctionHouseSearch; the settings — GetPriceSetting, SetPriceSetting, GetPriceSourceOrder, SetPriceSourceOrder, MovePriceSource, IsPriceSourceEnabled, SetPriceSourceEnabled, GetPriceStatistics; the window — TogglePriceWindow, OpenPriceWindow
  • Random suffixes, enchants, gems — BuildItemString, GetSuffixLink, GetRandomProperty, GetRandomProperties, HasRandomProperty, ResolveSuffix, GetGem, GetGems
  • Where it comes from, and how often — GetSources (each boss row carries its drop rate in percent when known), GetDropRate, HasSources, HasSourceData, GetInstances, GetInstanceItems, GetInstanceEncounters, GetLootModules, GetLootCategories, GetLootSections, GetExpansion
  • Where to get it — GetItemPlaces (creatures, vendors and nodes, with zones, chances, conditions and map points), BuildWhereRows, BuildWhereSearchRows; the window — OpenWhereWindow, WhereSearch; Questbook — WhereTrack, WhereStopTracking; the player's click — IsWhereClick, ParseClickBinding, ClickBindingText
  • Sets — GetItemSet, GetSet, GetSetBonusStats, GetSetBonusEP
  • Who can use it — CanUse (the item's class tag and the class's armour, shield and weapon proficiency, level-aware for mail and plate at 40), ClassProficient, GetArmorCap and the proficiency tables as readable data (PROFICIENCY); ClassUsable, GetItemClasses, GetPlayerClass, GetPlayerLevel; FactionUsable, GetItemFaction, GetPlayerFaction; IsHidden, GetSeason, IsSeasonalRealm
  • Scoring & ranking — GetItemScore, GetItemScoreBreakdown, ScoreStats, RankItems, GetSlotRanking, GetRaidBiS, GetWeightStats, GetScoreModel, GetScoringVersion, HasScoring, HasBiSWeights
  • Best-in-Slot lists — GetBiS, GetBiSItem, IsBiS, HasBiS, GetBiSSources, GetBiSSpecs, GetBiSPhases, GetDefaultBiSSource, SetDefaultBiSSource, GetBiSWeights
  • Crafting materials — GetReagentUses, IsReagent, AddReagentLines, EnableReagentTooltip, IsReagentTooltipEnabled, SetReagentTooltipEnabled, GetTooltipOption, SetTooltipOption, GetTooltipSwitches
  • Buffs, consumables, talents — GetAuraBuff, GetAuraBuffs, GetAuraGroup, GetBuffCategories, GetBuffsInCategory, GetConsumableCategories, GetConsumableBuffs, GetConsumableGroup, GetTalentTree, GetTalentClasses, GetTalentEffect
  • Bring your own data — LoadBiS, LoadBiSWeights, LoadScoreModel, RegisterScoring

Tooltip bridge (all optional, all no-ops when the other addon isn't there): ApplyExternalTooltipHooks, AttachExternalRecipeInfo, GetExternalPrices, GetAvailableIntegrations.

-- Carry every installed addon's tooltip lines onto a tooltip you drew yourself.
-- Your tooltip must be a NAMED frame inheriting GameTooltipTemplate, and must be
-- populated first -- handlers ask it what it is showing. Call this BEFORE adding
-- your own lines. GameTooltip itself is never touched.
myTooltip:SetOwner(parent, "ANCHOR_RIGHT")
myTooltip:SetItemByID(itemID)                                   -- or SetSpellByID
DB:ApplyExternalTooltipHooks(myTooltip, "OnTooltipSetItem")
myTooltip:Show()

-- Or read the numbers and lay them out yourself.
for _, p in ipairs(DB:GetExternalPrices(itemLink) or {}) do
    print(p.label, p.formatted or p.value)   -- formatted is nil for non-money sources
end

Calling it in a hot loop

Every getter is a decode of one packed string, so the library is cheap per call and the thing that actually costs you a frame is call volume. Measured against the shipped Vanilla data (17,604 items) on desktop Lua 5.1 — the game client is slower, so treat these as a floor:

  • GetInfo ~2 µs · GetStats ~3.8 µs · GetItemScore ~7.8 µs
  • GetSlotRanking with no pool ~8.4 ms — it is slot-indexed, so asking for all seventeen slots costs one pass over the database, not seventeen

The trap is not this library, it is what you recompute around it. A row builder that scores a few thousand items will call the scorer a few thousand times, which is fine; what is not fine is rebuilding the same constant context inside that loop. If you are reading the player's equipped weapons, or re-scoring their worn gear, once per row, that is the cost — not the lookup. Hoist it, and invalidate on PLAYER_EQUIPMENT_CHANGED, UNIT_INVENTORY_CHANGED (filtered to "player") and PLAYER_ENTERING_WORLD. That last one matters: GetInventoryItemID answers nil both for “slot empty” and “inventory has not loaded yet”, and you cannot tell them apart, so a cache built before login lands stays wrong all session.

Two smaller guarantees worth knowing: items that score equal come back in a stable order within a session, so a redrawn ranking will not reshuffle; and GetSlotRanking's speed-up carries no MINOR bump — same signature, same results, nothing to feature-gate.

Asking for something, or reporting a fault

Open an issue on the project's GitHub repository (Pimptasty/ItemDB) or ask on Discord (below). Say which game version, which item, and what you expected — for a price question, also which price addons you run and what /itemdb price printed for the item. Every fix and its reason is recorded in the repository's CHANGELOG.md, with the request it answered named in the entry, so they survive the session that produced them.

Data coverage

Stats and item levels are language-independent and ship once; names ship per language (untranslated items fall back to English, so every language is complete). LibItemDB is available for every version, Retail included.

  • Vanilla (Era / Hardcore / SoD) — 24,127 items
  • The Burning Crusade (Anniversary realms) — 30,032 items
  • Wrath of the Lich King — 45,155 items; Cataclysm — 65,797 items (English only so far)
  • Mists of Pandaria (Classic) — 88,265 items
  • Retail — 176,130 items with their stats (English only, and no gear scoring yet)
  • Forever (beta) — 23,596 items, in 12 languages (Italian added; a few items the game itself never translated stay in English)

Classic, Burning Crusade, Mists and Forever are in all 12 client languages. Italian is worth a word of its own, because it is the game rather than this addon: Blizzard never translated these items into Italian, so an Italian client shows English item names — and this database returns the same English names, which is the correct answer rather than missing data. That is true on Classic, Burning Crusade and Mists alike.

About Forever. It is a beta, and two things work differently there. There are no random suffixes (“of the Bear”, “of the Eagle”) — the game simply does not have them, so nothing can look them up. And gear scoring uses Classic's stat weights, because nobody publishes Forever ones yet — Forever's talent trees are Classic's trees (the same 432 talents in the same 27 trees, every one in the same position and with the same number of ranks), so the scoring rules carry over. The talents themselves have been rebalanced, though, and we have now checked rather than assumed: comparing what each talent actually does on both games, most of them differ — including the weapon specialisations the gear scores lean on, three of which now share the name “Weaponmaster” while remaining three separate talents. So on Forever the scores are a rough starting point rather than tuned numbers, and weapon-skill values in particular are known to be off. Scoring works and nothing is hidden from you; set your own weights if you care about the details. Everything else — name and link lookup, item level, quality, type, armor, weapon damage, class and faction restrictions, required levels, item sets, vendor prices, consumable buffs — works. Forever's item stats come from a full scan of the game client itself, the same way every other version's do.

What works on which version

FeatureClassicBurning CrusadeMistsForever
Name and link lookup, search, quality, type, item level, statsYesYesYesYes
Random suffixes (“of the Bear”)YesYesYesNo — the game has none
Socket gemsNo — no socketsYesYesNo — no sockets
Mounts recognised as mountsYesYesYesYes
Boss drops by instanceYesYesUp to Wrath instancesClassic instances, plus 3 new Forever dungeons
Per-boss drop chanceYesYesYesNo
Quest, vendor, crafted and world-drop originsYesYesYesCrafted and chests only
Reputation and PvP rewardsYesYesNoYes
“Where to get it” window (Alt+click, or a click you choose)YesYesYesNo
Material tooltip: which professions use itYesYesYesYes
Material tooltip: the gathering profession it comes fromYesYesYesNo
Tooltip “Expansion:” lineYesYesYesNo
Class, faction and required levelYesYesYesYes
Race-locked gearYesYesYesYes
“Can this character use it” (armour, shield and weapon training)YesYesYesYes
Item sets and set bonusesYesYesYesYes
Consumable buffsYesYesYesYes
Consumable “one at a time” groupsYesYesYesYes
Raid, world, self and totem buffsYesYesRaid buffsYes
Talent trees and talent effectsYesYesNo — Mists has talent tiersYes
Gear scoringYesYesYesYes, on Classic's weights
Ready-made best-in-slot listsYesYes (none for hunters)YesNo
Vendor buy and sell prices, built inYesYesYesYes
Vendor prices remembered from vendors you open (with your reputation discount)YesYesYesYes
Price sources, Auction House scan and /itemdbYesYesYesYes
All 12 client languagesYesYesYesYes

Not every feature is available on every version yet. Item lookups, consumable buffs, hidden-item filtering, the price sources and the “can this character use it” rules work everywhere. Vanilla and Burning Crusade also have where-items-drop with per-boss drop rates, quest / vendor / crafting / PvP / reputation origins, item sets and set bonuses, class, race and faction restrictions, required levels, vendor buy and sell prices, buffs, talents, gear scoring and ready-made best-in-slot lists (Burning Crusade has none for hunters, which WoWSims does not publish). Forever has all of that bar two things: there are no per-boss drop rates, because no source publishes them for this game yet — a drop tells you which boss, but not how often — and there are no ready-made best-in-slot lists, though gear scoring itself works (on Classic's weights, as described above). Its where-items-drop covers the Classic instances that carry over, 545 items across 27 of them, plus another 1,972 that come from a profession or a chest rather than a boss kill, and three of Forever's own new dungeons — The Hall of Thanes, City of Dalaran and Ruins of Lordaeron, 33 items — from a community list that is still being confirmed. Mists carries drops, with drop chances, for every instance up to Wrath of the Lich King — 5,501 items across 80 of them — but not yet Cataclysm or Mists instances of its own. “Where to get it” — the creatures, vendors and nodes with their zones and map points, and the gathering profession on a material's tooltip — covers Classic, Burning Crusade, Wrath, Cataclysm, Mists and Retail; on Retail, only 11 crafting materials from Dragonflight onward have none, most of them removed from the game or never added. Forever has neither yet, because no data source for it exists. Nothing breaks where data is missing — those features simply don't appear.

Requirements

  • Ace3, VersionCheck-1.0 and LibAceGUIWidgets — auto-installed by CurseForge (they back the guild version-check, the price window and the “Where to get it” window)
  • Nothing else is required. AllTheThings, Recipe Master, Leatrix Plus, TradeSkillMaster, Auctionator, Auctioneer and Questbook are all optional (with Questbook, clicking a “Where to get it” row guides you there) — if you have one, its tooltip lines or its prices are carried through; if you don't, nothing changes and nothing is missing.

Recent Updates

v1.2.0 (2026-10-04) — Wrath, Cataclysm and Retail item data, and gear scoring for Wrath, Cataclysm and Mists

New

  • Item data for Wrath of the Lich King and Cataclysm, with item stats: names, quality, type, item level, stats, which professions use a material, which expansion an item comes from, what crafts it, dungeon and raid drops, vendors, quests, gathering, and “Where to get it”. Weapon damage is not included yet on either, nor armor on Cataclysm. English-only for now.
  • Gear scoring for Wrath, Cataclysm and Mists of Pandaria, with stat weights for every spec including Death Knights and Monks, so addons that rank gear work there too.
  • Much more Mists of Pandaria data: drop chances per boss, item sets and their bonuses, class, faction and level requirements, vendor prices, mounts, consumable groups, and best-in-slot lists for every class.
  • Raid buffs for Wrath, Cataclysm and Mists, each from its own expansion, plus gems and best-in-slot lists for Wrath and Cataclysm. A buff that counts in two raid-buff categories is no longer counted twice next to another buff in the second one.
  • LibItemDB runs on Retail, with the tooltip lines, the price window and “Where to get it”: names, quality, type, item level, materials, crafting (Dragonflight recipes included), vendors, quests, drops, places on the map, and dungeon and raid drops from the game's own Adventure Guide. On Retail, “Where to get it” also lists the quest givers whose quests reward a piece of gear, and the vendors that sell it, from the game's own collection data, and now knows where PvP gear, Trading Post rewards, holiday and event items, Delve and dungeon-finder loot, and the items you collect during quests come from — about three in four Retail items have a source. Retail items now carry their stats too; gear scoring for Retail is not included yet.
  • Gems from prospecting and pigments from milling now name Jewelcrafting and Inscription as where they come from, on every version that has them.
  • The Expansion line on a material's tooltip now works on Mists of Pandaria, and names Wrath, Cataclysm and Mists items correctly.

Fixed

  • Mists of Pandaria flasks, food and many gear effects showed the wrong amount — often almost nothing (a +1000 Agility flask read as +1). They now show the real value.
  • Dungeon and raid names on Burning Crusade and Mists of Pandaria were misspelled (“Hallsof Lightning”, “Gruuls Lair”, “Zul Aman”). They now use the game's own names, so some Burning Crusade dungeons read with their full title, such as “Coilfang: The Slave Pens”.
  • On Mists of Pandaria, the Pandaren cooking styles (“Way of the Grill” and the rest) were listed as separate professions on a material's tooltip. They now read as Cooking.
  • Weapons whose effect speeds up your attacks scored nothing in gear rankings, on every version. They are now scored.
  • Dalaran's vendors showed on the Crystalsong Forest map in “Where to get it”. They now show on the Dalaran map.
  • About a hundred test items (“QATest” and similar) appeared in searches. They are now hidden.

v1.1.4 (2026-09-29) — Water is sold by vendors again

Changed

  • Setting the “Where to get it” click is now done by doing it. On the Tooltip tab of /itemdb, click the “Which click” button, then hold Alt, Ctrl or Shift and click it with the mouse button you want. The middle and extra mouse buttons work too, and a Default button puts it back to Alt+Click. Settings you already chose are kept.

Fixed

  • On Burning Crusade and Mists of Pandaria, everyday goods showed only “Alterac Valley” as where they come from. Refreshing Spring Water, bread, flasks, reagents and other common items (about 60 on Burning Crusade, 70 on Mists) now show their vendors and quests again. The battleground-only healing draughts, and the Warsong tabards on Mists, now show Vendor, because a vendor outside the battleground also sells them.

v1.1.3 (2026-09-28) — WoW Forever items, straight from the game

New

  • About 4,400 more items on WoW Forever — the newer Forever gear, recipes and enchant formulas are now in the database, for 23,596 items in all.
  • Choose which click opens “Where to get it”. Alt+Click is still the default, but if another addon already uses it (Gargul does), pick a different combination on the Tooltip tab of /itemdb. The tooltip's hint shows whichever click you chose.
  • Boss drops for three of Forever's new dungeons — The Hall of Thanes, City of Dalaran and Ruins of Lordaeron, 33 items across 11 bosses, from a community list that is still being confirmed.

Changed

  • Forever item stats now come from the game itself instead of an outside simulator's copy, so they match what you see on the tooltip. Over a thousand items gain spell power they were missing, and many others gain stats that were absent.
  • On Forever, hit and crit now count for spellcasters too, because in Forever one hit or crit stat covers spells as well as attacks. Before, a caster's gear score ignored them.
  • Weapon skill on Forever gear now counts toward gear scores, the same as it does on Classic.
  • Removed: about 130 placeholder entries Forever doesn't actually have.

Fixed

  • Most Forever weapons scored zero in addons that rate gear, because their damage per second was missing, so an upgrade like Copper Mace over Anvilmar Hammer never showed. Every weapon now has its damage per second.
  • A full Auction House scan on Forever raised a Lua error when it finished and kept none of the prices it had read. The scan now finishes cleanly and saves them. Mists of Pandaria uses the same Auction House and gets the same fix.
  • The ItemDB Scan button on the Auction House hung below the title bar on Forever and Mists of Pandaria, over the search area. It now sits in the title bar.

v1.1.2 (2026-09-27) — Vendors on WoW Forever

Changed

  • The table of what works on each game version now shows vendor prices in two rows — the prices built into the addon, and the prices it remembers from vendors you open. Remembered prices work on every version, including Mists of Pandaria, and include your reputation discount.

Fixed

  • On WoW Forever, opening any vendor raised a Lua error, and the prices you saw there were never remembered. Vendors open cleanly now, and their prices are remembered like on every other version.

v1.1.1 (2026-09-27) — Works on WoW Forever again

New

  • Searching for an item can ignore punctuation. An addon that searches this database can now ask for names to match with apostrophes, hyphens, colons and commas left out, so typing “eko” finds Frostsaber E'ko and “sayges” finds Sayge's items. Addons that don't ask for it search exactly as before.
  • A table on this page shows what works on each game version — Classic, Burning Crusade, Mists and Forever.

Fixed

  • On WoW Forever, anything that showed an item link raised a Lua error — searching in Questbook, for example. Item links on Forever work again.

v1.1.0 (2026-09-24) — Where to get any item: Alt+click it

New

  • Alt+click any item to see where to get it. A window lists every way to get it, one row per place: the creatures that drop it with their drop chance and zone, the vendors that sell it, the ore veins, herbs, fishing pools and chests that hold it, and the bosses, quests, professions, reputations and PvP rewards that give it. Hover a row for its map coordinates. Vendors of the other faction are hidden until you ask for them. You can also set a key under AddOns in the game's Key Bindings to open it on whatever item is under your mouse, and Alt+click can be switched off on the Tooltip tab of /itemdb. Classic, Burning Crusade and Mists of Pandaria.
  • Mists of Pandaria gets “Where to get it” too — over 25,000 items with the creatures that drop them, the vendors that sell them and the herbs, ore and chests that hold them, including Pandaria itself. For Pandaria's own herbs and ores the drop chance is not known, so it is left blank rather than guessed. A material's tooltip now says where it comes from on Mists as well — Mining, Herbalism, Skinning, a quest, a vendor, the profession that makes it. Mists item stats are also refreshed from the current game version.
  • Search for any item from the same window. Type part of a name in the box across the top, click the item, and see where to get it — no need to have it. /itemdb where opens the window ready to search.
  • With Questbook installed, click a row and Questbook guides you there. A stop button beside the window's “i” ends the guiding; it is dimmed while nothing is being guided.
  • Creature, vendor and node names in your language — German, French, Spanish, Russian, Korean and Chinese — with English where the game has no translation. Zone names were already in your language.
  • Drops that only happen for some players now say so. The chance reads, for example, “3.0% (Horde)” for a drop only Horde players get, “(Blacksmithing)” for a plan only blacksmiths see, “(event)” for a world-event drop, or “(after a quest)”. Before, these looked like drops anyone could get. A drop only the other faction gets is hidden along with the other faction's vendors.
  • The material tooltip now does everything SmexyMats did. Hover a material and, under an ItemDB heading, you see which expansion it is from, where it comes from — the profession that gathers or makes it (Mining, Herbalism, Skinning, Fishing, Enchanting for dusts and shards, Tailoring for cloth bolts), or Drop, Vendor and so on — and which professions use it, drawn as profession icons, plus every item's ID. The labels are in your language. A new Tooltip tab in /itemdb switches each line on or off, sets the icon size or plain words, and has a colour-blind mode with two colours of your choice. The heading reminds you that Alt+click shows where to get the item.
  • Italian item names on Forever, so Forever is in all 12 languages. Items the game itself never translated stay in English.

Changed

  • Where an item comes from no longer names a battleground as the place to buy everyday goods that ordinary vendors also sell.

Fixed

  • The material tooltip never appeared on Classic Era. It now shows on bags, links and vendor windows, and shows again when you hover the same item twice.
  • On Burning Crusade, 124 items sold only by certain vendors were missing “Vendor” from where they come from.
  • A corpse gathered with Herbalism or Mining (Bog Giants, Shattered Rumblers) no longer says Skinning.

v1.0.0 (2026-09-23) — WoW Forever support, and off-hand weapons are finally valued properly

New

  • WoW Forever is supported. 19,171 items in 11 languages, with names, item levels, stats, armour, weapon damage, class, race and faction restrictions, item sets, buffs, talents, prices and gear scoring. Where things drop is covered for the Classic instances — 381 items across 24 of them — plus another 1,858 items that come from a profession or from a chest rather than a boss kill, and 451 reputation and battleground rewards. Forever's own new dungeons are not in any data source yet, so those show nothing rather than something wrong.
  • Race-locked gear is now recognised on Classic Era. Until now the game gave addons no way to read an item's race requirement on that version, so gear only one race can wear looked usable by everyone. The requirement now ships as data, and “can my character use this” answers correctly on every supported version.
  • “What is this stack of cloth actually for?” The database can now say which professions use an item as a crafting material — Linen Cloth for Tailoring and First Aid, Copper Bar for Blacksmithing and Engineering, and so on for 469 materials on Classic, 618 on Burning Crusade, 969 on Mists and 579 on Forever. It is worked out from the game's own recipe data rather than a hand-written list, so nothing is missing because somebody forgot to add it. It shows on the item's tooltip automatically — hover a stack of cloth and you see “Used by: Leatherworking, Tailoring” — with no other addon needed and nothing to set up. This replaces SmexyMats entirely, which is abandoned; if you were running it for this, you no longer need to.
  • Every instance now says whether it is a raid or a dungeon. Addons that show “best in slot from a raid” separately from dungeon loot were each keeping their own hand-written list of raid names — which silently matched nothing on WoW Forever, where instances are identified by number rather than by name, so those features quietly disappeared there. The answer now ships with the data, worked out from the game's own files rather than written by hand: every instance on Classic and Burning Crusade, and all 24 on Forever. Where nothing says which it is, it says nothing rather than guessing.
  • Socket gems are in the database. Which socket colours a gem fits — red, yellow, blue, several at once for a hybrid, or a meta — and what it grants, for 132 gems on Burning Crusade and 605 on Mists. A gem picker, or a “best gem for this socket” table, now builds itself from the data instead of being typed out by hand. A meta gem's special effect (its “+3% critical damage” line) is not modelled, only the stats it also gives.
  • A raid-buff checklist can stop counting the same buff twice. Blessing of Kings and Greater Blessing of Kings are one buff in two forms, and the eight Sayge's Dark Fortune buffs are a single choice at the Darkmoon Faire — but nothing in the game tells an addon so, which is why a “buff the raid” list showed them as separate lines and counted each one. Every buff now ships with the slot it occupies, so a planner can offer each choice once. Where nothing reliable says two buffs conflict, the data says nothing rather than guessing — a made-up restriction would be worse than none.

Changed

  • Your off-hand weapon rankings will re-order, and this is the fix rather than a bug. An off-hand weapon swings for half damage, but every gear-scoring scale here valued off-hand weapon damage exactly as highly as main-hand — so any addon ranking your off-hand was ranking it as if it were your main hand. Off-hand weapon damage is now worth half, which is what the game actually does. If you dual-wield, expect your off-hand list to sort differently the first time you open it after updating. (The value ignores Dual Wield Specialization, which would raise it — these scales deliberately model no talents.)
  • Addons can now ask for an item to be scored for a particular slot, so a one-handed weapon being considered for your off-hand is valued as an off-hand rather than as a main hand.

Fixed

  • On Forever, hit, crit, dodge, parry and block on gear were being reported many times too high. Forever measures those as ratings rather than as straight percentages — it takes 10 rating for 1% hit, and 14 for 1% crit — and the numbers were being passed through as if a rating already were a percentage. A ring giving 2% hit was being described as 20%. Every affected item now reports what it really gives, so gear scores and stat totals on Forever change accordingly.
  • On Forever, spell damage on an item tied to more than one magic school was being added up instead of counted once. Robe of Winter Night showed as 80 spell damage when it is 40 to frost or shadow, whichever you cast.
  • Also on Forever: cloth robes were scoring no armour at all, and items with bonus armour had that bonus replace their base armour instead of adding to it.
  • Consumable buffs on Forever were each one point stronger than they should have been.
  • Weapon oils, sharpening stones and weightstones were missing from the consumable groupings entirely. A planner that lists consumables by slot never showed them at all, so there was no way to pick one. All sixteen are there now, as one weapon-enchant slot.
  • Descriptions of Forever's talent trees here and in the addon's notes were wrong in three places — a talent count, a talent described as removed when only its name is missing from the game's data, and three weapon specialisations described as merged when they remain separate. Corrected throughout.

v0.10.0 (2026-09-18) — How likely a boss is to drop it; whether your character can actually use it

New

  • Every boss drop now carries its drop chance. A loot planner can show “Lucifron — 33%” next to Felheart Gloves without you installing a loot addon: the number ships here, for every boss in Classic and Burning Crusade, heroic dungeons included. The chances are computed from the tested server loot tables the emulators run — the same source as the proc rates and item origins — rather than counted from player uploads, so they are the odds the game rolls, and they cover the recipes and off-pieces a crowd-sourced count never sees. A boss whose loot sits in a chest (Majordomo's cache, the Four Horsemen) is covered too. A drop that only rolls for a party holding a quest has no single chance, so it shows nothing rather than a guess.
  • “Can I use this?” is now one question with one answer. The item's class tag was already here; the class's training was not — a hunter cannot wield a mace, a mage cannot hold a shield, and a level-39 hunter cannot wear mail until 40. Three addons had each grown their own copy of those rules, and nothing checked they agreed. They now live in the library once, so a guild bank's “usable by me”, a quest-reward “for me” filter and a loot planner all give the same answer. Where the rules have nothing to say (a class they do not know, an item that is not armour or a weapon) the answer is “yes” — a filter must never hide something you can really use.

Fixed

  • On Burning Crusade, a hunter's arrows and bullets were valued at nothing. The data was there all along — 63 kinds of ammo with their added ranged damage — but the Burning Crusade scoring rules never priced it, on a note claiming the stat had not been captured. Ammo now scores on Burning Crusade exactly as it does on Classic.
  • The credits named the wrong licence for the CMaNGOS databases the drop rates, proc rates and item origins are derived from: they are GPL-3.0, not GPL-2.0.

v0.9.0 (2026-09-15) — A price list from outside your game — your guild's, say — can now be one of your price sources

New

  • An addon can hand LibItemDB a price list, and it becomes a source like any other. Built for guild banking: one officer publishes the guild's prices, every member's game receives them, and from then on every addon that asks LibItemDB what an item is worth — a cost-to-craft, a bank valuation, a shopping list — gets the guild's figure, whether or not that member runs TradeSkillMaster or has ever scanned. So two bankers value the same donation the same way. The list appears in /itemdb as a row of its own, named for where it came from, with the same on/off check and the same ordering arrows as the rest, and it goes first until you move it — a guild list exists precisely to override your own numbers. It is kept per realm and faction and survives a reload; if the guild withdraws it, the row stays with your settings and simply reads “not detected” until it is sent again. Each figure still says which list it came from and how old it is.
  • A “Data age” column in the price window. How old LibItemDB's own scan is, and how old a fed list's newest figure is — never before either has happened. Third-party sources leave it blank, because they do not say and a guess would be a claim.

Changed

  • The Statistics column in the price window is a little narrower to make room for the new one.

v0.8.0 (2026-09-14) — Item prices: set your price sources up once and every addon uses them; the Auction House scanner and the price integrations move here from TOG Profession Master, with their own window

New

  • Any addon can now ask what an item is worth. The answer comes from TradeSkillMaster, Auctionator or Auctioneer when you run one and have switched it on, or from LibItemDB's own Auction House scan when you don't — and it comes with where it came from and how old it is. An addon asks for a named figure (minimum buyout, market value, historical) and only a source that genuinely has that figure answers; “don't know” is reported as nothing, never as zero, so an unpriced item can never be valued at nothing by mistake. Prices are kept per realm and faction.
  • One place to configure prices for every addon. The price-source settings used to live inside TOG Profession Master, where only it could use them. They are now here, so an addon that shows a cost-to-craft, values a guild bank or fills a shopping list reads the same sources, in the same order, that you chose once.
  • TradeSkillMaster's region-wide prices, first. With TradeSkillMaster on, the figures the TSM Desktop App gathers for your whole region answer before your own realm's listings. They cover every item, they are refreshed by the app rather than by anyone scanning, and they do not go stale when a realm stops being scanned — a realm's own snapshot can be many months old and TSM shows it without an age. Switch it off per source if you would rather see only your realm's numbers.
  • A settings window of its own: /itemdb. One row per price source — whether it is installed, whether it is on, what it can answer, and the order they are asked in, with a right-click menu for each source's extra options — the default figure, auto-scan on opening the Auction House, the scan delay, and Scan now with when the last scan ran. Off for every third-party source until you turn it on.
  • An ItemDB Scan button on the Auction House, and /itemdb scan. One click prices the whole house at the lowest per-unit buyout — the fallback for a machine with no price addon. The server only allows that scan about once every fifteen minutes for your whole game, shared with every other auction addon — which is why scanning automatically on open is off unless you choose it.
  • /itemdb price followed by an item name, link or id prints what the library would answer for it, from which source, and how old the figure is. Add a word after it — market, historical, minBuyout or best — to ask for that figure in particular.

Changed

  • When an addon does not say which figure it wants, the answer is now the best available one from the first source that has anything — rather than minimum buyout only, which Auctioneer and TradeSkillMaster's region data never carry, so those sources were being skipped. You can change the default in the window.
  • Auctionator's “historical” figure is now genuinely historical — its two-week average of daily lows. The figure TOG Profession Master used to show under that name was Auctionator's live price again.
  • LibAceGUIWidgets is now installed alongside this library (CurseForge does it for you); the price window is built from it.

Fixed

  • A scan cancelled by closing the Auction House could interfere with the next scan you started within a couple of seconds — skipping an item, or finishing at once with nothing found. Inherited from the scanner's old home; caught by the new tests before it shipped here.

v0.7.1 (2026-08-22) — A gear planner that froze the game is five times faster; and two data faults that every check had passed

  • Fixed: opening a gear planner could freeze the game long enough for WoW to kill the script. A player on a brand-new character hit “script ran too long” twice. Asking this library for the best items in a slot made it read and score every one of the 17,604 items in the database — and then do it again for the next slot, and the next. Seventeen slots on one screen meant seventeen full passes over everything. It now sorts items by slot once and looks only at the ones that could possibly fit, which is five times faster per slot and takes a full planner screen from three quarters of a second to under a seventh — measured, on a desktop machine that is considerably faster than the game client.
  • The error message named the wrong place, and chasing it would have fixed nothing. WoW's “too long” warning points at whatever line the game happened to be running when it gave up, not at whatever was slow. Both reports pointed at two-line functions that cannot take any time at all. The real cost was found by timing the library against its own shipped data rather than by reading the error.
  • Fixed: on Classic, required-player-level was answering for seasonal items on non-seasonal realms. Seasonal content is meant to be kept in a separate file that only loads on the realms that have it. One file had escaped that split and shipped with all 15,652 rows in the always-loaded half as well — 5,108 of them seasonal. Nothing errored and every count matched, which is exactly why nobody had spotted it.
  • Fixed: a data-build tool replaced 41,777 real Traditional Chinese item names with English, and reported success. When Blizzard's data source returns an incomplete set of translations, the tool is designed to fall back to English for the few names that are genuinely missing. A half-empty response is not an error, so it fell back for most of the file and overwrote good translations with English. The bad names were reverted, and the tool now refuses to write any language whose translations come back suspiciously incomplete — it leaves the existing file alone instead. It caught three more languages the very next time it ran.
  • Nothing an addon calls has changed. Same functions, same arguments, same answers — there is no version to check for and nothing to update on your side. Ranked lists do now return items of equal score in a consistent order rather than shuffling between calls.

v0.7.0 (2026-08-20) — Both sides of a vendor transaction; and chance-on-hit effects valued by what actually sets them off

  • Fixed: a shield that procs when you are hit was rated by how fast YOU attack. Every chance-on-hit effect was assumed to fire on a weapon swing, so its value moved with your weapon speed. That is right for a proc weapon and wrong for everything else — and it quietly affected around two dozen well-known items, Skullflame Shield, Freezing Band, Girdle of Reprisal, the Grand Marshal / High Warlord shields, Darkmoon Card: Vengeance among them. The game files record which of four things sets an effect off — a swing, a spell cast, one of your damage-over-time ticks, or you being struck — and each is now rated by the thing that actually causes it. Only the swing case follows your weapon.
  • Fixed: a damage-over-time trinket was rated as though you were casting. Timbal's Focusing Crystal and the Ashtongue Talisman fire when your existing damage-over-time effects tick, which happens whether or not you are casting anything. They are now rated by how often those tick.
  • The rates behind all of this come from measurement, not guesswork. How often a boss swings at you is read from the tested server data (two seconds, which is what the great majority of raid bosses use); how often a damage-over-time effect ticks is read from the game files (three seconds, for every standard one). Where a judgement remains — how many damage-over-time effects a spec keeps running — it is written down alongside the number rather than buried.
  • A “+Fire damage” item can now be told to count only for specs that cast fire. An addon can hand the scorer the schools a spec actually uses, and school-restricted spell damage stops counting for the others — while the item's stamina, crit and everything else still count, and a plain “+spell damage” item is unaffected. Addons that don't ask for this see no change at all.
  • Fixed: Alterac Valley and Arathi Basin reputation rewards lost their faction. A change in Blizzard's own data layout meant 155 items — the Stormpike and Frostwolf reward gear, both faction mounts — came back as available to everyone, so an Alliance/Horde filter stopped hiding the other side's rewards.
  • Fixed: on Burning Crusade, the racial mounts were sold to everybody. The same data-layout change had gone uncorrected in the Burning Crusade data, where it cost 151 items — and what came back says exactly what was wrong: the racial mounts. The Horn of the Black Wolf and Horn of the Red Wolf read as available to Alliance, the Black Stallion, Pinto and Chestnut Mare Bridles as available to Horde. Those are the items whose faction comes from nothing but the race that can ride them, so they were the first to break and the last to be noticed. Burning Crusade now knows 284 faction-restricted items where it knew 133.
  • Fixed: a fifth of Classic items had forgotten what level you need to be. Required player level was added in v0.5.0, but the Classic file shipped with only two thirds of its rows while claiming to have them all — so 5,108 items answered “no level requirement” when asked, which is a real answer rather than a blank one. An addon sorting a bag by level, or greying out what you cannot equip yet, got a confident wrong answer with nothing to suggest it. All 15,652 are there now, and the file's own count and contents were checked against each other rather than taken on trust.
  • Items now know what a vendor will pay you — and they know it even for an item your character has never seen. The game can answer this, but only once it has loaded that item, so an addon valuing a bank or a bag of loot gets blank rows that fill in a moment later, or not at all. Reading it here means the number is simply there. 18,140 items on Classic and 21,720 on Burning Crusade.
  • Items now know what a vendor would charge you for them. The game tells an addon what a vendor will pay you for an item, but never what it would cost to buy one — that number only exists while you are stood at a merchant with their window open. So an addon working out what a craft costs had no way to price the pieces you would simply buy: thread, vials, dye, flux, salt. Those now carry a price whether or not a vendor is anywhere near you. 862 items on Classic and 1,708 on Burning Crusade.
  • Only things a vendor really sells are priced. The game files carry a nominal price for almost every item in existence, including ore, herbs and leather that no vendor has ever stocked — so listing those prices would have invented a shop that does not exist. An item is only priced here if a vendor genuinely keeps it in unlimited supply for gold, which is why Thorium Ore has no price and Fine Thread does.
  • It is the standard price, before reputation discounts. The discount you get for standing with a faction is worked out by the server at the moment you buy, and is never sent to your addons, so anything above Neutral will pay less than the figure shown. Addons that already track what you were actually charged — or read Auctionator's record of it — will keep using that in preference; this fills in the gap where nothing else can answer at all.

v0.6.0 (2026-08-06) — Your other addons' tooltip information, on tooltips they don't normally reach

  • A bridge for the addons you already run. When an addon in the TOG suite draws its own tooltip — a recipe, a reagent, an item it built the display for itself — it can now carry the same lines you would see from AllTheThings, Recipe Master, Leatrix Plus, TradeSkillMaster, Auctionator and SmexyMats. Same information, same wording, same icons, because it is their output rather than a re-creation of it.
  • It reaches addons that offer nothing to ask. Most tooltip addons don't provide anything another addon can call — they just quietly add their lines to the game's own tooltip. Rather than asking them for data, the bridge replays exactly what they already do, pointed at the tooltip in front of you. Recipe Master and Leatrix Plus are only reachable this way, and it means an addon we have never heard of can start contributing without a single change here.
  • Nothing is required and nothing changes if you don't use them. Each one is detected only if you have it installed and switched on, every call is guarded, and an addon that updates or moves simply drops out of the tooltip — it never breaks the rest of it.
  • It works where those addons normally can't reach. The clearest case is a profession recipe taught by a trainer, which has no scroll item for a tooltip to hang off — exactly where a hand-built tooltip used to come up blank.
  • Recipe-scroll information moved to Lib: ProfessionDB. Knowing which item teaches which recipe is profession knowledge rather than item knowledge, so it now lives in the professions database alongside reagents, skill requirements and difficulty. Nothing is lost — addons ask ProfessionDB which item teaches a recipe, and ItemDB what that item is called and what its link is. If you use an addon that shows professions, make sure Lib: ProfessionDB is up to date.

v0.5.0 (2026-08-03) — Burning Crusade grows up: real Outland loot, the Classic raids, and a lot more item knowledge

  • Fixed: Burning Crusade was showing Classic's raids. Where-it-drops on TBC listed Molten Core, Blackwing Lair and Ahn'Qiraj — the Classic instance list — with no Outland content at all, and it looked like it was working. TBC now has its own: Karazhan, Serpentshrine Cavern, Tempest Keep, Mount Hyjal, Black Temple, Sunwell Plateau, Zul'Aman, Gruul's Lair, Magtheridon's Lair and all fifteen Outland dungeons — 26 instances, 120 bosses.
  • Seven kinds of item knowledge added for Burning Crusade. Item sets and their set bonuses, which classes can use an item, which faction it belongs to, the on-equip and “Use:” effects the game hides from addons, spell-school-specific damage, mounts, and the filtering of test items that were never really in the game.
  • Fixed: every Blood Elf and Draenei item counted as neutral. Faction restrictions came back empty for Burning Crusade, so an addon couldn't tell Alliance-only gear from Horde-only gear.
  • Fixed: hidden test items were showing up on Burning Crusade in item pickers and searches.
  • Gear scoring now works on Burning Crusade. Stat weights for all 37 class specs, so items can be valued and ranked, and “what should I want from this raid” works there too — including the stats Classic never had, like expertise, haste and resilience. Ready-made best-in-slot lists are in as well, for 8 classes across every phase.
  • Gem sockets count towards an item's value. An empty socket is worth whatever you put in it, so it's valued at the best gem that fits — and because that depends on your spec, a red socket is worth more to a warrior than to a mage. Meta sockets only ever count meta gems.
  • Talents, buffs and reputation rewards for Burning Crusade. Every class's talent trees and the stat bonuses they grant, raid and world buff values, and the reputation and PvP reward gear — Honor, all four Arena seasons, and the Outland zone quartermasters.
  • Where every Burning Crusade item comes from. Over 13,000 items now say where they're found — the quest and its zone, the vendor, the profession that crafts it, or the creature that drops it — instead of reading “Other”. Consumables also know the Burning Crusade rules: which are battle elixirs, which are guardian elixirs, and that a flask replaces both.
  • Each game version now has its own gear-scoring rules. Burning Crusade uses combat ratings where Classic uses flat percentages, and Classic has weapon skill where Burning Crusade has none — so they can no longer affect one another, and a gear-weight editor only ever offers the stats that version really has.
  • Instances now say which expansion they belong to. With Burning Crusade carrying both its own raids and the Classic ones, an addon had no way to tell them apart — so a planner couldn't put current content at the top and tuck the older, still-runnable raids into their own group. Each instance now carries its expansion, so “Karazhan” and “Molten Core” can be grouped separately on the same character.
  • Fixed: on Burning Crusade, nothing from the base game had a drop source. Where-it-drops on TBC listed only the 26 Outland instances — Molten Core, Blackwing Lair, Ahn'Qiraj, Onyxia, Zul'Gurub and Naxxramas were missing entirely, so none of that gear could be looked up or planned for. Those raids are still there and still runnable at 70, and people still farm them for mounts, transmog and old-content clears. Burning Crusade now carries both: 59 instances and 3,846 items, Molten Core through Sunwell Plateau. (Classic itself is unchanged.)
  • Fixed: the Chronoboon Displacer was missing on Classic Era. Items added to Classic Era after the original game — the Chronoboon and its supercharged form, the Love is in the Air and Midsummer event items, and a few others — were being treated as Season of Discovery content and left out on Era realms, so an addon couldn't identify one sitting in a bag or guild bank. Eleven items are back. The separation now comes from AllTheThings' own curated lists rather than a guess based on the item's number, which is what got these wrong; the Season of Discovery items it was meant to keep out are still kept out.
  • Items now know what level you need to be to use them. The database carried an item's item level but not the level a character must reach to equip it — and those are different numbers (Thunderfury is item level 80 but usable at 60). Sorting a bag or bank by “level” almost always means the second one, and until now an addon had to ask the game and cope with it answering nothing until the item had been seen. 15,652 Classic items and 18,279 Burning Crusade items carry it.
  • Enchants and gems survive a rebuilt item link. When the library reconstructed a link it kept the item and its random suffix but silently dropped any enchant — so an addon that stored a link and rebuilt it later showed the item as unenchanted. Enchants are preserved now, and on Burning Crusade so are all four gem sockets.

v0.4.7 (2026-08-02) — Consumables know which ones can't stack, and buffs score like gear

  • One of each kind — the database now knows the rule. WoW only lets you hold one agility elixir, one strength buff, one flask, one food, one weapon oil and so on at a time, but it never records that grouping anywhere an addon can read. Each consumable buff now carries its “one active at a time” group, so a buffs planner can stop you picking two that would cancel each other — and it correctly knows the finer Classic rules the game is vague about (Mageblood Potion counts as a mana elixir, so it happily sits alongside an agility or strength elixir). Drawn from the same tested WoWSims data behind the gear rankings, not guessed.
  • Buffs, consumables, enchants and talents can now be valued like gear. The gear scorer only ever accepted an item, so an addon wanting to know what a flask or a talent build is worth had to add up the stats itself — and that gets it wrong in a way nobody spots, because the buff data and the stat weights spell mana-regen and spell-power differently, so those consumables silently came out as zero. Hand the library any set of stats and it now returns the same EP value it would give those stats on an item, so gear, buffs and talents finally add up on one scale. Flat health and mana pools are valued too, so Flask of the Titans and Flask of Distilled Wisdom stop scoring as nothing.
  • Fixed: every bandage claimed to give mana. A wrong reading of the game's data had heal-over-time effects recorded as mana — so all 24 bandages, plus several restore potions, were listed as buffs granting mana they never gave (a Heavy Runecloth Bandage read as “+250 mana”). Bandages and restore potions heal; they don't buff a stat, so they no longer appear as buffs at all. This affected all three game versions and is corrected in each.

v0.4.6 (2026-07-31) — Buffs, talents, and a self-building buff / consumable browser

  • Plan a talent build for any class, offline. Every class's full talent tree — all three trees, with tiers, prerequisites, ranks and names — is now in the database. The game only lets an addon read the talent tree of the class you're currently on, so a planner could never lay out a build for another class; now it can, for any class on any character.
  • Talents feed gear scoring. The stat bonuses a build grants — crit, hit, % to your stats, attack power, armor, dodge/parry/block, weapon skill — are read too, so a planner can value gear for the build you're actually playing. Weapon-specific bonuses are handled properly (an axe-crit talent only counts while you're holding an axe).
  • Buffs now carry their stats, at every rank. The strength a buff adds — Mark of the Wild, Battle Shout, Blessing of Might and Wisdom, Power Word: Fortitude, the Dragonslayer and Songflower world buffs, hunter aspects, shaman totems, and more — is now in the database, so a planner can fold a player's active buffs into their totals instead of hardcoding them. Every rank is there; read whichever one you want.
  • Percentage buffs count as real percentages. Blessing of Kings (+10% stats), Spirit of Zandalar (+15%), Mol'dar's Moxie (+15% stamina) and the Sayge's Dark Fortune buffs are stored as true percentages a planner applies on top of your gear — not a flat number that can't scale.
  • Buff and consumable pickers build themselves. Ask for every buff in a category (raid / world / self / totem), or every use-effect consumable, and the database hands back the whole list — so a buffs tab stays complete on its own instead of drifting from a hand-maintained list. Anything added to the database appears automatically, and flagged test items stay out.
  • Every consumable buff, sorted into the right shelf. Flasks, elixirs, potions, scrolls, food, sharpening stones and weapon oils are all captured — including the Dire Maul Jujus, the Zandalar and Badlands buffs, and the resistance Protection Potions. Because the game files every vanilla consumable as one undifferentiated type, the library sorts them into flask / elixir / potion / scroll / food / weapon for you.

Credits

Drop-source loot tables are derived from AtlasLootClassic. Best-in-Slot gear sets come from WoWSims — which also provides the weapon-skill scoring maths (the Classic attack-table formula) and the handful of feral-attack-power values the game keeps only in tooltip text. The EP stat weights are HawsJon's Classic weights (published at tbcwowaddons.weebly.com/pawn.html), as shipped with Pawn by Vger — used unchanged and with thanks. Weapon and trinket proc rates, item source locations (quests, vendors, crafting, PvP and reputation gear) and per-boss drop rates come from the tested CMaNGOS server databases. The list of items that exist in the game files but were never actually obtainable (or were removed in a past patch) comes from AllTheThings. LibItemDB doesn't redistribute any of their files; it re-expresses the underlying facts in its own format. All other item data is built from Blizzard's own client data via wago.tools.

Support

Questions, bug reports, or coverage requests — reach out on Discord.

You must be logged in to leave a comment.

Comments (0)