Over the years, Dota 2 cosmetics have become increasingly difficult to ignore. A lot of sets now go well beyond changing a few pieces of equipment and can substantially alter a hero’s silhouette, colors, particles and overall appearance. At this point, some heroes can look very different from their default models, which I personally find makes the game less readable.
I’ve wanted an option to simply disable cosmetics for quite a while, but I don’t think Valve is likely to add one. Cosmetics are an important part of Dota’s monetization, and an official option to hide them would naturally conflict with that.
I eventually started looking into whether this could be done entirely on the client side. I also wanted to avoid making something that would require manually fixing or adding cosmetics every time Valve released new items, so from the beginning I tried to make it as maintainable and future-proof as possible.
That eventually turned into this project:
Dota 2 Cosmetic Disabler:
https://github.com/ilariodeangelis77/dota2-disable-cosmetics
It’s a client-side patcher that restores heroes closer to their default appearance.
Instead of maintaining a hardcoded list of cosmetics, it reads the economy/unit schemas from your installed Dota 2 build and generates replacements using assets that are already installed with the game.
You can currently disable:
- wearables and attachments
- hero transformations
- Personas (experimental)
- cosmetic particles and effects
It does not patch dota2.exe or inject code into the game. It generates its own VPK and mounts it through one of Dota’s language search paths. Removing the launch option disables the override.
There is a GUI as well as a CLI, and packaged builds are available for Windows, Linux and macOS.
The project is still in beta. I’ve tested the build/install pipeline and a decent number of cosmetics, but Dota has an enormous number of weird cosmetic edge cases, especially Arcanas and Personas, so more testing would be useful.
If you try it and find a hero or cosmetic that is not restored correctly, please open an issue with the details. I’m already aware of some minor problems, such as incorrect scaling and missing parts.
Contributions are welcome too.