Vertical Rule
The vr helper draws a thin vertical divider that takes the height of its flex row. Use it to separate groups in toolbars, stats, metadata lines and footers; tint it with text colours or change its thickness and opacity.
1Between two items
A vr inside a flex row takes the full row height.
<div class="flex items-center gap-4" style="height:3rem">
<span>Campaign production</span>
<div class="vr">
</div>
<span>Web design</span>
</div>2Statistics row
Big figures divided by vertical rules.
<div class="hstack gap-6 justify-center text-center p-4 border rounded-md">
<div>
<div class="text-2xl font-bold">
74.9k
</div>
<small class="text-muted">Downloads</small>
</div>
<div class="vr">
</div>
<div>
<div class="text-2xl font-bold">
1.8k
</div>
<small class="text-muted">Reviews</small>
</div>
<div class="vr">
</div>
<div>
<div class="text-2xl font-bold">
65
</div>
<small class="text-muted">Countries</small>
</div>
</div>3Toolbar groups
Vertical rules separate groups of editing buttons.
<div class="hstack gap-1 border rounded-md p-1" role="toolbar" aria-label="Editor">
<button type="button" class="btn btn-sm btn-light" aria-label="Undo"><i class="bi bi-arrow-counterclockwise" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Redo"><i class="bi bi-arrow-clockwise" aria-hidden="true"></i></button>
<div class="vr mx-1">
</div>
<button type="button" class="btn btn-sm btn-light" aria-label="Bold"><i class="bi bi-type-bold" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Italic"><i class="bi bi-type-italic" aria-hidden="true"></i></button>
<div class="vr mx-1">
</div>
<button type="button" class="btn btn-sm btn-light" aria-label="Align left"><i class="bi bi-text-left" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Align centre"><i class="bi bi-text-center" aria-hidden="true"></i></button>
</div>4Article metadata
Author, date and reading time on one line with dividers.
<div class="hstack gap-2 small text-muted flex-wrap">
<img src="../assets/img/avatar-12.svg" alt="" width="24" height="24" class="rounded-full"><span class="text-body">Nora Okafor</span>
<div class="vr">
</div>
<span>Sep 18, 2026</span>
<div class="vr">
</div>
<span>11 min read</span>
</div>5Footer links
Small legal links separated by vertical rules instead of pipes.
<div class="hstack gap-2 small justify-center">
<a href="#" class="link-secondary">Privacy</a>
<div class="vr">
</div>
<a href="#" class="link-secondary">Terms</a>
<div class="vr">
</div>
<a href="#" class="link-secondary">Cookies</a>
<div class="vr">
</div>
<a href="#" class="link-secondary">Sitemap</a>
</div>6Card footer actions
Two equal actions in a card footer split by a rule.
Inside the friendly workflow
This flexible process brings complex tasks into simple steps on any device.
<div class="card" style="max-width:20rem">
<div class="card-body">
<h3 class="h6">Inside the friendly workflow</h3>
<p class="small mb-0">This flexible process brings complex tasks into simple steps on any device.</p>
</div>
<div class="card-footer flex p-0">
<a href="#" class="flex-auto text-center py-2 no-underline"><i class="bi bi-hand-thumbs-up-fill" aria-hidden="true"></i> Like</a>
<div class="vr">
</div>
<a href="#" class="flex-auto text-center py-2 no-underline"><i class="bi bi-share-fill" aria-hidden="true"></i> Share</a>
</div>
</div>7Navbar divider
A vr between the navigation links and the account actions.
<nav class="navbar bg-surface-3 rounded-md px-4" aria-label="Main">
<div class="hstack gap-4 w-full">
<span class="navbar-brand mb-0 h6">Brand name 4</span> <a href="#" class="nav-link hidden sm:block">Product</a> <a href="#" class="nav-link hidden sm:block">Pricing</a>
<div class="vr ms-auto">
</div>
<a href="#" class="nav-link">Log in</a> <a href="#" class="btn btn-sm btn-primary">Sign up</a>
</div>
</nav>8Price comparison
Old and new price with the saving, separated by rules.
<div class="hstack gap-4 items-center">
<span class="text-xl font-bold text-danger">$81.99</span>
<div class="vr">
</div>
<del class="text-muted">$102.49</del>
<div class="vr">
</div>
<span class="badge text-bg-success">Save 20%</span>
</div>9Rating summary
Stars, score and review count in one row.
<div class="hstack gap-2 small">
<span class="text-warning"><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-half" aria-hidden="true"></i></span><strong>4.8</strong>
<div class="vr">
</div>
<a href="#">717 reviews</a>
<div class="vr">
</div>
<span class="text-success"><i class="bi bi-check-circle-fill" aria-hidden="true"></i> In stock</span>
</div>10User chip
Avatar and name divided from a status text.
<div class="inline-flex items-center gap-2 border rounded-full ps-1 pe-4 py-1">
<img src="../assets/img/avatar-11.svg" alt="" width="28" height="28" class="rounded-full"><span class="small font-semibold">Samir Tanaka</span>
<div class="vr">
</div>
<small class="text-success">Online</small>
</div>11Custom height
Give the rule an explicit height when the row itself has no height.
<div class="flex items-center gap-4">
<span class="text-lg">Brand name 4</span>
<div class="vr" style="height:2.5rem">
</div>
<span class="small text-muted">Bold ideas, beautifully executed</span>
</div>12Coloured rules
The rule uses the current colour, so text-* and opacity-* tint it.
<div class="hstack gap-4" style="height:2.5rem">
<span>Primary</span>
<div class="vr text-primary opacity-100">
</div>
<span>Success</span>
<div class="vr text-success opacity-75">
</div>
<span>Danger</span>
<div class="vr text-danger opacity-50">
</div>
<span>End</span>
</div>13Thicker rule
Set a width on the vr for a bolder accent divider.
This friendly dashboard gives customers coming back with friendly support.
<div class="flex gap-4">
<div class="vr text-primary opacity-100 rounded-md" style="width:4px">
</div>
<blockquote class="mb-0"><p class="mb-1">This friendly dashboard gives customers coming back with friendly support.</p><footer class="small text-muted">Theo Tanaka</footer></blockquote>
</div>14Actions in a table cell
Inline action links in a table cell split by rules.
<table class="table mb-0">
<thead>
<tr>
<th scope="col">Member</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jonah Ashford</td>
<td><div class="hstack gap-2 small"><a href="#">Edit</a><div class="vr"></div><a href="#" class="link-danger">Remove</a></div></td>
</tr>
<tr>
<td>Finn Brennan</td>
<td><div class="hstack gap-2 small"><a href="#">Edit</a><div class="vr"></div><a href="#" class="link-danger">Remove</a></div></td>
</tr>
<tr>
<td>Ethan Silva</td>
<td><div class="hstack gap-2 small"><a href="#">Edit</a><div class="vr"></div><a href="#" class="link-danger">Remove</a></div></td>
</tr>
</tbody>
</table>15Search bar segments
A combined search box with a rule between the query and the place field.
<form class="flex items-center border rounded-full px-4 py-1 gap-2" role="search">
<span class="text-muted"><i class="bi bi-search" aria-hidden="true"></i></span>
<label class="sr-only" for="hp-where-1243-q">What</label>
<input class="form-control border-0 shadow-none px-1" id="hp-where-1243-q" type="search" placeholder="Brand identity">
<div class="vr">
</div>
<label class="sr-only" for="hp-where-1243">Where</label>
<input class="form-control border-0 shadow-none px-1" id="hp-where-1243" type="text" placeholder="Porto">
<button type="submit" class="btn btn-primary btn-sm rounded-full">Go</button>
</form>16Step connector
Vertical rules connect the steps of a vertical progress tracker.
<div class="vstack">
<div class="flex gap-4">
<div class="flex flex-col items-center">
<span class="badge rounded-full text-bg-primary">1</span>
<div class="vr my-1" style="min-height:2rem">
</div>
</div>
<div class="pb-2">
<strong class="small">Request received</strong>
<div class="small text-muted">
Jun 21, 2026
</div>
</div>
</div>
<div class="flex gap-4">
<div class="flex flex-col items-center">
<span class="badge rounded-full text-bg-primary">2</span>
<div class="vr my-1" style="min-height:2rem">
</div>
</div>
<div class="pb-2">
<strong class="small">In progress</strong>
<div class="small text-muted">
Sep 19, 2026
</div>
</div>
</div>
<div class="flex gap-4">
<div class="flex flex-col items-center">
<span class="badge rounded-full text-bg-secondary">3</span>
</div>
<div class="pb-2">
<strong class="small">Ready for pickup</strong>
<div class="small text-muted">
Apr 26, 2026
</div>
</div>
</div>
</div>17Location path
Building, floor and room separated by rules on a booking confirmation.
<div class="hstack gap-2 small flex-wrap">
<span><i class="bi bi-building-fill" aria-hidden="true"></i> Main building</span>
<div class="vr">
</div>
<span>Floor 7</span>
<div class="vr">
</div>
<span>Room 270</span>
</div>18Weather row
Temperature, wind and humidity values divided by rules.
<div class="hstack gap-4 border rounded-md p-4">
<span class="text-3xl text-warning"><i class="bi bi-sun" aria-hidden="true"></i></span><span class="text-xl font-semibold">18°</span>
<div class="vr">
</div>
<span class="small"><i class="bi bi-wind" aria-hidden="true"></i> 11 km/h</span>
<div class="vr">
</div>
<span class="small"><i class="bi bi-droplet-fill" aria-hidden="true"></i> 41%</span>
</div>19Button with a split
A rule inside a button separates the label from a count.
<button type="button" class="btn btn-outline-primary inline-flex items-center gap-2"> <i class="bi bi-eye" aria-hidden="true"></i> Watch <span class="vr"></span> <span>51</span> </button>20Hide the rule on phones
d-none d-md-block shows the divider only when the items sit side by side.
<div class="flex flex-col md:flex-row gap-4">
<div>
<strong class="block"><i class="bi bi-telephone-fill" aria-hidden="true"></i> Call us</strong><small>+1 (555) 444-8980</small>
</div>
<div class="vr hidden md:block">
</div>
<div>
<strong class="block"><i class="bi bi-envelope-fill" aria-hidden="true"></i> Email us</strong><small>hello@example.com</small>
</div>
</div>