# 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.

Published 2026-10-19 · https://avatarsapi.com/blog/avatar-placeholder-generators

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](https://www.dicebear.com/how-to-use/http-api/) | 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](https://ui-avatars.com/) | Initials on a colored square or circle | Free | Simple, no stated limits, open source. |
| [Boring Avatars](https://github.com/boringdesigners/boring-avatars) | Abstract gradients and shapes | Paid subscription for the hosted API | The React library is open source and free. |
| [avatar.vercel.sh](https://github.com/vercel/avatar) | 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.

```html
<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:

```html
<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:

```html
<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](https://avatarsapi.com/docs).
