Minecraft Avatar & Skin Render API
Head avatars and 3D full-body renders for any Minecraft player, as simple PNG URLs. Free for any project — no API key, no signup, CORS enabled, edge-cached worldwide.
Endpoints
https://api.fadehost.com/api/minecraft/skin/avatar/{size}/{player}.png Front-facing head avatar with the hat layer, size×size pixels.
https://api.fadehost.com/api/minecraft/skin/body/{size}/{player}.png 3D perspective full-body render (slightly turned, camera above — with all overlay layers), size wide × size×2 tall.
- player
- Username or UUID (dashed or undashed). UUIDs are stable across name changes — prefer them in production.
- size
- 8 – 1024. Rendered at the exact resolution with crisp pixel edges.
Live examples
These images are loaded straight from the API — right-click any URL to try it.
Usage
HTML
<img src="https://api.fadehost.com/api/minecraft/skin/avatar/64/Notch.png" alt="Notch" width="64" height="64"> Markdown (READMEs, GitHub profiles)
 Discord bot (embed thumbnail)
embed.setThumbnail(`https://api.fadehost.com/api/minecraft/skin/body/256/${uuid}.png`) JavaScript
const res = await fetch('https://api.fadehost.com/api/minecraft/skin/avatar/128/069a79f4-44e9-4726-a5be-fca90e38aaf5.png');
const blob = await res.blob(); // image/png, CORS-enabled Good to know
- • Caching: 24 h at the edge, 1 h in the browser. Same-URL requests are effectively free — embed away.
- • Model detection: slim (Alex) arms come from the player's profile; legacy 64×32 skins render with correctly mirrored limbs.
- • Overlay layers: hat, jacket, sleeves and pants render as raised layers, like in-game.
- • Easter egg: Dinnerbone and Grumm render upside down. Naturally.
- • Errors: unknown players return an error status (no silent Steve), malformed names return 400.
- • Attribution: not required — a link to this page is appreciated.
FAQ
Is the API really free? Do I need an API key?
Yes — free for any project, commercial or not, with no API key, no signup and no attribution requirement (a link back is appreciated). Responses are served from a global edge cache, so normal production use is well within fair use.
Are there rate limits?
No hard per-IP quota for normal use. Renders are cached at the edge for 24 hours, so repeated requests for the same player cost nothing. If you plan sustained bulk traffic (millions of unique renders), get in touch first so we can keep it fast for everyone.
How fresh are the renders? A player changed their skin.
Renders are cached for up to 24 hours (1 hour in the browser). A skin change appears once the cached copy expires. If you need to force a refresh in your own pages, append a changing query parameter (e.g. ?t=<timestamp>) — unique URLs bypass the shared cache.
Does it support slim (Alex) models and old 64×32 skins?
Yes. The slim 3-pixel arm model is detected from the profile (with a texture heuristic as fallback), legacy 64×32 skins get their left limbs mirrored exactly like the vanilla client, and junk all-black legacy hat layers are skipped.
Can I look players up by UUID instead of name?
Yes — the identifier segment accepts a username or a UUID, dashed or undashed. UUIDs are the safer choice in production since usernames can change.
What sizes can I request?
Any size from 8 to 1024. For avatars the image is size×size; for body renders it is size wide and size×2 tall. Renders are drawn at the requested resolution with crisp nearest-neighbour texels — no blurry upscaling.
Can I use this in a Minecraft plugin, Discord bot, or launcher?
Yes — that is exactly what it is for. The endpoints are plain GET requests returning image/png with permissive CORS, so they work from web apps, bots, plugins, launchers and READMEs alike.
What happens for invalid or unknown players?
A player that does not exist returns a 404-style error response rather than a wrong default skin, and malformed identifiers are rejected with a 400. Your UI can fall back to a placeholder however it likes.