Rarity
PLEASE READ THIS COMMENT BEFORE REPORTING ANY 12.0/MIDNIGHT ERRORS!
NEW:
- Rarity now has a Discord server!
If you're interested in following the development process or contributing, you should also check out the official GitHub repository. We're always in need of more hands to help us make the addon better!
Rarity tracks how many times you've tried to obtain various rare items like mounts, battle pets, and toys. It will tell you how likely you are to obtain the item, track how long you've been farming for it, and tell you how lucky you've been so far. Although it's mostly used for mounts, battle pets, and toys, it supports pretty much any item, including profession patterns, archaeology projects, and more.
Looking for Rarity Item Packs? Click here.
Out of the box, Rarity includes support for every single mount, battle pet, and toy in the game which require some time to farm. It also includes support for some mount-related items like Skyshard, Primal Egg, and Giant Dinosaur Bone. It'll even notice if you mouseover a Mysterious Camel Figurine, plus lots of other stuff. Rarity factors in the size of a typical group when determining probabilities, and can also tell you if you've killed various bosses this week (or day). Holiday just started, and you didn't notice? Rarity will give you a helpful reminder to run those holiday dungeons or daily quests if you still need an item from them.
If Rarity doesn't track something you want to track, you can add it yourself! Just about everything is user configurable.
Curious what math is going on behind the scenes? The author of Bunny Hunter created the original algorithms. He wrote an article about it here. Your chance to obtain an item doesn't increase as you farm it; Rarity is just telling you how lucky you've been so far. It can be remarkably cathartic to see a progress bar move up as you spend hours upon hours trying for that Disgusting Oozeling.
Main features
- Rarity is primarily an LDB feed with a large tooltip. It can function as either a mini-map icon (you have to turn this on in the options), or as a standard LDB feed (use a display like Fortress, Button Bin, Titan Panel, or Chocolate Bar).
- Provides a progress bar, which you can toggle by clicking the icon or feed label.
- Adds info to NPC and item tooltips, showing you if it drops or contains something that Rarity tracks. Rare mobs with a guaranteed drop show which item they drop and if you've defeated them yet.
- Includes full source info, telling you how to obtain everything Rarity tracks.
Other features
- Share packs of items with other users
- Can automatically add waypoints to TomTom for certain items
- Uses statistics whenever possible to keep track of attempts
- Breaks your farming down by session, day, week, and month
- Looks at your instance locks to see if you've defeated various bosses recently
- Reminds you if you need to farm a holiday dungeon or daily quest, and hides holiday items that aren't available right now
- Supports bonus coin rolls
- Automatically screenshots when you obtain an item
- Keeps track of rare achievements like Frostbitten and Glorious
- You can add your own items to track
- Lets you modify your attempt count without having to edit saved variables
- Automatically imports data from Bunny Hunter if you're switching
Slash Commands
Simply typing /rarity should open the options menu (unless disabled).
For troubleshooting issues:
- /rarity dump displays the most recent debug log entries (even if the debug mode is disabled)
- /rarity validate checks the consistency of your item database, including custom items (experimental)
Comments & bug reports
Help translate Rarity
Click here to help translate Rarity into your language.
Frequently Asked Questions
Click here to read the Frequently Asked Questions. Please read this before requesting support.
-
View User Profile
-
Send Message
Posted Mar 24, 2026This started popping up randomly today, assuming it's something Blizzard changed under the hood with the final changes for the season start.
Edit: wrong BugSack output initially, correct one now.
12x Rarity/Core/Detection.lua:71: attempt to compare field 'calendarType' (a secret string value tainted by 'Rarity')
[Rarity/Core/Detection.lua]:71: in function 'ScanCalendar'
[Rarity/Core.lua]:401: in function 'DelayedInit'
[Rarity/Core.lua]:336: in function 'func'
[Ace3/AceTimer-3.0/AceTimer-3.0.lua]:57: in function <Ace3/AceTimer-3.0/AceTimer-3.0.lua:50>
Locals:
self = <table> {
lockouts_detailed = <table> {
}
modules = <table> {
}
string_methods = <table> {
}
Testing = <table> {
}
AuctionDB = <table> {
}
bagitems = <table> {
}
advancedSettingsFrame = Frame {
}
HolidayEvents = <table> {
}
itemInfoCache = <table> {
}
foundTarget = false
tempbagitems = <table> {
}
db = <table> {
}
guids = <table> {
}
modulesEnabled = <table> {
}
itemsToPrime = <table> {
}
toysScanned = true
lastStatCount = 92
bar = Frame {
}
Utils = <table> {
}
EventHandlers = <table> {
}
architems = <table> {
}
itemsMasterList = <table> {
}
defaults = <table> {
}
catIcons = <table> {
}
relevantSpells = <table> {
}
isOpening = false
string_types = <table> {
}
npcs_to_items = <table> {
}
npcs = <table> {
}
items_with_stats = <table> {
}
optionsFrame = Frame {
}
isFishing = false
name = "Rarity"
ItemDB = <table> {
}
used = <table> {
}
Statistics = <table> {
}
isPool = false
isTradeskillOpen = false
DatabaseSchema = <table> {
}
GUI = <table> {
}
lockouts_holiday = <table> {
}
optionsCategoryID = 49
string_archraces = <table> {
}
Announcements = <table> {
}
isTradeWindowOpen = false
Database = <table> {
}
isGuildBankOpen = false
Caching = <table> {
}
zones = <table> {
}
baseName = "Rarity"
pet_sources = <table> {
}
lockouts = <table> {
}
activeHolidayEvents = <table> {
}
mount_sources = <table> {
}
profileOptions = <table> {
}
CONSTANTS = <table> {
}
items = <table> {
}
defaultModuleState = true
MapInfo = <table> {
}
CopyPastePopup = <table> {
}
Waypoints = <table> {
}
Validation = <table> {
}
opennodes = <table> {
}
encounters = <table> {
}
Tracking = <table> {
}
enabledState = true
tooltipOpenDelay = false
stats_to_scan = <table> {
}
Profiling = <table> {
}
profileFrame = Frame {
}
isAuctionHouseOpen = false
ScrollingDebugMessageFrame = <table> {
}
fishnodes = <table> {
}
Debugging = <table> {
}
items_to_items = <table> {
}
isMailboxOpen = false
Item = <table> {
}
defaultModuleLibraries = <table> {
}
Serialization = <table> {
}
Output = <table> {
}
fishzones = <table> {
}
orderedModules = <table> {
}
isBankOpen = false
Enum = <table> {
}
Tooltips = <table> {
}
coins = <table> {
}
MINOR_VERSION = 752
AddonCompartment = <table> {
}
AreaPOIs = <table> {
}
barGroup = Frame {
}
collection_items = <table> {
}
Collections = <table> {
}
miningnodes = <table> {
}
Session = <table> {
}
}
reason = "DELAYED INIT"
today = <table> {
monthDay = 24
weekday = 3
month = 3
minute = 4
hour = 22
year = 2026
}
month = 3
day = 24
year = 2026
monthInfo = <table> {
firstWeekday = 1
numDays = 31
year = 2026
month = 3
}
curMonth = 3
curYear = 2026
monthOffset = 0
numEvents = 9
numLoaded = 0
(for index) = 1
(for limit) = 9
(for step) = 1
i = 1
calendarEvent = <table> {
clubID = <no value>
numSequenceDays = <no value>
eventID = <no value>
eventType = <no value>
sequenceType = <no value>
isCustomTitle = <no value>
startTime = <table> {
}
iconTexture = <no value>
difficultyName = <no value>
endTime = <table> {
}
invitedBy = <no value>
dontDisplayEnd = <no value>
inviteStatus = <no value>
difficulty = <no value>
isLocked = <no value>
title = <no value>
calendarType = <no value>
inviteType = <no value>
sequenceIndex = <no value>
dontDisplayBanner = <no value>
modStatus = <no value>
}
(*temporary) = <no value>
(*temporary) = <no value>
(*temporary) = "Calendar event IDs should now be available in all WOW product lines"
(*temporary) = "attempt to compare field 'calendarType' (a secret string value tainted by 'Rarity')"
table = <table> {
}
C_Calendar = <table> {
}
-
View User Profile
-
Send Message
Posted Mar 25, 2026In reply to The_Razielim:
If you scroll down a bit, you will see the same issue was already reported multiple times.
My answer is the same: Thanks but please don't paste huge text dumps in here, and read before posting :) There's a pull request on GitHub that proposes a fix for this, I just haven't gotten around to reviewing it. Either way, the problem should be gone in the next release.
-
View User Profile
-
Send Message
Posted Mar 24, 2026I have an issue, with The Great Sea Ray, it doesn't track progress inside dazar alor raid
-
View User Profile
-
Send Message
Posted Mar 24, 2026In reply to Aonaskull:
It's possible the map IDs are incorrect, which would be easy to fix once we know the right one. You can try typing `/rarity mapinfo` right where you're fishing and see what it says.
Currently, only 1364 is being used by the addon (source: https://github.com/WowRarity/Rarity/blob/f3bdf8588ebcf48b096ddbcb9ad1240f298297d6/DB/Mounts/BattleForAzeroth.lua#L672C5-L672C9).
There are several other options and I'd expect one of them to match what you'll see ingame: https://wago.tools/db2/UiMap?filter[Name_lang]=battle of dazar&page=1
Can't do this myself right now, but you should be able to find the right ID :)
-
View User Profile
-
Send Message
Posted Mar 24, 2026In reply to RDW: Hello, ty for the quick answer! I didn't know there was a command and it's super useful :D I tried and the id was 1352. I was able to edit SharedConstants and BFA mounts with
BATTLE_FOR_DAZARALOR_RAID = 1352,
and it is working perfectly fine now!
Since I also farmed the fishing egg, there was some editing needed for slayer's rise in voidstorm ^^ Now I need to farm this elusive sea ray from bfa and the one in legion... this is very difficult and need a lot of patience but i am a crazy person... xD Ty for this awesome addon, it keeps me motivated!
-
View User Profile
-
Send Message
Posted Mar 24, 2026In reply to Aonaskull:
I've updated the ID. Just to make sure, are there any other subzones (areas) in the raid that you could fish in? If so, we'll need to add those IDs, too. Most of the IDs seem to be indoors but I'm not familiar with the raid and WAGO doesn't show names for all of them.
The map ID for Slayer's Rise will be fixed shortly, although I'm not sure what's with the orbs that have been mentioned here: https://github.com/WowRarity/Rarity/issues/965
-
View User Profile
-
Send Message
Posted Mar 24, 2026What am i missing that the addon says "incomplete" for me in game?
-
View User Profile
-
Send Message
Posted Mar 24, 2026In reply to ShortFuze:
If you mean "incompatible", you can get the latest alpha to fix that problem. It means that the .toc file has an outdated version number in it, so Blizzard disables the addon for reasons.
-
View User Profile
-
Send Message
Posted Mar 22, 2026Is it possible to change the color of the progress bar? Am I just blind?
-
View User Profile
-
Send Message
Posted Mar 22, 2026In reply to syvmar:
Not out of the box, if this is still current (I haven't checked recently): https://github.com/WowRarity/Rarity/issues/892
You could probably modify them with a simple macro script that does the same thing as the code snippet mentioned there, although it's not the most robust solution of course.
-
View User Profile
-
Send Message
Posted Mar 18, 20262x Rarity/Core/Detection.lua:71: attempt to compare field 'calendarType' (a secret string value tainted by 'Rarity')
[Rarity/Core/Detection.lua]:71: in function 'ScanCalendar'
[Rarity/Core.lua]:401: in function 'DelayedInit'
[Rarity/Core.lua]:336: in function 'func'
[Ace3/AceTimer-3.0/AceTimer-3.0.lua]:57: in function <Ace3/AceTimer-3.0/AceTimer-3.0.lua:50>
Locals:
self = <table> {
lockouts_detailed = <table> {
}
modules = <table> {
}
string_methods = <table> {
}
Testing = <table> {
}
AuctionDB = <table> {
}
bagitems = <table> {
}
advancedSettingsFrame = Frame {
}
HolidayEvents = <table> {
}
foundTarget = false
itemInfoCache = <table> {
}
tempbagitems = <table> {
}
db = <table> {
}
guids = <table> {
}
modulesEnabled = <table> {
}
itemsToPrime = <table> {
}
toysScanned = true
lastStatCount = 47
bar = Frame {
}
Utils = <table> {
}
EventHandlers = <table> {
}
architems = <table> {
}
itemsMasterList = <table> {
}
defaults = <table> {
}
catIcons = <table> {
}
relevantSpells = <table> {
}
isOpening = false
string_types = <table> {
}
npcs_to_items = <table> {
}
npcs = <table> {
}
items_with_stats = <table> {
}
optionsFrame = Frame {
}
isFishing = false
name = "Rarity"
ItemDB = <table> {
}
used = <table> {
}
Statistics = <table> {
}
isPool = false
isTradeskillOpen = false
DatabaseSchema = <table> {
}
GUI = <table> {
}
lockouts_holiday = <table> {
}
optionsCategoryID = 74
string_archraces = <table> {
}
Announcements = <table> {
}
isTradeWindowOpen = false
Database = <table> {
}
isGuildBankOpen = false
Caching = <table> {
}
zones = <table> {
}
baseName = "Rarity"
pet_sources = <table> {
}
lockouts = <table> {
}
activeHolidayEvents = <table> {
}
mount_sources = <table> {
}
profileOptions = <table> {
}
CONSTANTS = <table> {
}
items = <table> {
}
defaultModuleState = true
MapInfo = <table> {
}
CopyPastePopup = <table> {
}
Waypoints = <table> {
}
Validation = <table> {
}
opennodes = <table> {
}
encounters = <table> {
}
Tracking = <table> {
}
enabledState = true
tooltipOpenDelay = false
stats_to_scan = <table> {
}
Profiling = <table> {
}
profileFrame = Frame {
}
isAuctionHouseOpen = false
ScrollingDebugMessageFrame = <table> {
}
fishnodes = <table> {
}
Debugging = <table> {
}
items_to_items = <table> {
}
isMailboxOpen = false
Item = <table> {
}
defaultModuleLibraries = <table> {
}
Serialization = <table> {
}
Output = <table> {
}
fishzones = <table> {
}
orderedModules = <table> {
}
isBankOpen = false
Enum = <table> {
}
Tooltips = <table> {
}
coins = <table> {
}
MINOR_VERSION = 752
AddonCompartment = <table> {
}
AreaPOIs = <table> {
}
barGroup = Frame {
}
collection_items = <table> {
}
Collections = <table> {
}
miningnodes = <table> {
}
Session = <table> {
}
}
reason = "DELAYED INIT"
today = <table> {
monthDay = 18
weekday = 4
month = 3
minute = 59
hour = 20
year = 2026
}
month = 3
day = 18
year = 2026
monthInfo = <table> {
firstWeekday = 1
numDays = 31
year = 2026
month = 3
}
curMonth = 3
curYear = 2026
monthOffset = 0
numEvents = 7
numLoaded = 0
(for index) = 1
(for limit) = 7
(for step) = 1
i = 1
calendarEvent = <table> {
clubID = <no value>
numSequenceDays = <no value>
eventID = <no value>
eventType = <no value>
sequenceType = <no value>
isCustomTitle = <no value>
startTime = <table> {
}
iconTexture = <no value>
difficultyName = <no value>
endTime = <table> {
}
invitedBy = <no value>
dontDisplayEnd = <no value>
inviteStatus = <no value>
difficulty = <no value>
isLocked = <no value>
title = <no value>
calendarType = <no value>
inviteType = <no value>
sequenceIndex = <no value>
dontDisplayBanner = <no value>
modStatus = <no value>
}
(*temporary) = <no value>
(*temporary) = <no value>
(*temporary) = "Calendar event IDs should now be available in all WOW product lines"
(*temporary) = "attempt to compare field 'calendarType' (a secret string value tainted by 'Rarity')"
table = <table> {
}
C_Calendar = <table> {
}
-
View User Profile
-
Send Message
Posted Mar 19, 2026In reply to sicariusgaming87:
Please don't report the same verbose error message multiple times. This particular issue should be fixed in the next release. There's already a PR on GitHub, but it isn't merged yet.
-
View User Profile
-
Send Message
Posted Mar 21, 2026In reply to RDW: How am i supposed to know that?
-
View User Profile
-
Send Message
Posted Mar 22, 2026In reply to sicariusgaming87:
I believe if you scroll down a bit you'll see at least one mention of this problem :)
-
View User Profile
-
Send Message
Posted Mar 17, 2026for some reasons it dosn't track progress for the Nether-Warped Egg
-
View User Profile
-
Send Message
Posted Mar 17, 2026In reply to Aonaskull:
See https://github.com/WowRarity/Rarity/issues/965
-
View User Profile
-
Send Message
Posted Mar 15, 2026So what exactly am I witnessing when Im tracking Skyshards? The little tracker box displays a percentage that is gradually rising with each time i go to loot something that may yield a skyshard. it is also resetting every time I log out as well. What does the percentage value indicate? why is it increasing and at such a tiny amount when it does? I was under the impression it could track how many mob kills Ive made between skyshard lootings in order to communicate to others how many kills it took for mine. Resetting every login seems counter to that goal.
-
View User Profile
-
Send Message
Posted Mar 17, 2026In reply to Joruuscbaoth:
The probability is "luckiness" and should only reset when you find one, not on login. It increases a tiny amount because the drop chance is low, so one attempt doesn't add much. The attempts count is indeed the number of mob kills, which the % reflects.
-
View User Profile
-
Send Message
Posted Mar 13, 2026Is there any chance an exclusion for taking screenshots could be added for interim collectible items like the Mysterious Skyshards in Harandar? I and probably most others using the addon don't need ~500 screenshots on our way to finishing the mount from those, haha.
-
View User Profile
-
Send Message
Posted Mar 17, 2026In reply to TheCheat54:
The easiest solution would be for you to disable tracking those shards specifically.
I could also remove the item entirely if they don't seem worth tracking in general?