Free avatar placeholder API β€” deterministic initials avatars, no signup

Prefer clicking to reading? Build your avatar URL in the live playground β†’

Avatar placeholder services have quietly become a graveyard. Checked live, September 2026:

HostStatus today
api.adorable.io❌ dead β€” every avatar URL 301-redirects to an unrelated web-design agency that now owns the domain
avatars.dicebear.com (old host)❌ HTTP 410 Gone β€” every pre-2023 DiceBear tutorial URL is dead (the API moved to api.dicebear.com and now needs a style + version in the path)
ui-avatars.comβœ… up
i.pravatar.ccβœ… up
robohash.orgβœ… up

We check the live ones hourly β€” current state on the status page, e.g. /status/ui-avatars.

Mockbird serves deterministic initials avatars from the same base URL as its placeholder images and your mock REST API. No signup, no key, works right now:

<img src="https://mockbird.mockbird.workers.dev/m/demo/avatar?name=John+Doe&rounded=true">
JD avatar AL avatar GH avatar AT avatar KJ avatar

Same name β†’ same colors, same initials, forever. Pure SVG rendered at the edge β€” no image processing, no third-party calls, cacheable for a day.

Try it

avatar preview

Switching from ui-avatars.com? It's a host swap

The params are ui-avatars.com-compatible β€” name, size, background, color, rounded, length, uppercase=false all work the same way:

# before
https://ui-avatars.com/api/?name=John+Doe&size=128&background=0D8ABC&color=fff&rounded=true

# after β€” same params, one URL swap
https://mockbird.mockbird.workers.dev/m/demo/avatar?name=John+Doe&size=128&background=0D8ABC&color=fff&rounded=true

Differences to know about: Mockbird serves SVG by default and honors format=png (or a /avatar/128.png path suffix) for raster output with identical layout and colors, background=random maps to our deterministic palette pick (same name keeps the same color across page loads, which is usually what you actually wanted), and font/bold tuning params are ignored.

Pravatar-style ids work too: /avatar/150?u=a042581f4e29026704d β€” the u value picks the colors deterministically, exactly like their "unique id always gets the same image" behavior (you get initials instead of a stock photo).

Parameter reference

ParamMeaning
nameInitials source: first letter of the first two words (John Doe β†’ JD); single word β†’ its first letters. ≀80 chars.
size or path (/avatar/64)Square size in px, 1–1000. Default 128.
background / bgHex without # (3 or 6 digits), or random for the deterministic palette.
color / fgText color hex. Auto-contrast picked if omitted.
rounded / roundtrue or 1 β†’ circle. Default square.
lengthNumber of initials, 1–3. Default 2.
uppercase=falseKeep the original case.
seed / uOverrides which palette color is picked (identity stays stable even if the display name changes).
styleidenticon (GitHub-style 5Γ—5 mirrored grid) or shapes (abstract geometric) instead of initials β€” deterministic per seed, composes with size/rounded/colors. Full story: free identicon API.
grayscale / blur=1–10picsum-style effects β€” desaturate and/or blur the avatar (bare ?blur = 5). Work on SVG and PNG output alike, deterministic. Handy for "inactive user" or skeleton states.

Avatars inside your mock data

This is the part no standalone avatar service does: Mockbird is a mock REST API, so seeded avatar fields point at this endpoint automatically. One curl gives you a users API where every record ships a working avatar URL:

curl -X POST https://mockbird.mockbird.workers.dev/api/projects \
  -H 'content-type: application/json' \
  -d '{"name":"my-app","preset":"saas"}'
# β†’ GET /m/<id>/users returns records with "avatar": ".../m/<id>/avatar?name=Mia+Chen&rounded=true"

Your frontend renders a believable user list β€” names, emails, and avatars that match β€” before the real backend exists.

When the other services are the better pick

ServicePick it when…
UI Avatarsyou want fine font control (bold, font-size). It's a good service β€” we made our params compatible on purpose (and we serve PNG too: /avatar/128.png).
Pravataryou want photos of real people (CC0). Fixed pool of exactly 70 photos (?img=71 is a 404), so distinct users share faces past that.
DiceBearyou want illustrated art styles (pixel art, bots, adventurers…). Rich API β€” just use the current api.dicebear.com host, not old tutorial URLs.
RoboHashyou want fun robots/monsters per string.
Mockbirdyou want deterministic initials avatars plus the mock API around them: users CRUD, auth, filters, GraphQL, webhooks β€” one base URL, no signup.

FAQ

Do I need to create anything? No β€” /m/demo/avatar?name=… works bare. Create your own project (one curl, no signup) for your own namespace and quota.

Is the SVG safe to embed? Yes β€” text is XML-escaped, and the response carries X-Content-Type-Options: nosniff plus a restrictive Content-Security-Policy. It behaves like a PNG in an <img> tag.

Rate limits? Avatars share the project's daily request quota (10,000/day per project; the shared demo gets 50,000). Responses cache for 24h, so real pages hit the quota far less than you'd think.

Full reference in the docs. More guides: placeholder image API Β· fake user API Β· picsum alternative Β· free mock API tools compared. Create your API β†’