SkinsRestorer LogoSkinsRestorer

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"
    }
  }
}
  1. timestamp is the creation date in epoch time.
  2. profileId is the player's Mojang UUID.
  3. profileName is the player name for this skin.
  4. signatureRequired must be true for signed skin data.
  5. url points to the skin or cape texture.

How SkinsRestorer requests skin data

SkinsRestorer uses two Mojang API requests:

  1. The player name endpoint returns the UUID for a player name.
  2. 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

On this page