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 Oct 16, 2026so horrible the new version. It messed up my CDM. I just want to use myslot to save my keybinding and macro.
-
View User Profile
-
Send Message
Posted Oct 17, 2026In reply to locksjj:
may i know the details?
-
View User Profile
-
Send Message
Posted Oct 12, 2026there is a proposition if you would like to make the binds and the slots load depending on who logs into the account like :"https://www.curseforge.com/wow/addons/keybindprofiles" this addon made it that way
when i connect to my account i find my keybinds and when my friend connect to my account he find the configuration that he made on my account not mine
in your addon when i change the keybinds and the slots my friend will find them like i made them can you make the slots and the binds related to the addon not to the account
-
View User Profile
-
Send Message
Posted Oct 14, 2026@ALPHABLACK i think the account here means character? blizzard provides 2 ways for addon to save data
1 across all characters
2 specific to single character
myslot uses 1 now, to help user to move setting between characters
let me know if you are looking for 2
-
View User Profile
-
Send Message
Posted Oct 12, 2026can you add a button to load the profiles because me and my friend uses each others accounts and we like to save our own profile on each account and it's kinda bad to save the profile in a txt file and import it
-
View User Profile
-
Send Message
Posted Oct 12, 2026Thanks for add in to clear cooldown manager but is it possible to make the word to type shorter like cdm?
-
View User Profile
-
Send Message
Posted Oct 14, 2026@Rubyurek /myslot -> ?
-
View User Profile
-
Send Message
Posted Oct 14, 2026@oishii1992 i mean this: https://i.imgur.com/2tUSzzo.png
Type COOLDOWNMANAGER to CDM
-
View User Profile
-
Send Message
Posted Oct 6, 2026Will it be possible to save all the settings (ESC > Options) or will it still be necessary to save the WTF folder?
-
View User Profile
-
Send Message
Posted Oct 11, 2026@Rubyurek hmm for now, myslot will still focus on control related
-
View User Profile
-
Send Message
Posted Sep 29, 2026Will I be able to copy my Retail Profile to Forever?
-
View User Profile
-
Send Message
Posted Sep 29, 2026@thetwistedbullet yes, non support data will be ignored
-
View User Profile
-
Send Message
Posted Sep 24, 2026fatal error after import. And the CDM will not worked. I have to reload and will be ok.
-
View User Profile
-
Send Message
Posted Sep 25, 2026In reply to locksjj:
could you please share me the bug export text?
-
View User Profile
-
Send Message
Posted Oct 9, 2026@oishii1992 310x ...ceBlizzard_CooldownViewer/CooldownViewer.lua:1865: attempted to index a table that cannot be accessed while tainted (execution tainted by 'Myslot')
[Blizzard_CooldownViewer/CooldownViewer.lua]:1865: in function 'CheckAuraAddedAlertTriggers'
[Blizzard_CooldownViewer/CooldownViewer.lua]:1846: in function 'OnUnitAura'
[Blizzard_CooldownViewer/CooldownViewer.lua]:1781: in function 'OnEvent'
[Blizzard_CooldownViewer/CooldownViewer.lua]:2265: in function 'OnEvent'
[Blizzard_CooldownViewer/CooldownViewer.lua]:2288: in function <...ceBlizzard_CooldownViewer/CooldownViewer.lua:2287>
Locals:
self=BuffIconCooldownViewer <CooldownViewer.xml:320>{
iconLimit=1
systemInfo=<table>
downKeys=<table>
visibleSetting=0
oldGridSettings=<table>
hasDoneInitialTargetUpdate=true
alwaysUpdateLayout=true
stride=20
childYPadding=0
layoutFramesGoingUp=false
pandemicIconPool=<table>
layoutFramesGoingRight=true
hideWhenInactive=true
dirty=false
orientationSetting=0
ignoreFramePositionManager=true
dirtySettings=<table>
settingMap=<table>
isManagedFrame=true
hasActiveChanges=false
tooltipsShown=false
iconDirection=1
timerShown=true
iconScale=1
isHorizontal=true
isBottomManagedFrame=true
itemFramePool=<table>
settingDisplayInfoMap=<table>
settingsDialogAnchor=<table>
snappedFrames=<table>
defaultHideSelection=true
layoutIndex=9
cooldownViewerCategory=2
itemTemplate="CooldownViewerBuffIconItemTemplate"
systemIndex=3
ignoreInLayoutWhenActionBarIsOverriden=true
itemFramesNeedingTargetUpdateMap=<table>
layoutParent=BottomManagedFrameContainer <ManagedFrameSystem.xml:8>
iconPadding=4
savedSystemInfo=<table>
systemNameString="追踪的增益效果"
auraInstanceIDToItemFramesMap=<forbidden table>
childXPadding=0
hideWhenActionBarIsOverriden=true
Selection=Frame <EditModeSystemTemplates.xml:348>
align="center"
snappedToFrame=EssentialCooldownViewer <CooldownViewer.xml:298>
system=20
itemFramesNeedingOnUpdateMap=<table>
}
unitAuraUpdateInfo=<table>{
addedAuras=<table>
isFullUpdate=false
}
(for state)=<table>{
1=<table>
}
(for control)=1
_=1
aura=<table>{
spellId=8326
isBossAura=false
duration=0
hideOnPartyFrames=false
expirationTime=0
isFromPlayerOrPlayerPet=true
isHelpful=false
points=<table>
icon=132331
nameplateShowPersonal=false
isStealable=false
timeMod=1
auraInstanceID=1217
nameplateShowAll=false
isRaid=false
canActivePlayerDispel=false
isTankRoleAura=false
isHarmful=true
canApplyAura=false
name="鬼魂"
isDPSRoleAura=false
applications=0
isNameplateOnly=false
sourceUnit="player"
isHealerRoleAura=false
}
(*temporary)=<forbidden table>
(*temporary)=1217
(*temporary)=<table>{
spellId=8326
isBossAura=false
duration=0
hideOnPartyFrames=false
expirationTime=0
isFromPlayerOrPlayerPet=true
isHelpful=false
points=<table>
icon=132331
nameplateShowPersonal=false
isStealable=false
timeMod=1
auraInstanceID=1217
nameplateShowAll=false
isRaid=false
canActivePlayerDispel=false
isTankRoleAura=false
isHarmful=true
canApplyAura=false
name="鬼魂"
isDPSRoleAura=false
applications=0
isNameplateOnly=false
sourceUnit="player"
isHealerRoleAura=false
}
(*temporary)=nil
(*temporary)=nil
(*temporary)=nil
(*temporary)=nil
(*temporary)=nil
(*temporary)="attempted to index a table that cannot be accessed while tainted (execution tainted by 'Myslot')"
-
View User Profile
-
Send Message
Posted Sep 18, 2026Is it possible to get a Forever Beta version?
-
View User Profile
-
Send Message
Posted Sep 19, 2026In reply to CowClassic:
happy to, but i do not have beta key, i will support it when release
-
View User Profile
-
Send Message
Posted Aug 20, 2026local MAX_CHARACTER_MACROS = MAX_CHARACTER_MACROS or 18
MAX_CHARACTER_MACROS is nil Now
18 should be 30
-
View User Profile
-
Send Message
Posted Aug 22, 2026In reply to Yishier12:
please check if 6.1.0 fixes it
-
View User Profile
-
Send Message
Posted Aug 18, 2026Myslot seems totally broken. I've been unable to save or load profiles since 12.1 hit.
Fingers crossed a fix is on the way. Thanks for keeping this vital addon going!