Open demo

CSS code

HTML
<div><span class="lbl">Initials · five sizes, circle and rounded square</span>
<ul class="av-row">
  <li><span class="av xs" role="img" aria-label="Lena Vogt">LV</span></li>
  <li><span class="av sm teal" role="img" aria-label="Omar Aziz">OA</span></li>
  <li><span class="av rose" role="img" aria-label="June Park">JP</span></li>
  <li><span class="av lg slate" role="img" aria-label="Tomás Ruiz">TR</span></li>
  <li><span class="av xl green" role="img" aria-label="Ines Duarte">ID</span></li>
  <li><span class="av xs sq rose" role="img" aria-label="Kai Moreno">KM</span></li>
  <li><span class="av sm sq" role="img" aria-label="Priya Nair">PN</span></li>
  <li><span class="av sq green" role="img" aria-label="Femi Adeyemi">FA</span></li>
  <li><span class="av lg sq teal" role="img" aria-label="Hana Sato">HS</span></li>
  <li><span class="av xl sq slate" role="img" aria-label="Elliot Brandt">EB</span></li>
</ul></div>

<div><span class="lbl">Drawn faces and abstract avatars</span>
<ul class="av-row">
  <li><span class="av lg" role="img" aria-label="Maya Chen"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#c7d2fe"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#4f46e5"/><circle cx="32" cy="34" r="14" fill="#f6c9a4"/><path d="M17 33c0-11 6-18 15-18s15 7 15 18c-3-5-8-8-15-8s-12 3-15 8z" fill="#1e1b4b"/><circle cx="26.5" cy="36" r="1.8" fill="#1e1b4b"/><circle cx="37.5" cy="36" r="1.8" fill="#1e1b4b"/><path d="M28 41.5c2.4 2.2 5.6 2.2 8 0" fill="none" stroke="#1e1b4b" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg" role="img" aria-label="Kofi Mensah"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fde68a"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#0f766e"/><circle cx="32" cy="34" r="14" fill="#8d5a3b"/><path d="M18.5 31c1-8 6.5-12 13.5-12s12.5 4 13.5 12c-4-3-8.5-4-13.5-4s-9.5 1-13.5 4z" fill="#1c1917"/><circle cx="26.5" cy="35.5" r="1.8" fill="#1c1917"/><circle cx="37.5" cy="35.5" r="1.8" fill="#1c1917"/><path d="M27 41c2.8 2.6 7.2 2.6 10 0" fill="none" stroke="#1c1917" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg" role="img" aria-label="Sofia Lindqvist"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#bbf7d0"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#c2410c"/><path d="M16 44V32c0-10 7-17 16-17s16 7 16 17v12z" fill="#ca8a04"/><circle cx="32" cy="34" r="13" fill="#f9d7b8"/><path d="M19 31c2-7 7-10 13-10s11 3 13 10c-5-2-9-6-13-6s-8 4-13 6z" fill="#ca8a04"/><circle cx="26.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><circle cx="37.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><path d="M30.1 36h3.8" stroke="#14532d" stroke-width="1.5"/><circle cx="26.5" cy="36" r="1.2" fill="#14532d"/><circle cx="37.5" cy="36" r="1.2" fill="#14532d"/><path d="M28.5 42c2 1.6 5 1.6 7 0" fill="none" stroke="#14532d" stroke-width="1.6" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg" role="img" aria-label="Rafael Ortiz"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fbcfe8"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#334155"/><circle cx="32" cy="34" r="14" fill="#d6a06e"/><g fill="#3f2a1d"><circle cx="20" cy="27" r="5"/><circle cx="26" cy="21" r="5.5"/><circle cx="33" cy="19" r="5.5"/><circle cx="40" cy="21.5" r="5.5"/><circle cx="45" cy="27.5" r="4.5"/></g><path d="M24 44.5c2-1.5 5-2 8-2s6 .5 8 2c-1 3.5-4 5.5-8 5.5s-7-2-8-5.5z" fill="#3f2a1d"/><circle cx="26.5" cy="35" r="1.8" fill="#3f2a1d"/><circle cx="37.5" cy="35" r="1.8" fill="#3f2a1d"/></svg></span></li>
  <li><span class="av lg mesh" role="img" aria-label="Avery Quinn"></span></li>
  <li><span class="av lg dune" role="img" aria-label="Noor Haddad"></span></li>
  <li><span class="av lg sq tile" role="img" aria-label="Design team"></span></li>
  <li><span class="av lg orbit" role="img" aria-label="Ops rota"></span></li>
</ul></div>

<div><span class="lbl">Icon fallbacks</span>
<ul class="av-row">
  <li><span class="av lg icon" role="img" aria-label="Guest user"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5"/></svg></span><span class="cap" aria-hidden="true">Guest</span></li>
  <li><span class="av lg icon" role="img" aria-label="Support team"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="9" cy="9" r="3.2"/><path d="M3 19.5c.9-3 3.2-4.6 6-4.6s5.1 1.6 6 4.6"/><circle cx="16.5" cy="8" r="2.6"/><path d="M16 13.2c2.6 0 4.4 1.4 5.1 4"/></svg></span><span class="cap" aria-hidden="true">Team</span></li>
  <li><span class="av lg icon bot" role="img" aria-label="Assistant bot"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="8" width="14" height="11" rx="3"/><path d="M12 4.5V8M9.5 13h.01M14.5 13h.01M10 16.2h4"/><circle cx="12" cy="4" r="1"/></svg></span><span class="cap" aria-hidden="true">Bot</span></li>
  <li><span class="av lg icon gone" role="img" aria-label="Deleted account"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5M4 4l16 16"/></svg></span><span class="cap" aria-hidden="true">Deleted</span></li>
</ul></div>

<div><span class="lbl">Status dots · the status is in the name and the dot's shape</span>
<ul class="av-row">
  <li><span class="av sm" role="img" aria-label="Lena Vogt, online">LV<span class="st on"></span></span></li>
  <li><span class="av teal" role="img" aria-label="Omar Aziz, away">OA<span class="st away"></span></span></li>
  <li><span class="av lg rose" role="img" aria-label="June Park, do not disturb">JP<span class="st busy"></span></span></li>
  <li><span class="av xl slate" role="img" aria-label="Tomás Ruiz, offline">TR<span class="st off"></span></span></li>
</ul>
<ul class="who-list">
  <li class="who"><span class="av" aria-hidden="true">LV<span class="st on"></span></span><div><b>Lena Vogt</b><small>Online</small></div></li>
  <li class="who"><span class="av teal" aria-hidden="true">OA<span class="st away"></span></span><div><b>Omar Aziz</b><small>Away · back at 14:00</small></div></li>
  <li class="who"><span class="av rose" aria-hidden="true">JP<span class="st busy"></span></span><div><b>June Park</b><small>Do not disturb</small></div></li>
  <li class="who"><span class="av slate" aria-hidden="true">TR<span class="st off"></span></span><div><b>Tomás Ruiz</b><small>Offline · seen 2 h ago</small></div></li>
</ul></div>
CSS
/* Avatars without photos: initials on a gradient, drawn SVG faces, abstract gradients and icon fallbacks.
   Each avatar is role="img" with the person's name; a status dot adds the status to that name and changes shape, not only colour. */
.av-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:0;padding:0;list-style:none}
.av{--av:40px;--a:#4f46e5;--b:#9333ea;position:relative;display:inline-grid;place-items:center;flex:none;width:var(--av);height:var(--av);
  border-radius:50%;background:linear-gradient(135deg,var(--a),var(--b));color:#fff;font-size:calc(var(--av) * .36);font-weight:700;
  letter-spacing:.02em;line-height:1;user-select:none}
.av.xs{--av:24px;font-size:.6rem}.av.sm{--av:32px}.av.lg{--av:56px}.av.xl{--av:72px}
.av.sq{border-radius:28%}
.av.teal{--a:#0f766e;--b:#0369a1}.av.rose{--a:#c2410c;--b:#be185d}.av.slate{--a:#334155;--b:#475569}.av.green{--a:#047857;--b:#0e7490}
.av svg{width:100%;height:100%;border-radius:inherit}
/* abstract avatars */
.av.mesh{background:radial-gradient(circle at 28% 30%,#fde68a 0 18%,transparent 46%),radial-gradient(circle at 75% 72%,#f472b6 0 14%,transparent 52%),#7c3aed}
.av.dune{background:radial-gradient(circle at 68% 32%,#fef3c7 0 12%,transparent 13%),radial-gradient(120% 70% at 75% 112%,#c2410c 0 50%,transparent 51%),radial-gradient(100% 62% at 12% 104%,#fb923c 0 50%,transparent 51%),linear-gradient(#0284c7,#bae6fd)}
.av.tile{background:conic-gradient(from 45deg,#0ea5e9 0 25%,#1e3a8a 0 50%,#0ea5e9 0 75%,#1e3a8a 0) 50%/50% 50%}
.av.orbit{background:radial-gradient(circle at 50% 50%,#fef08a 0 16%,transparent 17%),repeating-radial-gradient(circle at 50% 50%,#14532d 0 6px,#22c55e 6px 12px)}
/* icon fallbacks */
.av.icon{--a:#e2e8f0;--b:#cbd5e1;color:#334155}
.av.icon svg{width:56%;height:56%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;border-radius:0}
.av.icon.bot{--a:#e0e7ff;--b:#c7d2fe;color:#3730a3}
.av.icon.gone{background:#fff;border:1.5px dashed #64748b;color:#526072}
/* status dot: shape changes with the status, and the status is part of the avatar's name */
.st{position:absolute;right:0;bottom:0;width:30%;height:30%;min-width:10px;min-height:10px;border-radius:50%;box-shadow:0 0 0 2.5px #f8fafc}
.st.on{background:#16a34a}
.st.away{background:radial-gradient(circle at 32% 32%,#f8fafc 0 34%,transparent 36%),#d97706}
.st.busy{background:#dc2626}
.st.busy::after{content:"";position:absolute;left:24%;right:24%;top:50%;height:2px;margin-top:-1px;border-radius:2px;background:#fff}
.st.off{background:#f8fafc;box-shadow:inset 0 0 0 2.5px #64748b,0 0 0 2.5px #f8fafc}
.who{display:flex;align-items:center;gap:12px}
.who b{display:block;font-size:.92rem;color:#0f172a}
.who small{display:block;margin-top:2px;font-size:.8rem;color:#526072}
.who-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px 20px;margin:22px 0 0;padding:0;list-style:none}
.cap{display:block;margin-top:8px;font-size:.75rem;color:#526072;text-align:center}

Bootstrap 5 code

Requires: Bootstrap 5.3.8 CSS

HTML
<div><span class="lbl">Initials · five sizes, circle and rounded square</span>
<ul class="list-unstyled d-flex flex-wrap align-items-center av-row m-0">
  <li><span class="av xs d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Lena Vogt">LV</span></li>
  <li><span class="av sm teal d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Omar Aziz">OA</span></li>
  <li><span class="av rose d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="June Park">JP</span></li>
  <li><span class="av lg slate d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Tomás Ruiz">TR</span></li>
  <li><span class="av xl green d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Ines Duarte">ID</span></li>
  <li><span class="av xs sq rose d-inline-grid flex-shrink-0 position-relative text-white fw-bold" role="img" aria-label="Kai Moreno">KM</span></li>
  <li><span class="av sm sq d-inline-grid flex-shrink-0 position-relative text-white fw-bold" role="img" aria-label="Priya Nair">PN</span></li>
  <li><span class="av sq green d-inline-grid flex-shrink-0 position-relative text-white fw-bold" role="img" aria-label="Femi Adeyemi">FA</span></li>
  <li><span class="av lg sq teal d-inline-grid flex-shrink-0 position-relative text-white fw-bold" role="img" aria-label="Hana Sato">HS</span></li>
  <li><span class="av xl sq slate d-inline-grid flex-shrink-0 position-relative text-white fw-bold" role="img" aria-label="Elliot Brandt">EB</span></li>
</ul></div>

<div><span class="lbl">Drawn faces and abstract avatars</span>
<ul class="list-unstyled d-flex flex-wrap align-items-center av-row m-0">
  <li><span class="av lg d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Maya Chen"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#c7d2fe"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#4f46e5"/><circle cx="32" cy="34" r="14" fill="#f6c9a4"/><path d="M17 33c0-11 6-18 15-18s15 7 15 18c-3-5-8-8-15-8s-12 3-15 8z" fill="#1e1b4b"/><circle cx="26.5" cy="36" r="1.8" fill="#1e1b4b"/><circle cx="37.5" cy="36" r="1.8" fill="#1e1b4b"/><path d="M28 41.5c2.4 2.2 5.6 2.2 8 0" fill="none" stroke="#1e1b4b" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Kofi Mensah"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fde68a"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#0f766e"/><circle cx="32" cy="34" r="14" fill="#8d5a3b"/><path d="M18.5 31c1-8 6.5-12 13.5-12s12.5 4 13.5 12c-4-3-8.5-4-13.5-4s-9.5 1-13.5 4z" fill="#1c1917"/><circle cx="26.5" cy="35.5" r="1.8" fill="#1c1917"/><circle cx="37.5" cy="35.5" r="1.8" fill="#1c1917"/><path d="M27 41c2.8 2.6 7.2 2.6 10 0" fill="none" stroke="#1c1917" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Sofia Lindqvist"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#bbf7d0"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#c2410c"/><path d="M16 44V32c0-10 7-17 16-17s16 7 16 17v12z" fill="#ca8a04"/><circle cx="32" cy="34" r="13" fill="#f9d7b8"/><path d="M19 31c2-7 7-10 13-10s11 3 13 10c-5-2-9-6-13-6s-8 4-13 6z" fill="#ca8a04"/><circle cx="26.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><circle cx="37.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><path d="M30.1 36h3.8" stroke="#14532d" stroke-width="1.5"/><circle cx="26.5" cy="36" r="1.2" fill="#14532d"/><circle cx="37.5" cy="36" r="1.2" fill="#14532d"/><path d="M28.5 42c2 1.6 5 1.6 7 0" fill="none" stroke="#14532d" stroke-width="1.6" stroke-linecap="round"/></svg></span></li>
  <li><span class="av lg d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Rafael Ortiz"><svg viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fbcfe8"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#334155"/><circle cx="32" cy="34" r="14" fill="#d6a06e"/><g fill="#3f2a1d"><circle cx="20" cy="27" r="5"/><circle cx="26" cy="21" r="5.5"/><circle cx="33" cy="19" r="5.5"/><circle cx="40" cy="21.5" r="5.5"/><circle cx="45" cy="27.5" r="4.5"/></g><path d="M24 44.5c2-1.5 5-2 8-2s6 .5 8 2c-1 3.5-4 5.5-8 5.5s-7-2-8-5.5z" fill="#3f2a1d"/><circle cx="26.5" cy="35" r="1.8" fill="#3f2a1d"/><circle cx="37.5" cy="35" r="1.8" fill="#3f2a1d"/></svg></span></li>
  <li><span class="av lg mesh d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Avery Quinn"></span></li>
  <li><span class="av lg dune d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Noor Haddad"></span></li>
  <li><span class="av lg sq tile d-inline-grid flex-shrink-0" role="img" aria-label="Design team"></span></li>
  <li><span class="av lg orbit d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Ops rota"></span></li>
</ul></div>

<div><span class="lbl">Icon fallbacks</span>
<ul class="list-unstyled d-flex flex-wrap align-items-center av-row m-0">
  <li class="text-center"><span class="av lg icon d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Guest user"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5"/></svg></span><span class="cap d-block" aria-hidden="true">Guest</span></li>
  <li class="text-center"><span class="av lg icon d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Support team"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="9" cy="9" r="3.2"/><path d="M3 19.5c.9-3 3.2-4.6 6-4.6s5.1 1.6 6 4.6"/><circle cx="16.5" cy="8" r="2.6"/><path d="M16 13.2c2.6 0 4.4 1.4 5.1 4"/></svg></span><span class="cap d-block" aria-hidden="true">Team</span></li>
  <li class="text-center"><span class="av lg icon bot d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Assistant bot"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="8" width="14" height="11" rx="3"/><path d="M12 4.5V8M9.5 13h.01M14.5 13h.01M10 16.2h4"/><circle cx="12" cy="4" r="1"/></svg></span><span class="cap d-block" aria-hidden="true">Bot</span></li>
  <li class="text-center"><span class="av lg icon gone d-inline-grid flex-shrink-0 rounded-circle" role="img" aria-label="Deleted account"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5M4 4l16 16"/></svg></span><span class="cap d-block" aria-hidden="true">Deleted</span></li>
</ul></div>

<div><span class="lbl">Status dots · the status is in the name and the dot's shape</span>
<ul class="list-unstyled d-flex flex-wrap align-items-center av-row m-0">
  <li><span class="av sm d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Lena Vogt, online">LV<span class="st on position-absolute bottom-0 end-0 rounded-circle"></span></span></li>
  <li><span class="av teal d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Omar Aziz, away">OA<span class="st away position-absolute bottom-0 end-0 rounded-circle"></span></span></li>
  <li><span class="av lg rose d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="June Park, do not disturb">JP<span class="st busy position-absolute bottom-0 end-0 rounded-circle"></span></span></li>
  <li><span class="av xl slate d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" role="img" aria-label="Tomás Ruiz, offline">TR<span class="st off position-absolute bottom-0 end-0 rounded-circle"></span></span></li>
</ul>
<ul class="list-unstyled who-list">
  <li class="who d-flex align-items-center"><span class="av d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" aria-hidden="true">LV<span class="st on position-absolute bottom-0 end-0 rounded-circle"></span></span><div><b class="d-block">Lena Vogt</b><small class="d-block">Online</small></div></li>
  <li class="who d-flex align-items-center"><span class="av teal d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" aria-hidden="true">OA<span class="st away position-absolute bottom-0 end-0 rounded-circle"></span></span><div><b class="d-block">Omar Aziz</b><small class="d-block">Away · back at 14:00</small></div></li>
  <li class="who d-flex align-items-center"><span class="av rose d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" aria-hidden="true">JP<span class="st busy position-absolute bottom-0 end-0 rounded-circle"></span></span><div><b class="d-block">June Park</b><small class="d-block">Do not disturb</small></div></li>
  <li class="who d-flex align-items-center"><span class="av slate d-inline-grid flex-shrink-0 position-relative rounded-circle text-white fw-bold" aria-hidden="true">TR<span class="st off position-absolute bottom-0 end-0 rounded-circle"></span></span><div><b class="d-block">Tomás Ruiz</b><small class="d-block">Offline · seen 2 h ago</small></div></li>
</ul></div>
CSS
/* Avatars on Bootstrap utilities (.d-inline-grid, .rounded-circle, .position-relative, .position-absolute, .bottom-0, .end-0)
   plus a few size and colour classes. Each avatar is role="img" with the person's name; the status is part of that name. */
.av-row{gap:14px}
.av{--av:40px;--a:#4f46e5;--b:#9333ea;place-items:center;width:var(--av);height:var(--av);background:linear-gradient(135deg,var(--a),var(--b));
  font-size:calc(var(--av) * .36);letter-spacing:.02em;line-height:1;user-select:none}
.av.xs{--av:24px;font-size:.6rem}.av.sm{--av:32px}.av.lg{--av:56px}.av.xl{--av:72px}
.av.sq{border-radius:28%}
.av.teal{--a:#0f766e;--b:#0369a1}.av.rose{--a:#c2410c;--b:#be185d}.av.slate{--a:#334155;--b:#475569}.av.green{--a:#047857;--b:#0e7490}
.av svg{width:100%;height:100%;border-radius:inherit}
.av.mesh{background:radial-gradient(circle at 28% 30%,#fde68a 0 18%,transparent 46%),radial-gradient(circle at 75% 72%,#f472b6 0 14%,transparent 52%),#7c3aed}
.av.dune{background:radial-gradient(circle at 68% 32%,#fef3c7 0 12%,transparent 13%),radial-gradient(120% 70% at 75% 112%,#c2410c 0 50%,transparent 51%),radial-gradient(100% 62% at 12% 104%,#fb923c 0 50%,transparent 51%),linear-gradient(#0284c7,#bae6fd)}
.av.tile{background:conic-gradient(from 45deg,#0ea5e9 0 25%,#1e3a8a 0 50%,#0ea5e9 0 75%,#1e3a8a 0) 50%/50% 50%}
.av.orbit{background:radial-gradient(circle at 50% 50%,#fef08a 0 16%,transparent 17%),repeating-radial-gradient(circle at 50% 50%,#14532d 0 6px,#22c55e 6px 12px)}
.av.icon{--a:#e2e8f0;--b:#cbd5e1;color:#334155!important}
.av.icon svg{width:56%;height:56%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;border-radius:0}
.av.icon.bot{--a:#e0e7ff;--b:#c7d2fe;color:#3730a3!important}
.av.icon.gone{background:#fff;border:1.5px dashed #64748b;color:#526072!important}
.st{width:30%;height:30%;min-width:10px;min-height:10px;box-shadow:0 0 0 2.5px #f8fafc}
.st.on{background:#16a34a}
.st.away{background:radial-gradient(circle at 32% 32%,#f8fafc 0 34%,transparent 36%),#d97706}
.st.busy{background:#dc2626}
.st.busy::after{content:"";position:absolute;left:24%;right:24%;top:50%;height:2px;margin-top:-1px;border-radius:2px;background:#fff}
.st.off{background:#f8fafc;box-shadow:inset 0 0 0 2.5px #64748b,0 0 0 2.5px #f8fafc}
.who-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px 20px;margin:22px 0 0}
.who{gap:12px}
.who b{font-size:.92rem;color:#0f172a}
.who small{margin-top:2px;font-size:.8rem;color:#526072}
.cap{margin-top:8px;font-size:.75rem;color:#526072}

Tailwind 4 code

Requires: Tailwind CSS 4

HTML
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#526072] uppercase">Initials · five sizes, circle and rounded square</span>
<ul class="flex flex-wrap items-center gap-3.5">
  <li><span class="relative inline-grid flex-none place-items-center size-6 text-[.6rem] rounded-full bg-linear-135 from-[#4f46e5] to-[#9333ea] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Lena Vogt">LV</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-8 text-[11.5px] rounded-full bg-linear-135 from-[#0f766e] to-[#0369a1] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Omar Aziz">OA</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#c2410c] to-[#be185d] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="June Park">JP</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-14 text-[20.2px] rounded-full bg-linear-135 from-[#334155] to-[#475569] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Tomás Ruiz">TR</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-[72px] text-[25.9px] rounded-full bg-linear-135 from-[#047857] to-[#0e7490] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Ines Duarte">ID</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-6 text-[.6rem] rounded-[28%] bg-linear-135 from-[#c2410c] to-[#be185d] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Kai Moreno">KM</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-8 text-[11.5px] rounded-[28%] bg-linear-135 from-[#4f46e5] to-[#9333ea] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Priya Nair">PN</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-[28%] bg-linear-135 from-[#047857] to-[#0e7490] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Femi Adeyemi">FA</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-14 text-[20.2px] rounded-[28%] bg-linear-135 from-[#0f766e] to-[#0369a1] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Hana Sato">HS</span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-[72px] text-[25.9px] rounded-[28%] bg-linear-135 from-[#334155] to-[#475569] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Elliot Brandt">EB</span></li>
</ul></div>

<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#526072] uppercase">Drawn faces and abstract avatars</span>
<ul class="flex flex-wrap items-center gap-3.5">
  <li><span class="inline-grid size-14 flex-none overflow-hidden rounded-full" role="img" aria-label="Maya Chen"><svg class="size-full" viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#c7d2fe"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#4f46e5"/><circle cx="32" cy="34" r="14" fill="#f6c9a4"/><path d="M17 33c0-11 6-18 15-18s15 7 15 18c-3-5-8-8-15-8s-12 3-15 8z" fill="#1e1b4b"/><circle cx="26.5" cy="36" r="1.8" fill="#1e1b4b"/><circle cx="37.5" cy="36" r="1.8" fill="#1e1b4b"/><path d="M28 41.5c2.4 2.2 5.6 2.2 8 0" fill="none" stroke="#1e1b4b" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="inline-grid size-14 flex-none overflow-hidden rounded-full" role="img" aria-label="Kofi Mensah"><svg class="size-full" viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fde68a"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#0f766e"/><circle cx="32" cy="34" r="14" fill="#8d5a3b"/><path d="M18.5 31c1-8 6.5-12 13.5-12s12.5 4 13.5 12c-4-3-8.5-4-13.5-4s-9.5 1-13.5 4z" fill="#1c1917"/><circle cx="26.5" cy="35.5" r="1.8" fill="#1c1917"/><circle cx="37.5" cy="35.5" r="1.8" fill="#1c1917"/><path d="M27 41c2.8 2.6 7.2 2.6 10 0" fill="none" stroke="#1c1917" stroke-width="1.8" stroke-linecap="round"/></svg></span></li>
  <li><span class="inline-grid size-14 flex-none overflow-hidden rounded-full" role="img" aria-label="Sofia Lindqvist"><svg class="size-full" viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#bbf7d0"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#c2410c"/><path d="M16 44V32c0-10 7-17 16-17s16 7 16 17v12z" fill="#ca8a04"/><circle cx="32" cy="34" r="13" fill="#f9d7b8"/><path d="M19 31c2-7 7-10 13-10s11 3 13 10c-5-2-9-6-13-6s-8 4-13 6z" fill="#ca8a04"/><circle cx="26.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><circle cx="37.5" cy="36" r="3.6" fill="none" stroke="#14532d" stroke-width="1.5"/><path d="M30.1 36h3.8" stroke="#14532d" stroke-width="1.5"/><circle cx="26.5" cy="36" r="1.2" fill="#14532d"/><circle cx="37.5" cy="36" r="1.2" fill="#14532d"/><path d="M28.5 42c2 1.6 5 1.6 7 0" fill="none" stroke="#14532d" stroke-width="1.6" stroke-linecap="round"/></svg></span></li>
  <li><span class="inline-grid size-14 flex-none overflow-hidden rounded-full" role="img" aria-label="Rafael Ortiz"><svg class="size-full" viewBox="0 0 64 64" aria-hidden="true"><rect width="64" height="64" fill="#fbcfe8"/><path d="M10 64c2-11 11-16 22-16s20 5 22 16z" fill="#334155"/><circle cx="32" cy="34" r="14" fill="#d6a06e"/><g fill="#3f2a1d"><circle cx="20" cy="27" r="5"/><circle cx="26" cy="21" r="5.5"/><circle cx="33" cy="19" r="5.5"/><circle cx="40" cy="21.5" r="5.5"/><circle cx="45" cy="27.5" r="4.5"/></g><path d="M24 44.5c2-1.5 5-2 8-2s6 .5 8 2c-1 3.5-4 5.5-8 5.5s-7-2-8-5.5z" fill="#3f2a1d"/><circle cx="26.5" cy="35" r="1.8" fill="#3f2a1d"/><circle cx="37.5" cy="35" r="1.8" fill="#3f2a1d"/></svg></span></li>
  <li><span class="inline-grid size-14 flex-none rounded-full [background:radial-gradient(circle_at_28%_30%,#fde68a_0_18%,transparent_46%),radial-gradient(circle_at_75%_72%,#f472b6_0_14%,transparent_52%),#7c3aed]" role="img" aria-label="Avery Quinn"></span></li>
  <li><span class="inline-grid size-14 flex-none rounded-full [background:radial-gradient(circle_at_68%_32%,#fef3c7_0_12%,transparent_13%),radial-gradient(120%_70%_at_75%_112%,#c2410c_0_50%,transparent_51%),radial-gradient(100%_62%_at_12%_104%,#fb923c_0_50%,transparent_51%),linear-gradient(#0284c7,#bae6fd)]" role="img" aria-label="Noor Haddad"></span></li>
  <li><span class="inline-grid size-14 flex-none rounded-[28%] [background:conic-gradient(from_45deg,#0ea5e9_0_25%,#1e3a8a_0_50%,#0ea5e9_0_75%,#1e3a8a_0)_50%/50%_50%]" role="img" aria-label="Design team"></span></li>
  <li><span class="inline-grid size-14 flex-none rounded-full [background:radial-gradient(circle_at_50%_50%,#fef08a_0_16%,transparent_17%),repeating-radial-gradient(circle_at_50%_50%,#14532d_0_6px,#22c55e_6px_12px)]" role="img" aria-label="Ops rota"></span></li>
</ul></div>

<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#526072] uppercase">Icon fallbacks</span>
<ul class="flex flex-wrap items-center gap-3.5">
  <li><span class="inline-grid size-14 flex-none place-items-center rounded-full bg-linear-135 from-[#e2e8f0] to-[#cbd5e1] text-[#334155]" role="img" aria-label="Guest user"><svg class="size-[56%]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5"/></svg></span><span class="mt-2 block text-center text-[.75rem] text-[#526072]" aria-hidden="true">Guest</span></li>
  <li><span class="inline-grid size-14 flex-none place-items-center rounded-full bg-linear-135 from-[#e2e8f0] to-[#cbd5e1] text-[#334155]" role="img" aria-label="Support team"><svg class="size-[56%]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="9" r="3.2"/><path d="M3 19.5c.9-3 3.2-4.6 6-4.6s5.1 1.6 6 4.6"/><circle cx="16.5" cy="8" r="2.6"/><path d="M16 13.2c2.6 0 4.4 1.4 5.1 4"/></svg></span><span class="mt-2 block text-center text-[.75rem] text-[#526072]" aria-hidden="true">Team</span></li>
  <li><span class="inline-grid size-14 flex-none place-items-center rounded-full bg-linear-135 from-[#e0e7ff] to-[#c7d2fe] text-[#3730a3]" role="img" aria-label="Assistant bot"><svg class="size-[56%]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="5" y="8" width="14" height="11" rx="3"/><path d="M12 4.5V8M9.5 13h.01M14.5 13h.01M10 16.2h4"/><circle cx="12" cy="4" r="1"/></svg></span><span class="mt-2 block text-center text-[.75rem] text-[#526072]" aria-hidden="true">Bot</span></li>
  <li><span class="inline-grid size-14 flex-none place-items-center rounded-full border-[1.5px] border-dashed border-[#64748b] bg-white text-[#526072]" role="img" aria-label="Deleted account"><svg class="size-[56%]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20c1.2-3.6 4-5.5 7.5-5.5s6.3 1.9 7.5 5.5M4 4l16 16"/></svg></span><span class="mt-2 block text-center text-[.75rem] text-[#526072]" aria-hidden="true">Deleted</span></li>
</ul></div>

<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#526072] uppercase">Status dots · the status is in the name and the dot's shape</span>
<ul class="flex flex-wrap items-center gap-3.5">
  <li><span class="relative inline-grid flex-none place-items-center size-8 text-[11.5px] rounded-full bg-linear-135 from-[#4f46e5] to-[#9333ea] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Lena Vogt, online">LV<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#16a34a] shadow-[0_0_0_2.5px_#f8fafc]"></span></span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#0f766e] to-[#0369a1] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Omar Aziz, away">OA<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full [background:radial-gradient(circle_at_32%_32%,#f8fafc_0_34%,transparent_36%),#d97706] shadow-[0_0_0_2.5px_#f8fafc]"></span></span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-14 text-[20.2px] rounded-full bg-linear-135 from-[#c2410c] to-[#be185d] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="June Park, do not disturb">JP<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#dc2626] shadow-[0_0_0_2.5px_#f8fafc] after:absolute after:inset-x-[24%] after:top-1/2 after:-mt-px after:h-0.5 after:rounded-sm after:bg-white"></span></span></li>
  <li><span class="relative inline-grid flex-none place-items-center size-[72px] text-[25.9px] rounded-full bg-linear-135 from-[#334155] to-[#475569] leading-none font-bold tracking-[.02em] text-white select-none" role="img" aria-label="Tomás Ruiz, offline">TR<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#f8fafc] shadow-[inset_0_0_0_2.5px_#64748b,0_0_0_2.5px_#f8fafc]"></span></span></li>
</ul>
<ul class="mt-[22px] grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-x-5 gap-y-4">
  <li class="flex items-center gap-3"><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#4f46e5] to-[#9333ea] leading-none font-bold tracking-[.02em] text-white select-none" aria-hidden="true">LV<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#16a34a] shadow-[0_0_0_2.5px_#f8fafc]"></span></span><div><b class="block text-[.92rem] text-[#0f172a]">Lena Vogt</b><small class="mt-0.5 block text-[.8rem] text-[#526072]">Online</small></div></li>
  <li class="flex items-center gap-3"><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#0f766e] to-[#0369a1] leading-none font-bold tracking-[.02em] text-white select-none" aria-hidden="true">OA<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full [background:radial-gradient(circle_at_32%_32%,#f8fafc_0_34%,transparent_36%),#d97706] shadow-[0_0_0_2.5px_#f8fafc]"></span></span><div><b class="block text-[.92rem] text-[#0f172a]">Omar Aziz</b><small class="mt-0.5 block text-[.8rem] text-[#526072]">Away · back at 14:00</small></div></li>
  <li class="flex items-center gap-3"><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#c2410c] to-[#be185d] leading-none font-bold tracking-[.02em] text-white select-none" aria-hidden="true">JP<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#dc2626] shadow-[0_0_0_2.5px_#f8fafc] after:absolute after:inset-x-[24%] after:top-1/2 after:-mt-px after:h-0.5 after:rounded-sm after:bg-white"></span></span><div><b class="block text-[.92rem] text-[#0f172a]">June Park</b><small class="mt-0.5 block text-[.8rem] text-[#526072]">Do not disturb</small></div></li>
  <li class="flex items-center gap-3"><span class="relative inline-grid flex-none place-items-center size-10 text-[14.4px] rounded-full bg-linear-135 from-[#334155] to-[#475569] leading-none font-bold tracking-[.02em] text-white select-none" aria-hidden="true">TR<span class="absolute right-0 bottom-0 size-[30%] min-h-2.5 min-w-2.5 rounded-full bg-[#f8fafc] shadow-[inset_0_0_0_2.5px_#64748b,0_0_0_2.5px_#f8fafc]"></span></span><div><b class="block text-[.92rem] text-[#0f172a]">Tomás Ruiz</b><small class="mt-0.5 block text-[.8rem] text-[#526072]">Offline · seen 2 h ago</small></div></li>
</ul></div>

About this set

Avatars that need no photos. Initials avatars come in five sizes from 24 to 72 pixels, as circles and as rounded squares, on gradient fills dark enough for white letters. Four illustrated faces are drawn as small inline SVGs, next to four abstract avatars made only from CSS gradients: a soft mesh, a desert dune, a tiled diamond pattern and concentric rings. Icon fallbacks cover a guest user, a team, an assistant bot and a deleted account drawn with a dashed outline. The last row adds presence: online, away, do not disturb and offline dots that scale with the avatar, and a list where each person’s status is written next to their name. Use initials as the default when no picture is uploaded, the drawn faces or abstract avatars for sample data and onboarding, and the icon fallbacks for accounts that are not people. Each status dot has its own shape, a filled dot, a crescent, a bar or a hollow ring, and the status is part of the avatar’s accessible name.

What’s included

  • Five sizes in circle and rounded square shapes
  • Four hand-drawn SVG faces and four CSS gradient avatars
  • Guest, team, bot and deleted account fallbacks
  • Status dots that change shape as well as colour
  • Each avatar is named with role="img" and aria-label

Accessibility

Every standalone avatar is role="img" with the person's name, and avatars with a status include it in the name, for example June Park, do not disturb. In the presence list the name and status are visible text, so the avatar is hidden from screen readers. Status dots differ by shape, not only colour, and there are no interactive elements or animations in this set.

Customise it

Size comes from --av on .av and the gradient from --a and --b; add a modifier class like .teal to set both. Bootstrap uses the same classes with .rounded-circle and positioning utilities; in Tailwind change the size-, from- and to- utilities.