DiceBear vs UI Avatars vs Boring Avatars: generated avatar APIs compared

Generated avatars never fail, but they're never the real person. A comparison of DiceBear, UI Avatars, Boring Avatars, and Vercel's avatar service, and how to pair them with a real lookup.

Generated avatar services turn a seed (a name, an email, a user id) into an image. They never return a 404, which makes them perfect placeholders. Here is how the popular ones compare as of October 2026.

Service Style Hosted API cost Notes
DiceBear 61 styles: pixel art, initials, illustrated faces Free for non-commercial use Commercial apps are asked to self-host. Rate limited per second.
UI Avatars Initials on a colored square or circle Free Simple, no stated limits, open source.
Boring Avatars Abstract gradients and shapes Paid subscription for the hosted API The React library is open source and free.
avatar.vercel.sh Gradient circle, optional text Free MIT licensed.

DiceBear

The most flexible: dozens of styles with their own licenses (most CC0 or CC BY), output as SVG, PNG, JPG, WebP, or AVIF, and a JavaScript library if you would rather render locally.

<img src="https://api.dicebear.com/10.x/initials/svg?seed=Jane%20Doe" alt="">

Check the license of the style you pick, and self-host if your app is commercial.

UI Avatars

The easiest initials avatar on the web:

<img src="https://ui-avatars.com/api/?name=Jane+Doe&background=d95207&color=fff" alt="">

Boring Avatars

Beautiful abstract avatars. Use the open-source React component for free, or pay for the hosted endpoint.

Real photo first, generated second

A generated avatar is a good default, but users notice when their real picture is available and you do not show it. The usual pattern is to try a real lookup and fall back:

<img
  src="https://avatarsapi.com/email/jane@stripe.com?size=80"
  onerror="this.onerror=null; this.src='https://ui-avatars.com/api/?name=Jane+Doe&size=80'"
  alt="">

This works because avatarapi returns a real 404 when no Source has a validated picture, instead of a default silhouette with a 200. The same holds for usernames (/github/:user, /x/:user) and domains (/domain/stripe.com). See the docs.

Try it: put https://avatarsapi.com/github/torvalds in an <img src>. No key, no signup. Read the docs or create a Project.