Achievement UI

Hi, my name is Thaoky, and I'm an Altoholic :)

Altoholic is an Ace 3 addon written for people who dedicate most of their time to leveling alts, and who want to have as much information as possible in one addon. The main feature of the addon is the search functionality which allows users to search their alts' bags or loot tables in an Auction-House-like frame (see screenshots). All this with multiple-realms/accounts support.

About the addon & the author

I've been playing WoW since the European release, and I used to rely on addons like character viewer to check my alts' inventory, but since it was more or less abandoned and not always stable for me, I decided to write an addon myself and to improve the search feature as much as I could. I hope you'll enjoy it as much as I do :)

The addon has been in development since December 2007 and was officially released in late March 2008. It's still not final, and although it has considerably evolved since the initial release, there are still a lot of things I haven't had time to implement yet.
Please note that this is my first addon, and that English is not my native language.


- Languages supported: enUS, frFR, deDE, esES, ruRU, zhCN & zhTW.

- Account-wide data summary:

  • Characters' talents: Full talent trees & glyphs are supported for both specializations.
  • Money, /played, rest xp for each character, subtotals by realm, and grandtotals for the account.
  • Bag usage: see at a glance which characters should get bigger bags (bag size, free slots and types included)
  • Characters' skills: skill summary on one screen, namely the 2 main professions + the 3 secondary skills as well as riding. I may add more if there's demand.
  • Reputations: a list of all the reputations of the current realm's characters. You can see at a glance if all your alts are at least honored with Honor Hold if you want to get the new 2.4 blue PVP set. Suggestions on how to grind reputations will be available soon.

- View containers (bags, bank, keyring) of all alts, on all realms.

- Guild banks : You have 10 alts in 10 different guilds on the same server, all of them with access to a guild bank ? Not a problem, you can see them all here.

- E-mail: allows you to see which alts have mail without having to reconnect them. The addon will tell you when mail is about to expire on a character. Threshold configurable (up to 15 days). Multiple realm support as well. Mails sent to a known alt (one you've logged on at least once) will be visible in the addon without having to reconnect it.

- Equipment: See the equipment of the current realm's alts in one screen. Very useful when purchasing stuff for your alts at the AH. Multiple realms supported. Right-clicking any equipment piece will allow you to find an upgrade, this feature is similar to the official wow armory feature, and is quite performant, even though it doesn't match the accuracy of the official one.

- Search: the most important feature of the addon, it uses an AH-like frame to display search results. You can either search bags on the current realm, on all realms, or a loot table.
The loot table is a table based on AtlasLoot, but which contains only item id's, and therefore keeps memory usage minimal.

The Search menu allows you to find items based on their name (even partial), level, type or rarity, almost like at the AH. It is also possible to search known recipes.

- Quest Log: See the quest logs of all your alts, as well as an indication of which alts are on a specific quest. Clicking on a quest link in the chat log will tell you which alts are on that quest.

- Suggestions: Currently, only profession leveling suggestions are available when mousing over your current level in a specific profession. Suggestions are based on the leveling guides posted on the official US forums (credit goes to their respective authors). The addon also suggests you where to quest/grind xp depending on your character level.

Suggestions were also added for the most recent factions. More to come later.

- Auction house: You can see which auctions/bids you've placed with an alt without being logged in or being at the AH.

- Professions: You can browse all known recipes in a thotbot like frame (see screenshot).

- Mounts & Pets of all your alts.

- Achievements are tracked for all you alts (see screenshot).

- Guild Members: a list of your connected guildmates, along with their alts (if they're using Altoholic too), and their average item level. Clicking their AiL will also allow you to "remotely" inspect their equipment.

- Guild Skills: a list of altoholic users in your guild, along with their alts and direct profession links. All professions are available in one click.

- Guild Bank tabs: a list of altoholic users and the time at which they last visited the guild bank. If you haven't visited the guild bank for a few days, you can remotely update your local data without going to a capital city.


The FAQ has been moved here :


  • I'd like to thank my guild, Odysseüs on EU-Marécages de Zangar, for assisting me since the earliest phases, thanks guys for everything you've done :)
  • Thanks to the wowace community, you've been very helpful and this addon would not be there without the technical answers you gave me (especially Xinhuan, author of BankItems)
  • Thanks to all the guys who are behind AtlasLoot, keeping the loot table up-to-date is a tremendous work, and the search functionality of Altoholic would not be what it is without your hard work.
  • Thanks to Ayindi (wowace) & sLiz3r (curse) for the German translation.
  • Thanks to NightOwl (wowace) for the zhTW translation.
  • Thanks to Wang (wowace) for the zhCN translation.
  • Thanks to Hellbot for the ruRU translation.
  • Thanks to Laumac for the frFR translation.
  • Thanks to IrregularByte for the esES translation.
  • Brykrys for the LinkWrangler support.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of jocodemon jocodemon Aug 17, 2015 at 13:45 UTC - 0 likes

    Dunno what exactly the issue is, but when I enable Altoholic as of late, I get lots of errors, but more importantly, I'm having memory issues to the point that I cannot save any settings for any addon whatsoever. Apparantly WoW also loads settings from addons even if they're disabled, but they were enabled previously. The only way for me to fix the problem, was disable Altoholic and DataStore. I got 10 chars on 1 account and 3 on another. Would be nice if you could make the addon more compatible with 6.2, and set the toc file to support 6.2

  • Avatar of Ravenslair38 Ravenslair38 Aug 13, 2015 at 21:52 UTC - 0 likes

    been getting the following error off and on for the last month :

    4x ...e\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1-90446.lua:291: Invalid arg1: invalid item.
    [C]: ?
    ...e\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1-90446.lua:291: in function `ItemInSet'
    ...dOns\DataStore_Reputations\DataStore_Reputations-r35.lua:433: in function `GetSource'
    Altoholic\Loots.lua:614: in function `GetSource'
    Altoholic\Tooltip.lua:463: in function <Altoholic\Tooltip.lua:447>
    Altoholic\Tooltip.lua:554: in function <Altoholic\Tooltip.lua:545>
    [C]: ?
    [C]: ?
    ...ddOns\GoingPrice_US\Libs\LibExtraTip\LibExtraTip.lua:387: in function `SetGuildBankItem'
    Blizzard_GuildBankUI\Blizzard_GuildBankUI.lua:653: in function `GuildBankItemButton_OnEnter'
    [string "*:OnEnter"]:1: in function <[string "*:OnEnter"]:1>
    self = <table> {
     ItemSearch = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:350
     GetSetString = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:245
     IsSetMulti = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:251
     ItemInSet = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:285
     AddData = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:310
     embedversions = <table> {
     IterateSet = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:267
     sets = <table> {
     GetSetTable = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:239
    item = 0
    set = "Reputation.Reward"
    assert = <function> defined =[C]:-1
    type = <function> defined =[C]:-1
    fixSetName = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:147
    getItemID = <function> defined @DataStore\libs\LibPeriodicTable-3.1\LibPeriodicTable-3.1.lua:50
    cache = <table> {
     InstanceLoot.The Shattered Halls.Warbringer O'mrogg = <table> {
     InstanceLoot.Wailing Caverns.Lord Pythas = <table> {
     Reputation.Reward.Ironforge = <table> {
     InstanceLoot.Blackrock Depths.Panzor the Invincible = <table> {
     InstanceLoot.Blackrock Depths.Ok'thor the Breaker = <table> {
     InstanceLoot.Upper Blackrock Spire.Warchief Rend Blackhand = <table> {
     Reputation.Reward.Undercity = <table> {
     InstanceLootHeroic.Scarlet Monastery.High Inquisitor Whitemane = <table> {
     CurrencyItems.Mark of the Illidari = <table> {
     InstanceLootHeroic.Naxxramas.Patchwerk = <table> {
     InstanceLoot.Mogu'shan Vaults.Feng the Accursed = <table> {
     InstanceLoot.Gate of the Setting Sun.Commander Ri'mok = <table> {
     InstanceLoot.Naxxramas.Instructor Razuvious = <table> {
     InstanceLoot.Naxxramas.Thane Korth'azz = <table> {
     InstanceLoot.Zul'Farrak.Zul'Farrak Dead Hero = <table> {
     InstanceLoot.The Violet Hold.Moragg = <table> {
     InstanceLoot.Lower Blackrock Spire.Spirestone Lord Magus = <table> {
     InstanceLoot.Lower Blackrock Spire.Spirestone Battle Lord = <table> {
     InstanceLoot.Dire Maul Arena.Mushgog = <table> {
     InstanceLoot.Dire Maul.Tendris Warpwood = <table> {
     InstanceLootHeroic.Zul'Aman.Malacrass = <table> {
     InstanceLootHeroic.Icecrown Citadel.Prince Valanar = <table> {
     InstanceLootHeroic.Naxxramas.Sapphiron = <table> {
     InstanceLoot.The Obsidian Sanctum.Sartharion = <table> {
     InstanceLootHeroic.The Steamvault = <table> {
     InstanceLootHeroic.Well of Eternity.Minor Cache of the Aspects = <table> {
     InstanceLoot.Shado-Pan Monastery.Taran Zhu = <table> {
     InstanceLoot.Uldaman.Ancient Stone Keeper = <table> {
     InstanceLoot.Serpentshrine Cavern.Hydross the Unstable = <table> {
     InstanceLoot.Naxxramas.Patchwerk = <table> {
     InstanceLootHeroic.The Arcatraz.Wrath-Scryer Soccothrates = <table> {
     InstanceLoot.Uldaman.Ironaya = <table> {
     InstanceLoot.Ruins of Ahn'Qiraj.Moam = <table> {
     InstanceLoot.Blackrock Depths.Seeth'rel = <table> {
     InstanceLootHeroic.Blackwing Descent.Nefarian = <table> {
     InstanceLootHeroic.End Time.Echo of Baine = <table> {
     InstanceLoot.Upper Blackrock Spire.Jed Runewatcher = <table> {
     InstanceLoot.Trial of the Champion.The Black Knight = <table> {
     InstanceLoot.Dragon Soul.Morchok = <table> {
     InstanceLoot.Ahn'kahet: The Old Kingdom.Prince Taldaram = <table> {
     InstanceLoot.Naxxramas.Four Horsemen Chest = <table> {
     InstanceLootHeroic.Ulduar.Cache of Storms = <table> {
     InstanceLoot.Zul'Gurub.Wushoolay = <table> {
     InstanceLoot.Lower Blackrock Spire.Ghok Bashguud = <table> {
     Reputation.Reward.Wintersaber Trainers = <table> {
     InstanceLoot.Halls of Reflection.Marwyn = <table> {
     InstanceLootHeroic.The Violet Hold.Cyanigosa = <table> {
     InstanceLoot.Heart of Fear.
  • Avatar of Aoladin Aoladin Jun 30, 2015 at 15:12 UTC - 0 likes

    @cyr823: Go

    It's working fine for me in 6.2 in general. I get an occasional Datastore error, but I have noticed no ill effects. If you are having problems you should probably post specifics so the devs can address them.

    Also, there is a far more active discussion on the Altoholic page over at Curse proper:

  • Avatar of cyr823 cyr823 Jun 30, 2015 at 14:53 UTC - 0 likes

    Any chance we are going to get this addon up and running for 6.2 patch?

  • Avatar of DeaTHCorEKiD DeaTHCorEKiD Dec 27, 2014 at 19:16 UTC - 0 likes

    oh Thaoky, i forgott: i'm working on actual Suggestions_xxXX.lua Files, are you interested? give me a mail address via pm, where i can send it to you...

  • Avatar of DeaTHCorEKiD DeaTHCorEKiD Dec 27, 2014 at 18:09 UTC - 0 likes

    Hi Thaoky,

    i have a question: the DataStore_Inventory checks the LipPeriodicTable for CurrencyItems, InstanceLoot and InstanceLootHeroic a what is with InstanceLootLFR ? is a part of LibPeriodicTable and the loot is different from InstanceLoot and InstanceLootHeroic. i have added InstanceLootLFR by me:

    local DataSources = { "InstanceLoot", "InstanceLootHeroic", "InstanceLootLFR", "CurrencyItems", }

    and i have the library InstanceLootLFR included into embeds.xml, is this right or not?

  • Avatar of Litvan Litvan Dec 04, 2014 at 19:35 UTC - 0 likes
    Date: 2014-12-04 20:28:51
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ...lityNotifier\LibPetJournal-2.0\LibPetJournal-2.0.lua line 58:
       table index is nil
       ...lityNotifier\LibPetJournal-2.0\LibPetJournal-2.0.lua:58: in main chunk
    MAJOR = "LibPetJournal-2.0"
    MINOR = 21
    lib = <table> {
     UnregisterCallback = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:179
     callbacks = <table> {
     event_frame = <unnamed> {
     UnregisterAllCallbacks = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:200
     RegisterCallback = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:116
    oldminor = nil
    _G = <table> {
     ContainerFrame5Item7 = ContainerFrame5Item7 {
     MultiCastActionButton6Cooldown = MultiCastActionButton6Cooldown {
     MerchantItem9ItemButtonStock = MerchantItem9ItemButtonStock {
     GetTrainerServiceTypeFilter = <function> defined =[C]:-1
     UNIT_NAMES_COMBATLOG_TOOLTIP = "Color unit names."
     UNIT_NAMEPLATES_TYPE_TOOLTIP_3 = "This method avoids overlapping nameplates by spreading them out horizontally and vertically."
     SetTrainerServiceTypeFilter = <function> defined =[C]:-1
     SPELL_FAILED_CUSTOM_ERROR_71 = "This partygoer wants to dance with you."
     RecruitAFriendFrame = RecruitAFriendFrame {
     CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture = CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture {
     AltoholicAccountSharingOptionsIconNever = AltoholicAccountSharingOptionsIconNever {
     TutorialFrameLeft19 = TutorialFrameLeft19 {
     MultiCastActionButton2Cooldown = MultiCastActionButton2Cooldown {
     ERR_TRADE_EQUIPPED_BAG = "You can't trade equipped bags."
     PVP_RANK_6_1 = "Corporal"
     BOOKTYPE_PROFESSION = "professions"
     AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture = AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture {
     InterfaceOptionsDisplayPanelShowAggroPercentageText = InterfaceOptionsDisplayPanelShowAggroPercentageText {
     VideoOptionsFrameCategoryFrameButton17ToggleHighlightTexture = VideoOptionsFrameCategoryFrameButton17ToggleHighlightTexture {
     MerchantItem3AltCurrencyFrameItem1Text = MerchantItem3AltCurrencyFrameItem1Text {
     OPTION_TOOLTIP_ACTION_BUTTON_USE_KEY_DOWN = "Action button keybinds will respond on key down, rather than on key up."
     BINDING_NAME_NAMEPLATES = "Show Enemy Name Plates"
     INSTANCE_UNAVAILABLE_OTHER_TEMPORARILY_DISABLED = "%s cannot enter. This instance is temporarily disabled."
     IsReferAFriendLinked = <function> defined =[C]:-1
     MAIL_LETTER_TOOLTIP = "Click to make a permanent
    copy of this letter."
     AudioOptionsVoicePanelMicrophoneVolumeThumb = AudioOptionsVoicePanelMicrophoneVolumeThumb {
     ItemTextFrameInsetInsetTopRightCorner = ItemTextFrameInsetInsetTopRightCorner {
     MANA = "Mana"
     TutorialFrameRight19 = TutorialFrameRight19 {
     MoneyFrame_OnEvent = <function> defined @Interface\FrameXML\MoneyFrame.lua:225
     BN_UNABLE_TO_RESOLVE_NAME = "Unable to whisper '%s'. may be unavailable."
     CinematicFrameRaidBossEmoteFrame = CinematicFrameRaidBossEmoteFrame {
     InterfaceOptionsCombatTextPanelFCTDropDown_OnClick = <function> defined @Interface\FrameXML\InterfaceOptionsPanels.lua:1661
     CompactRaidFrameManagerDisplayFrameHiddenModeToggleTopRight = CompactRaidFrameManagerDisplayFrameHiddenModeToggleTopRight {
     LFGTeleport = <function> defined =[C]:-1
     GetMonitorAspectRatio = <function> defined =[C]:-1
     SLASH_LibQTip1 = "/qtip"
     ToggleEncounterJournal = <function> defined @Interface\FrameXML\UIParent.lua:704
     Graphics_QualityText = Graphics_QualityText {
     TalentMicroButtonAlertShadowTopLeft = TalentMicroButtonAlertShadowTopLeft {
     ROGUE_COMBAT_CORE_ABILITY_4 = "Keep applied to yourself when you have 5 combo points."
     JoinSkirmish = <function> defined =[C]:-1
     Advanced_GraphicsAPIDropDownButtonHighlightTexture = Advanced_GraphicsAPIDropDownButtonHighlightTexture {
     CompactUnitFrameProfilesSaveButton = CompactUnitFrameProfilesSaveButton {
     PaperDollFrame_SetReadiness = <function> defined @Interface\FrameXML\PaperDollFrame.lua:1360
    Last edited Dec 04, 2014 by Litvan
  • Avatar of LonghornsER LonghornsER Nov 09, 2014 at 11:41 UTC - 0 likes

    Dear authors,

    in the search and bag/bank tabs i missing the reagent bank , where also items are stacked

    also, after installing 6.0.001, i see an old version number in the about tab, so i cant check of i have the right version now

    Regards, Longhorns Earthen Ring

  • Avatar of Comicus Comicus Nov 04, 2014 at 13:13 UTC - 0 likes

    @papillionspirit: Go

    Did you miss Altoholic 6.0.001 .. ????

  • Avatar of papillionspirit papillionspirit Oct 29, 2014 at 18:53 UTC - 0 likes

    Hi there!

    Are you planning on updating or keeping this add on current for WoD? I've noticed that it hasn't been updated for a while and things weren't working properly so I uninstalled it for the time being. Anyone hear or know if this add on is gonna be updated soon? I have a lot of alts so Altaholic is a lifesaver for me and I totally miss it. Here's hoping :)


Date created
Aug 20, 2008
Last update
Sep 12, 2015
Development stage
  • deDE
  • enUS
  • esES
  • esMX
  • frFR
  • itIT
  • koKR
  • ptBR
  • ruRU
  • zhCN
  • zhTW
All Rights Reserved
Curse link
Recent files