Programming Showdex - An Auto-Updating Damage Calculator Built into Showdown!


I am going to link this here because it seems like this may be caused by the showdex extension. Not sure whether or not that can be verified on the back end but just thought you should know. Cheers
 
Been using this for a while, love it to bits. It's incredible for randbats (sometimes feels borderline cheating lol) and a big improvement on the traditional calc for normal formats.

Is there a way to set it so that if you have multiple battles going, the calc tab automatically switches to match whichever battle tab you have open?

Also, if you disconnect and reconnect to a battle, sometimes it seems to switch which team it thinks is yours and which is the opponents. I can get some screenshots/recordings if this isn't a known issue already
 
Last edited:
The showdex page on the home screen that tracks wins and losses for a session has only been counting wins. I have not had the loss number change from 0 for about two weeks or so. On Mac if that helps. Firefox.
 
Last edited:
There's a bug where in Balanced Hackmons, if you set your opponent's pokemon's ability in the drop down menu to something else, it'll get reset to the default on the next turn. I don't know if it exists in other tiers where you can use any ability
 
There's a bug where in Balanced Hackmons, if you set your opponent's pokemon's ability in the drop down menu to something else, it'll get reset to the default on the next turn. I don't know if it exists in other tiers where you can use any ability
Try clicking the "Auto" button after changing it. Should stop that mon specifically from being updated automatically
 
The button to access calcdex no longer appears next to the timer when I play a match. Calcdex is always open in a separate tab, I can't pull it up over the chat log anymore on my laptop in chrome. The button is still there on mobile. Does anyone know how to fix this?
 
Is there any chance LGPE calcs could get fixed? Right now the calc doesn't account for the 2% friendship boost to all non-HP stats that happens because all pokemon get set to 70 friendship for battles (out of 255). This slightly affects calculations but matters more when natures get added in.

Example - neutral nature blastoise in the calc, but blastoise's actual stats should be 154/105/122/107/127/99
1761605176126.png
 
The button to access calcdex no longer appears next to the timer when I play a match. Calcdex is always open in a separate tab, I can't pull it up over the chat log anymore on my laptop in chrome. The button is still there on mobile. Does anyone know how to fix this?

I am also no longer seeing the "Open Calcdex" button on Android Firefox/Iceraven! Let me know if there's anything I can do to help debug!
 
The button to access calcdex no longer appears next to the timer when I play a match. Calcdex is always open in a separate tab, I can't pull it up over the chat log anymore on my laptop in chrome. The button is still there on mobile. Does anyone know how to fix this?
I am also no longer seeing the "Open Calcdex" button on Android Firefox/Iceraven! Let me know if there's anything I can do to help debug!
You can fix this by going into the Showdex settings (go to Hellodex page and right click or longhold on mobile), then change the Calcdex "Open as" to Chat Overlay, and it will reenable the "Open Calcdex" button. Edit: there is still a bug when using the preact client on mobile that causes the page to render incorrectly when a battle is opened. This appears to be related to the Chat Overlay setting.
21162.jpg
 
Last edited:
You can fix this by going into the Showdex settings (go to Hellodex page and right click or longhold on mobile), then change the Calcdex "Open as" to Chat Overlay, and it will reenable the "Open Calcdex" button. Edit: there is still a bug when using the preact client on mobile that causes the page to render incorrectly when a battle is opened. This appears to be related to the Chat Overlay setting.
This worked! Thank you so much!
 
So when your not in an active battle how do you actually toggle you have tera on? like in the honkdex and such. i can pick what tera i want but not set it on so i can look at calculations? only see that when i actually tera in battle
 
So when your not in an active battle how do you actually toggle you have tera on? like in the honkdex and such. i can pick what tera i want but not set it on so i can look at calculations? only see that when i actually tera in battle
You press the Tera button next to the moveset, here:
21273.jpg
 
Absolutely love this tool, hard to play without it.

There seems to be a bug (or feature?) where the battle will automatically close after the game ends, which is unideal as I like analyzing my games right after. Is this something that’s being looked into? Or is there an option I missed to turn it off?
 
Absolutely love this tool, hard to play without it.

There seems to be a bug (or feature?) where the battle will automatically close after the game ends, which is unideal as I like analyzing my games right after. Is this something that’s being looked into? Or is there an option I missed to turn it off?
Yeah, if you go into the Hellodex settings, scroll down a little bit and change Close Tab When to Never.
 
You can fix this by going into the Showdex settings (go to Hellodex page and right click or longhold on mobile), then change the Calcdex "Open as" to Chat Overlay, and it will reenable the "Open Calcdex" button.
On IOS and long hold isn't working. Any ideas what I'm doing wrong?
 
How to change language please?
My SD language, browser language and system language are all set to English, but Showdex language defaults to French anyway, which is kind of a problem because I don't know any of the names.:pika:
 
Showdex randomly stopped working, Calc and Honk both aren't working when opened, "has failed successfully and needs to close" is the only response I get. Text from the error report attached below and screenshot too.
Screenshot 2025-11-30 231227.png


{ "error": { "stack": "nN@@showdex/main.js:2:3463336\nlin/Dn<@@showdex/main.js:2:4096455\nuseMemo@@showdex/main.js:2:2454888\n2408/e.useMemo@@showdex/main.js:2:2527241\nlin@@showdex/main.js:2:4096411\npl@@showdex/main.js:2:2448565\nbs@@showdex/main.js:2:2507880\ngu@@showdex/main.js:2:2497034\nmu@@showdex/main.js:2:2496962\npu@@showdex/main.js:2:2496823\neu@@showdex/main.js:2:2493630\nru@@showdex/main.js:2:2494019\nRr@@showdex/main.js:2:2434918\n4448/Ys/<@@showdex/main.js:2:2491567\n", "name": "ReferenceError", "message": "BattleTeambuilderTable is not defined", "__wtf": "ReferenceError" }, "env": { "dict": { "BAKEDEX_API_PREFIX": "/v1", "BAKEDEX_BASE_URL": "https://bake.dex.tize.io", "BAKEDEX_ENABLED": "true", "BAKEDEX_UPDATE_INTERVAL": "3", "BAKEDEX_UPDATE_INTERVAL_UNIT": "days", "BUILD_DATE": "1998E7B1BE4", "BUILD_NAME": "showdex-v1.3.0-b1998E7B1BE4.firefox", "BUILD_SUFFIX": "", "BUILD_TARGET": "firefox", "CALCDEX_DEFAULT_GEN": "9", "CALCDEX_PLAYER_MIN_POKEMON": "6", "CALCDEX_POKEMON_DEFAULT_LC_LEVEL": "5", "CALCDEX_POKEMON_DEFAULT_LEVEL": "100", "CALCDEX_POKEMON_DEFAULT_VGC_LEVEL": "50", "CALCDEX_POKEMON_MAX_LEGAL_EVS": "508", "CALCDEX_POKEMON_MAX_LEGAL_RANDOMS_EVS": "510", "CALCDEX_POKEMON_PRESET_DEFAULT_IV": "31", "CALCDEX_POKEMON_PRESET_DEFAULT_EV": "0", "CALCDEX_POKEMON_PRESET_DEFAULT_LEGACY_IV": "30", "CALCDEX_POKEMON_PRESET_DEFAULT_LEGACY_EV": "252", "CALCDEX_POKEMON_PRESET_DEFAULT_RANDOMS_IV": "31", "CALCDEX_POKEMON_PRESET_DEFAULT_RANDOMS_EV": "85", "CALCDEX_POKEMON_PRESET_DEFAULT_RANDOMS_LEGACY_IV": "30", "CALCDEX_POKEMON_PRESET_DEFAULT_RANDOMS_LEGACY_EV": "252", "HELLODEX_BUGS_URL": "https://github.com/users/doshidak/projects/2", "HELLODEX_COMMUNITY_URL": "https://discord.gg/2PXVGGCkm2", "HELLODEX_DONATION_URL": "https://paypal.com/donate/?hosted_button_id=ZUYJAGAVX6MBN", "HELLODEX_ENABLED": "true", "HELLODEX_FEATURES_URL": "https://github.com/users/doshidak/projects/1", "HELLODEX_FORUM_URL": "https://smogon.com/forums/threads/showdex-an-auto-updating-damage-calculator-built-into-showdown.3707265", "HELLODEX_PATRONAGE_URL": "https://patreon.com/showdex", "HELLODEX_RELEASES_URL": "https://github.com/doshidak/showdex/releases", "HELLODEX_REPO_URL": "https://github.com/doshidak/showdex", "HONKDEX_DEFAULT_FORMAT": "ou", "HONKDEX_DEFAULT_GEN": "", "HONKDEX_PLAYER_EXTEND_POKEMON": "6", "HONKDEX_PLAYER_MIN_POKEMON": "6", "INDEXED_DB_BUNDLES_STORE_NAME": "bundles", "INDEXED_DB_HONKS_STORE_NAME": "honks", "INDEXED_DB_META_STORE_NAME": "meta", "INDEXED_DB_NAME": "showdex", "INDEXED_DB_NOTES_STORE_NAME": "notes", "INDEXED_DB_PRESETS_STORE_NAME": "presets", "INDEXED_DB_SETTINGS_STORE_NAME": "settings", "INDEXED_DB_VERSION": "3", "LOCAL_STORAGE_DEPRECATED_PRESET_CACHE_KEY": "showdex-presets", "LOCAL_STORAGE_DEPRECATED_SETTINGS_KEY": "showdex-settings", "LOCAL_STORAGE_SHOWDOWN_TEAMS_KEY": "showdown_teams", "NODE_ENV": "production", "NOTEDEX_ENABLED": "true", "PACKAGE_AUTHOR_EMAIL": "keith@tize.io", "PACKAGE_AUTHOR_NAME": "Keith Choison", "PACKAGE_DESCRIPTION": "Pokémon Showdown extension that harnesses the power of parabolic calculus to strategically extract your opponents' Elo.", "PACKAGE_NAME": "showdex", "PACKAGE_VERSION": "1.3.0", "PACKAGE_VERSION_SUFFIX": "", "PACKAGE_URL": "https://github.com/doshidak/showdex", "PKMN_PRESETS_BASE_URL": "https://pkmn.github.io", "PKMN_PRESETS_ENDPOINT_SUFFIX": ".json", "PKMN_PRESETS_FORMAT_PATH": "/smogon/data/sets", "PKMN_PRESETS_FORMAT_STATS_PATH": "/smogon/data/stats", "PKMN_PRESETS_RANDOMS_PATH": "/randbats/data", "PKMN_PRESETS_RANDOMS_STATS_PATH": "/randbats/data/stats", "SHOWDOWN_CLIENT_ACTION_PATH": "/~~showdown/action.php", "SHOWDOWN_CLIENT_BASE_URL": "https://play.pokemonshowdown.com", "SHOWDOWN_USERS_URL": "https://pokemonshowdown.com/users", "SMOGON_UNIVERSITY_DEX_URL": "https://smogon.com/dex", "STANDALONE_RESOURCE_PREFIX": "showdex", "STANDALONE_RESOURCE_PROTOCOL": "", "UUID_NAMESPACE": "d4ecad83-b73d-44a7-bacc-545fc5e57939" }, "navigator": { "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0", "__wtf": "Navigator" }, "window": { "location": { "href": "https://play.pokemonshowdown.com/", "__wtf": "Location" }, "app": { "fragment": "", "initialFragment": "", "__wtf": "child" }, "Dex": { "gen": 9, "__wtf": "_class2" }, "__wtf": "Window", "__SHOWDEX_INIT": "showdex-v1.3.0-b1998E7B1BE4.firefox" } }, "state": { "p1": { "sideid": "p1", "active": true, "name": "Side A", "rating": -1, "activeIndices": [], "selectionIndex": 0, "autoSelect": true, "maxPokemon": 6, "usedMax": false, "usedTera": false, "side": null, "pokemonOrder": [], "pokemon": [] }, "p2": { "sideid": "p2", "active": true, "name": "Side B", "rating": -1, "activeIndices": [], "selectionIndex": 0, "autoSelect": true, "maxPokemon": 6, "usedMax": false, "usedTera": false, "side": null, "pokemonOrder": [], "pokemon": [] }, "operatingMode": "standalone", "battleId": "c1b0b4d8-dd86-4dd8-89da-f2a93e543dc0", "gen": 9, "format": "gen9ou", "subFormats": [], "gameType": "Singles", "legacy": false, "defaultLevel": 100, "rules": {}, "turn": 0, "active": false, "paused": false, "renderMode": "panel", "overlayVisible": false, "containerSize": "xs", "containerWidth": 320, "playerCount": 2, "playerKey": "p1", "authPlayerKey": null, "opponentKey": "p2", "switchPlayers": false, "p3": { "sideid": "p3", "active": false, "name": null, "rating": null, "activeIndices": [], "selectionIndex": 0, "autoSelect": true, "maxPokemon": 0, "usedMax": false, "usedTera": false, "side": null, "pokemonOrder": [], "pokemon": [] }, "p4": { "sideid": "p4", "active": false, "name": null, "rating": null, "activeIndices": [], "selectionIndex": 0, "autoSelect": true, "maxPokemon": 0, "usedMax": false, "usedTera": false, "side": null, "pokemonOrder": [], "pokemon": [] }, "field": { "weather": null, "terrain": null, "isMagicRoom": false, "isWonderRoom": false, "isGravity": false, "attackerSide": null, "defenderSide": null }, "sheetsNonce": null, "sheets": [], "notes": { "pre": { "visible": false, "editorState": null }, "post": { "visible": true, "editorState": null } } }, "dumper": "@showdex/components/calc/CalcdexErrorBoundary", "created": "2025-11-30T17:34:52.541Z"}
 
Hey really cool extension, thanks! Some of the auto switching to the correct set behaviour in randbats could be better imo? Not to say it's not already really good. This doesn't apply to metagames where we don't have comprehensive knowledge of the sets involved, but I feel like autoPreset stays true (and keeps re-evaluating) for longer than is sometimes necessary (as in I can deduce what set my opponent has before calcdex does).

Like for example if a mon outspeeds me in a manner that could only happen if it had a scarf on I'd optimally want showdex to switch to the scarf set, and then have it locked in as the default instead of me having to switch to it and turn off auto myself. Recently it kept resetting my opponent's chien pao to the boots set when the damage being done was clearly banded, and if a non magic guard mon isn't taking hazard damage when it should be then the boots set isn't being locked in (since all of these items have been "revealed" the same way lorb or leftovers is revealed).
 
Anyone else has the issue where Honkdex ONLY saves for SV Formats? I tried saving a honkdex for BW, XY, SM and everytime I try to reopen it, even with the tab still open, from the hellodex. It opens a blank SV OU honkdex. This issue has been going on for months.
Visual Example:
1. I create a XY OU honkdex, I name it, and click save (NOW SAVED)
Screenshot 2026-01-24 5.06.42 PM.png

2.
The Honkdex now appears on the Hellodex, with the proper name
Screenshot 2026-01-24 5.06.57 PM.png

3. I click on the XY OU TEST SAVE Honkdex and it takes me to a completely new SV OU Honkdex
1769292635581.png

4. I go back to the hellodex and see that a new SV OU honkdex has been created, and there is no way for me to go back to the XY OU honkdex through the hellodex even though it is STILL OPEN. If I refresh showdown, it can never been acessed again.

Screenshot 2026-01-24 5.10.31 PM.png

5. Note that SV Format honkdex that are saved works at intended, I am unsure if there are other generations that works, from my limited testing. Anything other than SV fails to save.

Further insight: I've had an older version of Showdex installed on my laptop, and everything saves just fine there. My PC always had this issue since well over 4months. Yesterday, I updated my showdex on laptop and the same issue came up, which leads me to believe this is a version issue. I am using chrome and opera and they both have the same issue.

Thank you for creating the best showdown extention, hopefully this can be fixed in the future.
 
Last edited:
How to change language please?
My SD language, browser language and system language are all set to English, but Showdex language defaults to French anyway, which is kind of a problem because I don't know any of the names.:pika:

Hey, I have the same problem.
System, browser, and Showdown, are in english, somehow the Showdex extension is all in french. I can't use it at all.

EDIT : Got it, I had to go into the HelloDex tab, then settings at the bottom, select french, then re select english.
(english was selected by default, still, everything was in french)
 
Last edited:
Back
Top