How SkinsRestorer stores data
Understand the skin and player data that SkinsRestorer stores.
SkinsRestorer stores skin data in local files or a database. Your configuration selects the storage type.
Why SkinsRestorer stores skins
Stored skin data is a local cache. It contains the same data that Mojang sends to an online-mode server.
The cache reduces requests to the Mojang API. It can also provide skins when Mojang is unavailable.
Stored data
When you run /skin Dinnerbone, SkinsRestorer stores the skin data for Dinnerbone.
It updates the cache after that account changes its skin.
When you run /sr createcustom, SkinsRestorer stores a fixed custom skin.
How Minecraft stores skin PNGs
The Minecraft launcher and SkinsRestorer get skin images from the Minecraft CDN.
Mojang signs skin data with the Yggdrasil private key. The Minecraft client displays only data with a valid signature.
The signature does not expire. However, Mojang can remove a reported skin from the CDN.
If Mojang removes a skin, Minecraft clients cannot show it. A local PNG file does not bypass this restriction.
SkinsRestorer copies signed data from an existing skin. It does not upload the skin to your Minecraft account.
URL skins use a pool of community-provided Minecraft accounts to create signed data.
What is skin data?
Skin data is a Base64-encoded profile property. It contains URLs for skin and cape textures.
SkinsRestorer requests this data from the Mojang API with a player UUID. Mojang's signature lets the Minecraft client validate the data.
Use a Base64 decoder to read the property.
The decoded data looks like this:
{
"timestamp": 1705586820658,
"profileId": "61699b2ed3274a019f1e0ea8c3f06bc6",
"profileName": "Dinnerbone",
"signatureRequired": true,
"textures": {
"SKIN": {
"url": "http://textures.minecraft.net/texture/50c410fad8d9d8825ad56b0e443e2777a6b46bfa20dacd1d2f55edc71fbeb06d"
},
"CAPE": {
"url": "http://textures.minecraft.net/texture/5786fe99be377dfb6858859f926c4dbc995751e91cee373468c5fbf4865e7151"
}
}
}timestampis the creation date in epoch time.profileIdis the player's Mojang UUID.profileNameis the player name for this skin.signatureRequiredmust betruefor signed skin data.urlpoints to the skin or cape texture.
How SkinsRestorer requests skin data
SkinsRestorer uses two Mojang API requests:
- The player name endpoint returns the UUID for a player name.
- The profile endpoint returns the Base64-encoded skin data for that UUID.
Rate limits
Mojang limits API requests. SkinsRestorer uses cached data to reduce requests and avoid this limit.
Other resources
How is this guide?
Last updated on