404 Not Found
Error page layouts for when users land on a page that doesn't exist.
Minimal
Clean 404 with large number, message, and a single CTA.
html
<div class="vt-bg-surface-page vt-flex vt-items-center vt-justify-center vt-p-8 vt-rounded-xl vt-min-h-[400px]">
<div class="vt-text-center">
<p class="vt-font-bold vt-text-foreground-muted/20 vt-leading-none vt-inline-6268fbcf32">404</p>
<h1 class="vt-text-2xl vt-font-bold vt-mt-4">Page not found</h1>
<p class="vt-text-sm vt-text-foreground-muted vt-mt-2 vt-max-w-xs vt-mx-auto">The page you are looking for does not exist or has been moved.</p>
<a href="#" class="vt-btn vt-btn-primary vt-mt-8 vt-inline-flex">Go home</a>
</div>
</div>
With Icon
Icon-based 404 with two CTAs — go back or go home.
html
Oops! Nothing here
Looks like this page took a wrong turn. Let us help you find your way back.
<div class="vt-bg-surface-page vt-flex vt-items-center vt-justify-center vt-p-8 vt-rounded-xl vt-min-h-[400px]">
<div class="vt-text-center">
<div class="vt-icon-badge vt-w-24 vt-h-24 vt-rounded-2xl vt-bg-warning-surface vt-mx-auto vt-mb-6">
<svg class="vt-w-12 vt-h-12 vt-text-warning-fill" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"></path>
</svg>
</div>
<h1 class="vt-text-2xl vt-font-bold">Oops! Nothing here</h1>
<p class="vt-text-sm vt-text-foreground-muted vt-mt-2 vt-max-w-xs vt-mx-auto">Looks like this page took a wrong turn. Let us help you find your way back.</p>
<div class="vt-flex vt-gap-3 vt-justify-center vt-mt-8">
<button class="vt-btn vt-btn-bordered">Go back</button>
<a href="#" class="vt-btn vt-btn-primary">Go home</a>
</div>
</div>
</div>
With Search
404 with a search input and helpful navigation links.
html
<div class="vt-bg-surface-page vt-flex vt-items-center vt-justify-center vt-p-8 vt-rounded-xl vt-min-h-[400px]">
<div class="vt-text-center vt-w-full vt-max-w-md">
<p class="vt-font-bold vt-text-foreground-muted/20 vt-leading-none vt-inline-9fbcc3feef" id="not-found-3-1">404</p>
<h1 class="vt-text-xl vt-font-bold vt-mt-4">Page not found</h1>
<p class="vt-text-sm vt-text-foreground-muted vt-mt-2" id="not-found-3-2">Try searching for what you need.</p>
<div class="vt-mt-6">
<input type="text" placeholder="Search..." class="vt-input" aria-label="Search..." aria-describedby="not-found-3-1 not-found-3-2">
</div>
<div class="vt-flex vt-flex-wrap vt-gap-2 vt-justify-center vt-mt-6 vt-items-center">
<a href="#" class="vt-text-sm vt-text-info-fill">Home</a>
<span class="vt-text-foreground-muted">·</span>
<a href="#" class="vt-text-sm vt-text-info-fill">Components</a>
<span class="vt-text-foreground-muted">·</span>
<a href="#" class="vt-text-sm vt-text-info-fill">Docs</a>
</div>
</div>
</div>
Guidelines
Show a 404 when a URL doesn't resolve — explain what happened and give a clear way back.
Do
Page not found
This page doesn't exist.
Don't
API Reference
Utility classes used in 404 page layouts.
| Class | Type | Description |
|---|---|---|
vt-min-h-screen |
Layout | Full viewport height container |
vt-bg-surface-page |
Color | Page background |
vt-text-foreground-muted/20 |
Color | Large muted 404 number — low opacity foreground |
vt-bg-warning-surface |
Color | Warning/error tint for icon background |
vt-btn vt-btn-primary |
Button | Primary "Go home" action |
vt-btn vt-btn-bordered |
Button | Secondary "Go back" action |
vt-max-w-xs vt-mx-auto |
Container | Constrains description text width for readability |
Accessibility
Keyboard and screen reader support.
| Feature | Details |
|---|---|
| Structure | The 404 headline is the page h1; the explanation is a paragraph, not an image |
| Action | The way back is a real link ("Back to home") — focusable and announced |