Crafatar API
Free Minecraft avatar API with no key. Render any player's face, 3D head, full body or raw skin and cape straight from a UUID, at any size, as a plain image URL.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Crafatar API?
Crafatar is a free, key-free image API that renders Minecraft player skins. Point an image tag at a UUID and it returns the player's face, an isometric 3D head, a full body render, or the raw skin and cape files, at whatever size you ask for.
There is no JSON here at all, and that is the design. Every endpoint returns an image, so you never write fetch code — you write an image tag pointing at `https://crafatar.com/avatars/{uuid}?size=64` and the browser does the rest. For leaderboards, player lists and Discord embeds that is a considerably better shape than an API which hands you a URL you then have to render anyway.
The input is a UUID, never a username, and this catches people out constantly. Mojang usernames change; UUIDs do not, which is why Crafatar refuses to accept the former. Both dashed and undashed forms work. Equally important is the fallback: an unknown UUID quietly returns a default Steve or Alex skin rather than an error, so a typo surfaces as a plausible-looking wrong avatar instead of a broken image. Add `default=404` when you need to tell the two apart.
Quick facts
- Base URL
https://crafatar.com- Authentication
- No key or account. Crafatar sends a wildcard allow-origin header and honours conditional requests, so browsers and CDNs cache renders well.
- Rate limit
- No published numeric limit. Crafatar caches skins fetched from Mojang and asks that you not defeat that caching by appending random query strings.
- Pricing
- Free, community-run.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Crafatar API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Render a player's avatar from their UUID
GET https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64
curl 'https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64'const res = await fetch("https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64", timeout=20)
res.raise_for_status()
print(res.json())# This endpoint returns image/png, not JSON.
# The response body is the image itself, so it can be used directly as an
# <img src="..."> or saved to a file — there is nothing to parse.
#
# Verified: HTTP 200, Content-Type: image/pngParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint | path segment | Required | `avatars` for the face, `renders/head` for an isometric head, `renders/body` for a full body, `skins` for the raw skin file, `capes` for the cape. avatars |
uuid | path segment | Required | The player's Mojang UUID, dashed or undashed. Usernames are not accepted. 853c80ef3c3749fdaa49938b674adae6 |
size | query | Optional | Output size in pixels, 1 to 512. Ignored by the raw `skins` endpoint. 64 |
overlay | query | Optional | Present-as-flag. Includes the hat and jacket overlay layers in the render. overlay |
default | query | Optional | What to serve for an unknown UUID: `MHF_Steve`, `MHF_Alex`, or `404` to return a real error instead. 404 |
scale | query | Optional | Scale factor for the `renders` endpoints, 1 to 10, as an alternative to `size`. 6 |
Response fields
(body)image/png- The rendered image itself. There is no JSON envelope and nothing to parse — use the URL directly as an image source, or save the bytes.
Content-Typeheader- `image/png` on every endpoint, including the raw skin and cape files.
ETag / Last-Modifiedheader- Present and meaningful. Conditional requests return 304, which is how you keep repeated renders cheap.
Access-Control-Allow-Originheader- Sent as a wildcard, so canvas code can read the pixels cross-origin as well as display them.
What you can build with the Crafatar API
- Show player avatars on a server leaderboard or ban list
- Add a player's face to a Discord embed or webhook
- Render a full-body preview in a skin browser
- Generate profile images for a Minecraft community site
- Fetch a raw skin file for client-side manipulation on a canvas
Common errors and how to fix them
A Steve or Alex avatar for a real player
The UUID was wrong, or Mojang has no skin on file for it.
Fix: Add `default=404` while debugging so an unknown UUID errors visibly instead of falling back silently.
404 or a broken image from a username
Crafatar takes UUIDs only.
Fix: Resolve the username to a UUID first — PlayerDB or Mojang's own name-to-profile endpoint does this — and cache the mapping, since UUIDs never change.
Missing hat or jacket layers
The overlay is opt-in.
Fix: Append `overlay` to the query string. It is a bare flag, not a key-value pair.
Slow renders under load
Unique query strings are defeating the cache.
Fix: Keep the query string stable per player and size so CDNs and browsers can reuse the cached render.
Crafatar API — frequently asked questions
Does Crafatar need an API key?
No. Every render endpoint is a plain image URL that works with no key, no account and no headers. You can put it directly in an image tag.
Can I use a Minecraft username instead of a UUID?
No. Crafatar accepts only UUIDs, dashed or undashed, because usernames are changeable and UUIDs are not. Resolve the name to a UUID once, cache it, and use that from then on.
What happens if the UUID does not exist?
Crafatar serves a default Steve or Alex skin rather than an error, which means a typo looks like a real but wrong player. Pass `default=404` if you would rather get a genuine error you can detect.
Does Crafatar support capes and full-body renders?
Yes — `renders/body` gives a full isometric body, `renders/head` an isometric head, and `capes` the raw cape file for players who have one. All take the same size and overlay parameters.
Tools that pair with this API
UUID Decoder
Decode any UUID or GUID. Read its version and variant, and pull the creation timestamp out of version 1, 6 and 7 UUIDs instantly.
Image to Base64 Converter
Convert an image to a Base64 data URL online. Get copy-ready HTML img tags and CSS background-image snippets. Free, instant and fully private.
PNG to JPG Converter
Convert PNG to JPG online with an adjustable quality slider and a background color for transparent areas. Free, private, in-browser conversion.
Crafatar is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.