The Bootstrap 5 accordion lets users expand and collapse sections of content. It's built on top of the collapse component and handles the one-open-at-a-time behaviour automatically.
Basic Accordion
<div class="accordion" id="faqAccordion">
<!-- Item 1 — open by default -->
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button"
data-bs-toggle="collapse" data-bs-target="#faq1"
aria-expanded="true" aria-controls="faq1">
What frameworks does BootstrapPlanet cover?
</button>
</h2>
<div id="faq1" class="accordion-collapse collapse show"
data-bs-parent="#faqAccordion">
<div class="accordion-body">
Bootstrap 5, React with Tailwind CSS and shadcn/ui, and Angular 21 with Bootstrap 5.
Over 200 free components with copy-paste code and live previews.
</div>
</div>
</div>
<!-- Item 2 — closed by default -->
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#faq2"
aria-expanded="false" aria-controls="faq2">
Are all the components free to use?
</button>
</h2>
<div id="faq2" class="accordion-collapse collapse"
data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes. Everything on BootstrapPlanet is completely free. No signup, no paywall.
Just copy the code and use it in your project.
</div>
</div>
</div>
<!-- Item 3 -->
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#faq3"
aria-expanded="false" aria-controls="faq3">
Do you have premium templates?
</button>
</h2>
<div id="faq3" class="accordion-collapse collapse"
data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes. Full Angular 21 + Bootstrap 5 admin templates are at
<a href="https://lettstartdesign.com" style="color:#fd4766;">LettStartDesign.com</a>.
Use code <strong>FIRST30</strong> for 30% off.
</div>
</div>
</div>
</div>
The three key attributes that make it work:
data-bs-toggle="collapse"on the button — triggers Bootstrap's collapse JSdata-bs-target="#id"— points to the panel to toggledata-bs-parent="#accordionId"on the panel — closes other open items
Always-Open Accordion
Multiple items can be open simultaneously — just remove data-bs-parent:
<div class="accordion" id="alwaysOpenAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button"
data-bs-toggle="collapse" data-bs-target="#ao1">
Bootstrap 5 Components
</button>
</h2>
<div id="ao1" class="accordion-collapse collapse show">
<!-- NO data-bs-parent here -->
<div class="accordion-body">
80+ free Bootstrap 5 components with live previews. Navbars, cards, forms, tables and more.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#ao2">
React Components
</button>
</h2>
<div id="ao2" class="accordion-collapse collapse">
<!-- NO data-bs-parent here -->
<div class="accordion-body">
40 React components built with Tailwind CSS and shadcn/ui.
</div>
</div>
</div>
</div>
Flush Accordion
Removes outer borders and rounded corners — flushes to the edge of its container:
<div class="accordion accordion-flush" id="flushAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#fl1"
data-bs-parent="#flushAccordion">
Angular 21 Templates
</button>
</h2>
<div id="fl1" class="accordion-collapse collapse">
<div class="accordion-body text-muted small">
Full Angular 21 + Bootstrap 5 admin dashboards with dark mode and RTL support.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#fl2"
data-bs-parent="#flushAccordion">
React Templates
</button>
</h2>
<div id="fl2" class="accordion-collapse collapse">
<div class="accordion-body text-muted small">
React 19 + Next.js 15 dashboard templates with TypeScript and Tailwind.
</div>
</div>
</div>
</div>
Flush accordions work best inside cards, sidebars and off-canvas panels where you want the content to fill the container edge-to-edge.
Custom Styled Accordion
Override Bootstrap's CSS variables for a custom look:
<style>
.custom-accordion .accordion-item {
border: none;
margin-bottom: 8px;
border-radius: 10px !important;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.custom-accordion .accordion-button {
font-weight: 600;
font-size: 0.9rem;
background: #fff;
color: #111;
padding: 14px 18px;
}
.custom-accordion .accordion-button:not(.collapsed) {
background: rgba(253,71,102,0.06);
color: #fd4766;
box-shadow: none;
}
.custom-accordion .accordion-button::after {
/* Custom arrow color */
filter: none;
}
.custom-accordion .accordion-button:not(.collapsed)::after {
filter: invert(30%) sepia(90%) saturate(500%) hue-rotate(320deg);
}
.custom-accordion .accordion-body {
font-size: 0.88rem;
color: #6b7280;
padding: 12px 18px 16px;
}
</style>
<div class="accordion custom-accordion" id="customAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button"
data-bs-toggle="collapse" data-bs-target="#ca1"
data-bs-parent="#customAccordion">
What's included in the Pro template?
</button>
</h2>
<div id="ca1" class="accordion-collapse collapse show">
<div class="accordion-body">
Angular 21 source files, 50+ UI components, dark mode, RTL support, 4 layout variants
and 12 months of free updates.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#ca2"
data-bs-parent="#customAccordion">
How do I get support?
</button>
</h2>
<div id="ca2" class="accordion-collapse collapse">
<div class="accordion-body">
Email support is included with all purchases. Pro customers get priority response.
Typical response time is under 24 hours.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#ca3"
data-bs-parent="#customAccordion">
Can I use this for client projects?
</button>
</h2>
<div id="ca3" class="accordion-collapse collapse">
<div class="accordion-body">
Yes. Single developer licence covers unlimited personal and commercial projects.
Multi-developer licence covers up to 5 developers.
</div>
</div>
</div>
</div>
Controlling Accordion with JavaScript
Open, close or toggle accordion items programmatically:
// Open a specific item
const collapseEl = document.getElementById('faq1')
const collapse = new bootstrap.Collapse(collapseEl, { toggle: false })
collapse.show()
// Close a specific item
collapse.hide()
// Toggle
collapse.toggle()
// Open all items (remove data-bs-parent first)
document.querySelectorAll('.accordion-collapse').forEach(el => {
new bootstrap.Collapse(el, { toggle: false }).show()
})
// Close all items
document.querySelectorAll('.accordion-collapse').forEach(el => {
bootstrap.Collapse.getInstance(el)?.hide()
})
Listen for Accordion Events
const accordionEl = document.getElementById('faqAccordion')
// Fires when an item finishes opening
accordionEl.addEventListener('shown.bs.collapse', function(e) {
console.log('Opened:', e.target.id)
})
// Fires when an item finishes closing
accordionEl.addEventListener('hidden.bs.collapse', function(e) {
console.log('Closed:', e.target.id)
})
Useful for analytics — tracking which FAQ questions users expand, or lazy-loading content when a panel opens.
Accordion in a Card
Flush accordion inside a card gives a clean settings panel look:
<div class="card border-0 shadow-sm">
<div class="card-header bg-white fw-bold py-3">Account Settings</div>
<div class="accordion accordion-flush" id="settingsAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed py-3" type="button"
data-bs-toggle="collapse" data-bs-target="#s1"
data-bs-parent="#settingsAccordion">
👤 Profile Information
</button>
</h2>
<div id="s1" class="accordion-collapse collapse">
<div class="accordion-body">
<div class="mb-3">
<label class="form-label small">Full Name</label>
<input type="text" class="form-control form-control-sm" value="Gagan Singh">
</div>
<button class="btn btn-sm text-white" style="background:#fd4766;">Save</button>
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed py-3" type="button"
data-bs-toggle="collapse" data-bs-target="#s2"
data-bs-parent="#settingsAccordion">
🔒 Change Password
</button>
</h2>
<div id="s2" class="accordion-collapse collapse">
<div class="accordion-body">
<div class="mb-2">
<label class="form-label small">Current Password</label>
<input type="password" class="form-control form-control-sm" placeholder="••••••••">
</div>
<div class="mb-3">
<label class="form-label small">New Password</label>
<input type="password" class="form-control form-control-sm" placeholder="••••••••">
</div>
<button class="btn btn-sm btn-outline-secondary">Update Password</button>
</div>
</div>
</div>
</div>
</div>
Frequently Asked Questions
Need a Full Bootstrap 5 Admin Dashboard?
Get a complete Angular 21 + Bootstrap 5 dashboard with 50+ components — built by the same team behind BootstrapPlanet.
Browse Templates →Use code FIRST30 for 30% off your first purchase.