CustomSkinLoader is a Minecraft mod that loads skins, capes, and elytra textures from online skin APIs or local files.
This branch is the Universal generation of MCCustomSkinLoader. It replaces the old edition-specific jars with one bootstrap artifact. The bootstrap jar prepares a runtime CustomSkinLoader-Common.jar, remaps it for the active Minecraft mapping namespace, and applies the required loader-specific class patches at runtime.
- Forge Legacy and Forge ModLauncher
- NeoForge
- Fabric
- Quilt-compatible Fabric Loader environments
One user-facing jar is used across supported loaders. The generated installable artifact is:
Bootstrap/build/libs/CustomSkinLoader_Universal-<version>.jar
Common/build/libs/Common-<version>.jar is the nested runtime payload and should not be installed directly.
Supported skin loading APIs:
- MojangAPI
- CustomSkinAPI
- CustomSkinAPIPlus
- UniSkinAPI
- ElyByAPI
- Legacy
Supported special skin sites and profiles:
- Glitchless
- MinecraftCapes
- OptiFineCape
- Cloaks+
- Cosmetica
- Wynntils compatible profile support
You can customize the skin load list and load textures from any compatible skin server. Skin server owners can also use ExtraList files to help users add their server.
CustomSkinLoader can load and process HD skins and capes. OptiFine cape textures are converted to the standard cape format when needed.
- Decreases repeated network requests.
- Allows cached profiles to load when the network is unavailable.
Load skins without a skin server. With the default Legacy paths, place textures under:
.minecraft/CustomSkinLoader/LocalSkin/skins/<USERNAME>.png
.minecraft/CustomSkinLoader/LocalSkin/capes/<USERNAME>.png
.minecraft/CustomSkinLoader/LocalSkin/elytras/<USERNAME>.png
Skin servers can provide ExtraList JSON files. Users can put them into .minecraft/CustomSkinLoader/ExtraList to add servers to the load list.
The render patches are designed to keep skin and cape transparency correct on supported versions.
The project should compile on Windows, Linux, and macOS with a suitable Java 25 installation.
Windows:
.\gradlew.bat clean build --stacktraceLinux/macOS:
./gradlew clean build --stacktraceGitHub Actions intentionally runs on Windows with PowerShell, but local project builds are not Windows-only.
- Mojang (MojangAPI)
- LittleSkin (CustomSkinAPI)
- BlessingSkin (CustomSkinAPI)
- ElyBy (ElyByAPI)
- TLauncher (ElyByAPI)
- Glitchless (ElyBy-compatible profile)
- LocalSkin (Legacy)
- MinecraftCapes
- OptiFineCape
- Cloaks+
- Cosmetica
If you want to add another skin server to the default list, please open an issue.
CustomSkinLoader is designed for loading textures from many server implementations. It is usually better to support one of CustomSkinLoader's APIs than to copy this mod's internal implementation. If you maintain a skin server, you can provide an ExtraList file or request inclusion in the default load list.
See CONTRIBUTING.md.
- 2013-2014 Jeremy Lam (JLChnToZ)
- 2014-2024 Alexander Xia (xfl03)
- 2020-2026 ZekerZhayard
You may use and share the unmodified official binary in modpacks. When used in a modpack, CustomSkinLoader must be listed in the mod list. Do not repost the mod to other websites without permission.
The source code is licensed under GPL-3.0-only. See LICENSE.
Package customskinloader includes code or ideas from:
- AsteriskTeam/TabIconHackForge (GPLv3)
- RecursiveG/UniSkinMod (GPLv3)
- NekoCaffeine/Alchemy (GPLv3)
If you redistribute a modified build, change the package name and clearly mark the build as modified to avoid confusion with official CustomSkinLoader releases.