BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
# 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/png

Parameters

ParameterTypeRequiredDescription
endpointpath segmentRequired`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
uuidpath segmentRequiredThe player's Mojang UUID, dashed or undashed. Usernames are not accepted. 853c80ef3c3749fdaa49938b674adae6
sizequeryOptionalOutput size in pixels, 1 to 512. Ignored by the raw `skins` endpoint. 64
overlayqueryOptionalPresent-as-flag. Includes the hat and jacket overlay layers in the render. overlay
defaultqueryOptionalWhat to serve for an unknown UUID: `MHF_Steve`, `MHF_Alex`, or `404` to return a real error instead. 404
scalequeryOptionalScale 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

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.