Myslot
Myslot
Copy your whole UI setup to any character — action bars, macros and keybinds — with one text string.
Setting up a new alt, moving to a new account, or rebuilding after a UI reset? Myslot exports your setup as a short, copy‑paste friendly text. Paste it on any character — even a different class — and click Import.
Browse and share profiles at <https://myslot.net>.
Features
- Action bars — every bar, including the main action bar pages, stance bars and the Skyriding bar
- Macros — both account‑wide and character‑specific
- Key bindings
- Click Cast Bindings (Retail)
- Cooldown Manager layouts (Retail)
- Talents (Retail) — see the profile's talent loadout string, get warned when it differs from yours, and load it into the talent window with one click
- Cross‑class & cross‑account — spells, items, mounts and pets you don't have are skipped with a clear message; unowned mounts can fall back to a random mount
- Saved profiles — keep up to 100 exports in game, sort by name / date / class and filter to your class
- Automatic backup — your current setup is saved before every import, so you can always roll back
- Choose what to import or clear — pick exactly which bars, macros and bindings to apply
- Fast & safe — asynchronous import with a progress bar, blocked during combat, CRC‑checked text
- Minimap button and
/myslotslash command
Supported game versions
Retail (The War Within / Midnight), Classic Era & Anniversary, Burning Crusade, Wrath, Cataclysm, Mists of Pandaria, Titan and WoW Forever. Options that a game version doesn't support are hidden automatically.
Usage
Export
- Type
/myslot(or click the minimap button) to open Myslot - Click Export
- Copy the text and save it anywhere — a text file, Discord, email, or myslot.net
Import
- Type
/myslotto open Myslot - Paste the exported text into the text box (or pick a saved profile)
- Choose what to import, then click Import
Importing a profile exported with talents other than the ones you are using asks for confirmation first — a profile's action bars rarely fit another build.
Talents (Retail)
Myslot doesn't import talents with the rest of a profile, but helps you switch to them:
- The profile's talent loadout string is shown in the Talents box under the text box — click it to select the string and copy it with Ctrl+C, e.g. for the talent window's Import.
- When the profile's talents differ from yours, click Apply talents: they are saved as the talent loadout
Myslot(replacing the previous one) and the talent window opens with it selected. Review it there and click Apply Changes to switch to it. - A profile saved before a talent tree change (a patch or hotfix) shows Talents out of date; it can still be loaded, but check it carefully since talents may have moved.
- The profile must be for your current specialization, and talents can't be changed in combat.
Talent loadout strings only exist since Dragonflight, so none of this is shown on Classic versions.
Slash commands
| Command | Description |
|---|---|
/myslot |
Toggle the Myslot window |
/myslot load <ProfileName> |
Import a saved profile by name — put it in a macro to swap setups with one click |
/myslot clear action |
Clear every action bar slot |
/myslot clear macro |
Delete all macros |
/myslot clear binding |
Clear all key bindings (Blizzard defaults included) |
/myslot clear talents |
Delete the Myslot talent loadouts made by Apply talents, in every specialization (Retail; your talents in use are kept) |
/myslot trim [N] |
Keep only the newest N saved profiles (default 100) and reload the UI |
Get Myslot
- CurseForge — <https://www.curseforge.com/wow/addons/myslot>
- Wago — <https://addons.wago.io/addons/myslot>
Contributing
Source code lives on GitHub: <https://github.com/tg123/myslot>. Bug reports and pull requests are welcome.
Localization
Translations are welcome! Please submit them at <https://www.wowace.com/projects/myslot/localization>.
Build your own Myslot
- Clone the source code into
Interface\AddOns\Myslot
$ git clone https://github.com/tg123/myslot.git Myslot
- Run the tests (Lua 5.1 + luabitop)
$ lua5.1 ci/run.lua
- Run the tests in game — a git checkout loads the test suite (it is stripped from CurseForge/Wago packages), then type:
/myslottest -- run all tests
/myslottest <filter> -- run only tests whose name matches <filter>
The results are shown in a pop-up you can copy with Ctrl+A / Ctrl+C. Tests cannot run in combat.
Changing Protobuf
Myslot use a modified version of lua-pb to serialize/deserialize the data. You may want to change the data structure sometimes if you want add some new things to export.
Please check lua-pb about how to generate protobuf stub files.
Copyright and License
- Copyright (C) 2009-2026 by Boshi Lian <[email protected]>
- Use of this software for profit purposes are NOT allowed except by prior arrangement and written consent of the author.
- This software is licensed under the Apache License, Version 2.0
- All rights of Exported text are owned by end-users.
-
View User Profile
-
Send Message
Posted Aug 21, 2022Any plans on updating this / making it compatible with Wrath (toc/etc)? Used it in BC and it worked great and hoping to continue to use it in Wrath for exporting various profiles to the PTR/etc.
Thanks!
-
View User Profile
-
Send Message
Posted Aug 22, 2022In reply to DomDashSix:
will update it for sure, i do not have an acc atm
-
View User Profile
-
Send Message
Posted Aug 24, 2022In reply to oishii1992:
Awesome! Looking forward to it. If this helps any, I've heard from other WoW devs that didn't have active subs that you can play on the PTR for free, but I cannot confirm. Currently right now, there is a Wrath PTR that is in Pre-Patch state. Maybe that could help you if that works either now or in the future. Also I cannot confirm if that is the case, but if you are curious - it may be worth checking out.
Thanks again for the great addon and looking forward to continue using it into the future!
-
View User Profile
-
Send Message
Posted Aug 27, 2022In reply to DomDashSix:
Myslot works on wrath beta :)
-
View User Profile
-
Send Message
Posted Jun 9, 2022If my macros keep duplicating - what's causing this and how do I prevent/fix this? Thanks!
-
View User Profile
-
Send Message
Posted Jun 10, 2022In reply to Tenzo1o1:
feel free to email me the exported string. I will take a look if it is a bug.
-
View User Profile
-
Send Message
Posted Jun 11, 2022In reply to oishii1992:
When I get access to my game I'll PM you the exported strings for you to take a look at.
But the issue is sometimes I will create a new macro for one profile, or delete a macro in one profile - and when I swap to my other profile, the deleted macro will come back. Or the macro I created for the other profile gets duplicated, and if I don't keep deleting them, I could end up with like 3-4+ of the same macro.
Not sure if there's a proper way to deal with this, but def will send over some exported profiles for you to look at. Do I just use "send message" to your profile?
By the way, thank you for creating this addon - it's an amazing time saver
-
View User Profile
-
Send Message
Posted Dec 9, 2021@oishii1992
when i export myslot , is it per spec or all 3 specs ?
-
View User Profile
-
Send Message
Posted Dec 9, 2021In reply to Gaaver:
yes and no
technically, blz saves your spec actions in some hidden slots, id from 73 to 132, which will be saved with myslot
other actions created by some other addons cannot be saved
-
View User Profile
-
Send Message
Posted Dec 2, 2021can this addon save profiles to be loaded between on the same character without having to import from notepad/etc, like actionbarsaver? dev of ABS is awol and the addon doesnt save spell ranks when reverting to a different profile
-
View User Profile
-
Send Message
Posted Dec 3, 2021In reply to XboxControllerTV:
yes you can. but you need some external tools to roaming settings between computers.
-
View User Profile
-
Send Message
Posted Dec 3, 2021In reply to oishii1992:
what all do i need to get it set up that way? would it be easier to just save to a notepad file or something?
-
View User Profile
-
Send Message
Posted Aug 9, 2021This is EXACTLY what I have been looking for!!!
With BarCopy and ActionBarSaver no longer being updated, I needed a mod that would copy my action bars AND BUTTONS from my main to my 11 alts.
I have two full bars full of 'appearance' toys and I didn't want to have to set them up manually on all 11 alts. This copied them perfectly!
Yes, it also overwrote some of my main bar skills, but setting those back up again is a lot less work.
Thank you!!!
-
View User Profile
-
Send Message
Posted Jun 26, 2021It seems that the export funtion got broken, any chance you can take a look oishii1992 ?
-
View User Profile
-
Send Message
Posted Jun 26, 2021tbc version is working, please show me more detail if broken on your machine
-
View User Profile
-
Send Message
Posted Jul 2, 2021In reply to oishii1992:
The same thing is happening for me. Hitting export does nothing.
-
View User Profile
-
Send Message
Posted Jul 4, 2021In reply to glxzym:
same for me nothing happens when hitting import.
-
View User Profile
-
Send Message
Posted Jul 4, 2021In reply to oishii1992:
same thing for my nothing happens when i hit export
-
View User Profile
-
Send Message
Posted Jul 31, 2021In reply to oishii1992:
So, hitting the Export button does nothing. /myslot works, I can see the UI element, I can make a new file.. But Export just doesn't do anything. Am I doing something wrong? Am I supposed to populate the text table somehow?
-
View User Profile
-
Send Message
Posted Aug 21, 2021In reply to oishii1992:
Keybinding import fails on import to TBC PTR from live BC - Lua Error:
Message: Interface\AddOns\Myslot\Myslot.lua:625: attempt to call global 'AttemptToSaveBindings' (a nil value)
Time: Sat Aug 21 21:28:41 2021
Count: 8
Stack: Interface\AddOns\Myslot\Myslot.lua:625: attempt to call global 'AttemptToSaveBindings' (a nil value)
[string "@Interface\AddOns\Myslot\Myslot.lua"]:625: in function `RecoverData'
[string "@Interface\AddOns\Myslot\gui.lua"]:145: in function `OnAccept'
[string "@Interface_TBC\FrameXML\StaticPopup.lua"]:5090: in function `StaticPopup_OnClick'
[string "*:OnClick"]:1: in function <[string "*:OnClick"]:1>
Locals: self = <table> {
GetActionInfo = <function> defined @Interface\AddOns\Myslot\Myslot.lua:117
Export = <function> defined @Interface\AddOns\Myslot\Myslot.lua:216
FindOrCreateMacro = <function> defined @Interface\AddOns\Myslot\Myslot.lua:362
R_KEYS = <table> {
}
regevent = <function> defined @Interface\AddOns\Myslot\event.lua:22
MOD_KEYS = <table> {
}
Print = <function> defined @Interface\AddOns\Myslot\Myslot.lua:90
ast = <table> {
}
GetMacroInfo = <function> defined @Interface\AddOns\Myslot\Myslot.lua:95
L = <table> {
}
Clear = <function> defined @Interface\AddOns\Myslot\Myslot.lua:631
KEYS = <table> {
}
BINDS = <table> {
}
R_BINDS = <table> {
}
crc32 = <table> {
}
Import = <function> defined @Interface\AddOns\Myslot\Myslot.lua:304
MainFrame = <unnamed> {
}
RecoverData = <function> defined @Interface\AddOns\Myslot\Myslot.lua:424
GetBindingInfo = <function> defined @Interface\AddOns\Myslot\Myslot.lua:185
base64 = <table> {
}
R_MOD_KEYS = <table> {
}
SLOT_TYPE = <table> {
}
luapb = <table> {
}
}
msg = <table> {
.data = <table> {
}
}
opt = <table> {
ignoreAction = false
ignoreBinding = false
ignoreMacro = false
}
spells = <table> {
1_20190 = <table> {
}
1_1499 = <table> {
}
1_20900 = <table> {
}
1_13813 = <table> {
}
1_25296 = <table> {
}
1_20903 = <table> {
}
1_Dismiss Pet = <table> {
and so on...