Prefer clicking to reading? Build your avatar URL in the live playground β
Avatar placeholder services have quietly become a graveyard. Checked live, September 2026:
| Host | Status 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">
Same name β same colors, same initials, forever. Pure SVG rendered at the edge β no image processing, no third-party calls, cacheable for a day.
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).
| Param | Meaning |
|---|---|
name | Initials 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 / bg | Hex without # (3 or 6 digits), or random for the deterministic palette. |
color / fg | Text color hex. Auto-contrast picked if omitted. |
rounded / round | true or 1 β circle. Default square. |
length | Number of initials, 1β3. Default 2. |
uppercase=false | Keep the original case. |
seed / u | Overrides which palette color is picked (identity stays stable even if the display name changes). |
style | identicon (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β10 | picsum-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. |
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.
| Service | Pick it when⦠|
|---|---|
| UI Avatars | you 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). |
| Pravatar | you want photos of real people (CC0). Fixed pool of exactly 70 photos (?img=71 is a 404), so distinct users share faces past that. |
| DiceBear | you want illustrated art styles (pixel art, bots, adventurersβ¦). Rich API β just use the current api.dicebear.com host, not old tutorial URLs. |
| RoboHash | you want fun robots/monsters per string. |
| Mockbird | you want deterministic initials avatars plus the mock API around them: users CRUD, auth, filters, GraphQL, webhooks β one base URL, no signup. |
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 β