Avatar Group
Stacked avatar components showing multiple users with overflow indicator.
Default
Overlapping avatars with an overflow counter.
html
+3
<div class="vt-flex vt--space-x-3">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=3" alt="User 3">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=4" alt="User 4">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+3</span>
</div>
</div>
Sizes
Avatar groups in small, default, and large sizes.
html
Small
+2
Default
+2
Large
+2
<div class="vt-flex vt-items-center vt-gap-4">
<span class="vt-text-xs vt-text-foreground-muted vt-w-10">Small</span>
<div class="vt-flex vt--space-x-2">
<div class="vt-avatar vt-avatar-sm vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<div class="vt-avatar vt-avatar-sm vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<div class="vt-avatar vt-avatar-sm vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=3" alt="User 3">
</div>
<div class="vt-avatar vt-avatar-sm vt-ring-2 vt-ring-surface-page">
<span class="vt-font-medium vt-text-foreground-muted">+2</span>
</div>
</div>
</div>
<div class="vt-flex vt-items-center vt-gap-4">
<span class="vt-text-xs vt-text-foreground-muted vt-w-10">Default</span>
<div class="vt-flex vt--space-x-3">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=3" alt="User 3">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+2</span>
</div>
</div>
</div>
<div class="vt-flex vt-items-center vt-gap-4">
<span class="vt-text-xs vt-text-foreground-muted vt-w-10">Large</span>
<div class="vt-flex vt--space-x-4">
<div class="vt-avatar vt-w-12 vt-h-12 vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<div class="vt-avatar vt-w-12 vt-h-12 vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<div class="vt-avatar vt-w-12 vt-h-12 vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=3" alt="User 3">
</div>
<div class="vt-avatar vt-w-12 vt-h-12 vt-ring-2 vt-ring-surface-page">
<span class="vt-text-sm vt-font-medium vt-text-foreground-muted">+2</span>
</div>
</div>
</div>
With Initials
Avatar group mixing images and initial-based avatars with distinct colors.
html
AJ
SC
ML
+4
<div class="vt-flex vt--space-x-3">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<div class="vt-avatar vt-avatar-md vt-bg-info-fill vt-ring-2 vt-ring-surface-page">
<span class="vt-text-sm vt-font-medium vt-text-generic-white">AJ</span>
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<div class="vt-avatar vt-avatar-md vt-bg-info-fill vt-ring-2 vt-ring-surface-page">
<span class="vt-text-sm vt-font-medium vt-text-generic-white">SC</span>
</div>
<div class="vt-avatar vt-avatar-md vt-bg-info-fill vt-ring-2 vt-ring-surface-page">
<span class="vt-text-sm vt-font-medium vt-text-generic-white">ML</span>
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+4</span>
</div>
</div>
With Status
Avatars with online and offline status indicators.
html
+3
<div class="vt-flex vt-gap-4">
<!-- Online -->
<div class="vt-relative vt-inline-flex">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=1" alt="User 1">
</div>
<span class="vt-absolute vt-bottom-0 vt-right-0 vt-w-3 vt-h-3 vt-rounded-full vt-bg-info-fill vt-ring-2 vt-ring-surface-page"></span>
</div>
<!-- Online -->
<div class="vt-relative vt-inline-flex">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=2" alt="User 2">
</div>
<span class="vt-absolute vt-bottom-0 vt-right-0 vt-w-3 vt-h-3 vt-rounded-full vt-bg-info-fill vt-ring-2 vt-ring-surface-page"></span>
</div>
<!-- Offline -->
<div class="vt-relative vt-inline-flex">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=3" alt="User 3">
</div>
<span class="vt-absolute vt-bottom-0 vt-right-0 vt-w-3 vt-h-3 vt-rounded-full vt-bg-foreground-muted vt-ring-2 vt-ring-surface-page"></span>
</div>
<!-- Online -->
<div class="vt-relative vt-inline-flex">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=4" alt="User 4">
</div>
<span class="vt-absolute vt-bottom-0 vt-right-0 vt-w-3 vt-h-3 vt-rounded-full vt-bg-info-fill vt-ring-2 vt-ring-surface-page"></span>
</div>
<!-- Offline -->
<div class="vt-relative vt-inline-flex">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=5" alt="User 5">
</div>
<span class="vt-absolute vt-bottom-0 vt-right-0 vt-w-3 vt-h-3 vt-rounded-full vt-bg-foreground-muted vt-ring-2 vt-ring-surface-page"></span>
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+3</span>
</div>
</div>
With Tooltip Labels
Hover over each avatar to see the user name.
html
Alice Johnson
Bob Smith
Carol Davis
David Lee
+5
5 more users
<div class="vt-flex vt--space-x-3">
<!-- Avatar 1 -->
<div class="vt-tooltip-wrap vt-group/avatar vt-z-0 vt-hover:z-10">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page vt-transition-transform vt-group-hover/avatar:scale-110">
<img src="https://i.pravatar.cc/80?img=1" alt="Alice Johnson">
</div>
<div class="vt-tooltip">
Alice Johnson
<div class="vt-absolute vt-top-full vt-left-1/2 vt--translate-x-1/2 vt-border-[3px] vt-border-transparent vt-border-t-brand-fill"></div>
</div>
</div>
<!-- Avatar 2 -->
<div class="vt-tooltip-wrap vt-group/avatar vt-z-0 vt-hover:z-10">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page vt-transition-transform vt-group-hover/avatar:scale-110">
<img src="https://i.pravatar.cc/80?img=2" alt="Bob Smith">
</div>
<div class="vt-tooltip">
Bob Smith
<div class="vt-absolute vt-top-full vt-left-1/2 vt--translate-x-1/2 vt-border-[3px] vt-border-transparent vt-border-t-brand-fill"></div>
</div>
</div>
<!-- Avatar 3 -->
<div class="vt-tooltip-wrap vt-group/avatar vt-z-0 vt-hover:z-10">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page vt-transition-transform vt-group-hover/avatar:scale-110">
<img src="https://i.pravatar.cc/80?img=3" alt="Carol Davis">
</div>
<div class="vt-tooltip">
Carol Davis
<div class="vt-absolute vt-top-full vt-left-1/2 vt--translate-x-1/2 vt-border-[3px] vt-border-transparent vt-border-t-brand-fill"></div>
</div>
</div>
<!-- Avatar 4 -->
<div class="vt-tooltip-wrap vt-group/avatar vt-z-0 vt-hover:z-10">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page vt-transition-transform vt-group-hover/avatar:scale-110">
<img src="https://i.pravatar.cc/80?img=4" alt="David Lee">
</div>
<div class="vt-tooltip">
David Lee
<div class="vt-absolute vt-top-full vt-left-1/2 vt--translate-x-1/2 vt-border-[3px] vt-border-transparent vt-border-t-brand-fill"></div>
</div>
</div>
<!-- Overflow -->
<div class="vt-tooltip-wrap vt-group/avatar vt-z-0 vt-hover:z-10">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page vt-transition-transform vt-group-hover/avatar:scale-110">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+5</span>
</div>
<div class="vt-tooltip">
5 more users
<div class="vt-absolute vt-top-full vt-left-1/2 vt--translate-x-1/2 vt-border-[3px] vt-border-transparent vt-border-t-brand-fill"></div>
</div>
</div>
</div>
Compact Stack
Tightly overlapping avatars with a large overflow counter.
html
+12
<div class="vt-flex vt--space-x-4">
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=10" alt="User 1">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=11" alt="User 2">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=12" alt="User 3">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=13" alt="User 4">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=14" alt="User 5">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<img src="https://i.pravatar.cc/80?img=15" alt="User 6">
</div>
<div class="vt-avatar vt-avatar-md vt-ring-2 vt-ring-surface-page">
<span class="vt-text-xs vt-font-medium vt-text-foreground-muted">+12</span>
</div>
</div>
Guidelines
Stacked avatars for teams/participants with a +N overflow avatar.
+8
Do
Don't
+2
Do
API Reference
All CSS classes available for the Avatar Group component.
| Class | Type | Description |
|---|---|---|
vt-flex vt--space-x-3 |
Base | Overlapping layout for default-size avatars |
vt-flex vt--space-x-2 |
Size | Tighter overlap for small avatars |
vt-flex vt--space-x-4 |
Size | Wider overlap for large or compact avatars |
vt-ring-2 vt-ring-surface-page |
Base | White ring to visually separate overlapping avatars |
vt-z-0 vt-hover:z-10 |
Modifier | Brings hovered avatar to front (tooltip variant) |
Accessibility
Keyboard and screen reader support.
| Feature | Details |
|---|---|
| Group label | Wrap in a container with aria-label describing the group, e.g. "Team members" |
| Overflow | The "+N" counter should have aria-label="N more users" for screen readers |
| Tooltips | Name tooltips should use role="tooltip" with aria-describedby on the avatar |
| Images | Each avatar image needs unique alt text with the user name |