How to Tell if a Website Uses Bootstrap (and Which Version)
Bootstrap leaves clear fingerprints: container/row/col-md-6 classes, bootstrap.min.css and data-bs-* attributes. Here is how to detect it and pin the version.
To tell whether a website uses Bootstrap, inspect its HTML and look for the framework's distinctive component and grid classes — container, row, col-md-6, navbar, card, and the unmistakable btn btn-primary. Then confirm it in the Network tab or View Source by finding a bootstrap.min.css stylesheet and a bootstrap.bundle.min.js script, usually loaded from a CDN like jsDelivr or cdnjs. The class names plus the loaded Bootstrap files together name the framework with confidence. To pin the version, read the CDN file path (it often states the version directly) or check the JavaScript data attributes: data-bs-* means Bootstrap 5, while plain data-toggle means Bootstrap 4 or earlier. This guide covers every signal, the version tells in detail, and how Bootstrap differs from utility-first Tailwind.
It sits alongside how to tell if a website uses Tailwind CSS and the wider how to find out what technology a website uses.
What Bootstrap is, briefly
Bootstrap is the most widely used component-first CSS framework. Where a utility-first framework like Tailwind gives you tiny single-purpose classes to compose, Bootstrap gives you ready-made components — buttons, navbars, cards, modals, dropdowns — and a responsive grid system, all driven by semantic, descriptive class names. Drop class="btn btn-primary" on a link and you get a styled primary button; wrap content in container, row and col-md-6 and you get a responsive grid column. Because these class names are standardised across every Bootstrap site, they form a clear, recognisable fingerprint in the markup. Bootstrap ships a CSS file and (for interactive components) a JavaScript file, and it is enormously popular on business sites, dashboards, admin panels and themes — which is exactly why it is worth being able to spot.
Signal 1: the component and grid classes
The defining Bootstrap fingerprint is its semantic component and grid classes in the HTML. Inspect the page and look for the framework's characteristic names:
- Grid:
container,container-fluid,row, and column classes likecol,col-md-6,col-lg-4. - Components:
navbar,card,btn(with modifiers likebtn btn-primary,btn btn-outline-secondary),alert,badge,modal,dropdown,carousel. - Utilities: spacing helpers like
mt-3,p-2, and display helpers liked-flex,text-center.
The giveaway is the combination of semantic component classes (card, navbar) with the grid (row, col-md-6). Finding btn btn-primary is a particularly strong tell — that exact pairing is pure Bootstrap. Unlike Tailwind's long utility soup, Bootstrap markup reads descriptively: a class tells you what the element is, not just how it looks. Seeing these names across a page is a strong indication of Bootstrap.
Signal 2: bootstrap.min.css and bootstrap.bundle.js
The most direct confirmation is the loaded framework files. Open the Network tab or View Source and look for:
bootstrap.min.css(orbootstrap.css) — the framework's stylesheet.bootstrap.bundle.min.js(orbootstrap.min.js) — the JavaScript for interactive components, thebundleversion including Popper for dropdowns and tooltips.
These are very often served from a public CDN, and the URL itself names the framework. Common hosts are jsDelivr (cdn.jsdelivr.net/npm/bootstrap@...) and cdnjs (cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/...). Finding a request to a bootstrap.min.css file is essentially direct proof — and, as the next section shows, the path frequently hands you the version for free. Even when Bootstrap is bundled into the site's own compiled CSS rather than loaded as a named file, the class names from Signal 1 still betray it.
Signal 3 (version): the CDN path and data attributes
Pinning the version is where this gets precise, and there are two strong methods.
The CDN file path — the most precise tell. When Bootstrap loads from a CDN, the URL usually contains the exact version. A stylesheet at https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css tells you it is 5.3.0, no guessing required. Always read the full stylesheet and script URLs in the Network tab first; if a versioned path is present, you are done.
The JavaScript data attributes — when the path is unversioned. Bootstrap's interactive components are wired up with data-* attributes, and the naming changed between major versions:
- Bootstrap 5: namespaced with a
bsprefix —data-bs-toggle,data-bs-target,data-bs-dismiss. - Bootstrap 4 and earlier: unprefixed —
data-toggle,data-target,data-dismiss.
So scan the markup for a modal or dropdown trigger and read its data attribute: data-bs-toggle="modal" means version 5; data-toggle="modal" means version 4 or below. A second corroborating clue is jQuery: Bootstrap 4 and earlier depend on it, while Bootstrap 5 dropped jQuery, so a jQuery dependency alongside Bootstrap points to v4 or lower (see how to tell if a website uses jQuery).
The signal table
| Signal | Where to find it | What it means |
|---|---|---|
container, row, col-md-6 grid classes | Elements panel, View Source | Bootstrap grid — strong indicator |
btn btn-primary, navbar, card, modal | Elements panel, View Source | Bootstrap components — strong indicator |
bootstrap.min.css stylesheet | Network tab, View Source | Bootstrap loaded directly — confirms framework |
bootstrap.bundle.min.js script | Network tab, View Source | Bootstrap JS for interactive components |
bootstrap@5.x.x in the CDN URL | Network tab | Exact version — most precise tell |
data-bs-toggle (vs data-toggle) | Elements panel | data-bs-* = v5; data-* = v4 or earlier |
| jQuery present as a dependency | Console, Network tab | Points to Bootstrap v4 or below (v5 dropped jQuery) |
The class names confirm Bootstrap; the CDN path and data attributes pin the version.
Method 1: View Source and the Elements panel
The quickest first pass is View Source (Ctrl/Cmd + U): search the markup for bootstrap (to catch the stylesheet and script references), and for class strings like col-md, btn btn-, navbar and card. If you find the bootstrap.min.css reference and a sprinkling of those classes, you have your answer. For a live look, use the Elements panel in DevTools (F12): pick a navbar, a button or a card with the element picker and read its classes — Bootstrap's descriptive component names will be obvious. The Elements panel is also where you read the data-bs-* versus data-* attributes on interactive components for the version check. Inspecting a couple of components rather than one gives a representative read. This is the same element-inspection technique used across detection, including how to tell if a website uses Tailwind CSS.
Method 2: the Network tab and the version path
For the most precise result, use the Network tab. Open DevTools, select Network, filter to CSS (or JS), and reload. Find the bootstrap.min.css and bootstrap.bundle.min.js requests and click them to read the full URL. If the URL is a versioned CDN path — bootstrap@5.3.0/... or twitter-bootstrap/5.3.0/... — you have both the framework and the exact version in one go, which is the cleanest possible result. The Network tab is reliable because it shows what the browser actually fetches, so a Bootstrap file genuinely loading is strong proof the framework powers the page rather than appearing in some stray reference. It also lets you confirm whether the bundle (with Popper) is used, which tells you interactive components are in play.
Method 3: the Console and detection tools
For corroboration, the Console and detection tools help. In the DevTools Console on a Bootstrap 5 site, you can often find the framework's JavaScript exposed — typing bootstrap may return its object (with component classes like bootstrap.Modal), and on older jQuery-dependent versions you can probe the jQuery plugins. General detection tools — Wappalyzer, BuiltWith and similar — list CSS frameworks and frequently flag Bootstrap, often with a version guess, which is a handy second opinion. Treat the tool's version as a hint and prefer the CDN path for certainty, since path-based version reading is exact while inference can be approximate. Combining the Console probe, the tool result and the file path gives you a confident framework-and-version read. This multi-tool habit is the backbone of how to find out what technology a website uses.
Bootstrap versus Tailwind: telling them apart
The most common point of confusion is distinguishing Bootstrap from Tailwind, since both are popular CSS frameworks — but their signatures are opposites, so a glance at the class names settles it.
| Aspect | Bootstrap | Tailwind |
|---|---|---|
| Approach | Component-first | Utility-first |
| HTML class style | Semantic names (card, navbar, col-md-6) | Utility soup (flex pt-4 text-sm) |
| Signature class | btn btn-primary | md:grid-cols-3, w-[327px] |
| Loaded file | bootstrap.min.css (+ bundle JS) | A single compiled utility stylesheet |
| Version tell | CDN path, data-bs-* vs data-* | (Version less exposed in markup) |
So the deciding question is the shape of the classes: descriptive component names like card and navbar say Bootstrap; long strings of single-purpose utilities with colon variants and square brackets say Tailwind (covered in how to tell if a website uses Tailwind CSS). One nuance: newer Bootstrap added its own utility classes (d-flex, mt-3), so a Bootstrap site has some utilities too — but they sit alongside its component classes and use Bootstrap's own names, not Tailwind's, and you will not see Tailwind's md:/hover: colon variants or bracket values.
A worked example
You want to know how a company's marketing site was built and how current it is. You open View Source and immediately see a <link> to https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css — Bootstrap confirmed, and the path hands you the version: 5.3.1. Scrolling the markup, you find a navbar navbar-expand-lg, several card components inside a row of col-md-4 columns, and a btn btn-primary on the hero — textbook Bootstrap classes. You inspect the mobile-menu toggle and it carries data-bs-toggle="collapse" with the bs prefix, consistent with version 5. There is no jQuery in the Network tab, which also fits Bootstrap 5 (it dropped jQuery). Every signal agrees: this is a Bootstrap 5.3.1 site. In about a minute you have the framework and the exact version, which tells you the front end is reasonably current and built with a component-first approach.
Why the framework and version matter
Knowing a site uses Bootstrap tells you about its build approach — component-first, rapid assembly from ready-made parts, a very common choice for business sites, dashboards, internal tools and off-the-shelf themes. The version adds a freshness signal: a site still on Bootstrap 3 or 4 may not have been updated in some time and is carrying a jQuery dependency, whereas Bootstrap 5 indicates a more current build. That matters for several audiences. For competitive research and agency scoping, the framework and version sketch the site's age and technical approach. For security review, an old framework version (and the old jQuery it drags along) is worth noting as potential technical debt. For developer hiring or partnership, it signals the skills in play. The framework is a meaningful part of the front-end picture, and the version is one of the easier high-value facts to capture precisely.
How reliable is Bootstrap detection?
Very reliable for the framework, and often exact for the version. The component and grid classes are standardised and distinctive, and a loaded bootstrap.min.css file is direct proof, so identifying Bootstrap is straightforward. Version detection is exact when the CDN path includes the version, and very reliable otherwise via the data-bs-* versus data-* distinction plus the jQuery-dependency clue. The main edge cases: a site that compiles Bootstrap into its own bundle (so there is no named bootstrap.min.css, though the classes still show) and a customised or themed build that renames or trims things. Even then, the grid and component class names usually remain. So "does this site use Bootstrap?" is answerable with high confidence, and "which version?" is too whenever you can read the CDN path or the data-attribute style. Read the stylesheet URL first, fall back to the data attributes, and you will get both.
The workflow
- View Source / inspect and look for
container,row,col-md-6,btn btn-primary,navbar,card. - Find the file —
bootstrap.min.cssandbootstrap.bundle.min.jsin the Network tab or source. - Read the CDN path for the exact version (
bootstrap@5.x.x). - Check data attributes —
data-bs-*is v5, plaindata-*is v4 or earlier. - Confirm with jQuery presence (points to v4 or below) and a detection tool.
Go deeper
- The utility-first alternative: how to tell if a website uses Tailwind CSS.
- The jQuery dependency clue: how to tell if a website uses jQuery.
- The whole stack: how to find out what technology a website uses.
- The design layer: how to find what fonts and colours a website uses.
Want the CSS framework, its version and the full front-end stack identified automatically? Analyse any site with StackOptic — free, no sign-up.
Frequently asked questions
How do I tell if a website uses Bootstrap?
Inspect the HTML and look for Bootstrap's component and grid classes — container, row, col-md-6, navbar, card, and btn btn-primary are distinctive. Then check the Network tab or View Source for a bootstrap.min.css stylesheet and a bootstrap.bundle.min.js script, often from a CDN like cdn.jsdelivr.net or cdnjs. The class names plus the loaded bootstrap files together confirm the framework. Detection tools also flag Bootstrap automatically.
How can I tell which version of Bootstrap a site uses?
The most precise way is the CDN file path: a stylesheet URL like bootstrap@5.3.0/dist/css/bootstrap.min.css states the version directly. Failing that, read the JavaScript data attributes — data-bs-* prefixes (such as data-bs-toggle, data-bs-target) indicate Bootstrap 5, while plain data-toggle and data-target without the bs prefix indicate Bootstrap 4 or earlier. The presence of jQuery as a dependency also points to version 4 or below, since Bootstrap 5 dropped jQuery.
What is the difference between data-bs-toggle and data-toggle?
They are the same Bootstrap JavaScript hook from different major versions. Bootstrap 5 namespaced its data attributes with a bs prefix, so a dropdown or modal trigger uses data-bs-toggle and data-bs-target. Bootstrap 4 and earlier used the unprefixed data-toggle and data-target. So scanning the markup for which form appears is a quick version test: data-bs-* means version 5, plain data-* means version 4 or below.
Is Bootstrap different from Tailwind CSS?
Yes, fundamentally. Bootstrap is component-first: it provides ready-made components and a grid via semantic classes like card, navbar and col-md-6, so the HTML reads descriptively. Tailwind is utility-first: you compose designs from many tiny single-purpose classes like flex, pt-4 and text-sm, producing utility-class soup. So Bootstrap markup shows component names while Tailwind markup shows stacked utilities — the class-name shape tells the two frameworks apart at a glance.
Why would I want to know if a site uses Bootstrap and which version?
The framework reveals how the front end was built and the team's approach, and the version hints at how current the site is. Bootstrap signals a component-first, rapid-build approach common on many business sites. An old version (3 or 4) may indicate the site has not been updated recently, while version 5 suggests a more current build. For competitive research, agency scoping, security review and developer hiring, the framework and version are useful parts of the picture.
Analyse any website with StackOptic
Get the full technology stack, performance, security and SEO report in seconds — free.
Analyse a websiteRelated articles
How to Tell if a Website Uses Progressive Web App (PWA) Features
A web app manifest, a registered service worker, installability and a theme-color tag are the PWA signals. Here is how to detect them in Chrome DevTools.
How to Tell if a Website Uses Akamai, Fastly, or CloudFront
Each major CDN leaves distinct header fingerprints — Fastly's x-served-by, Akamai's ghost markers, CloudFront's x-amz-cf-pop. Here is how to tell them apart.
How to Tell if a Website Uses Google reCAPTCHA
Google reCAPTCHA leaves signals: a recaptcha/api.js script, a grecaptcha global and a g-recaptcha data-sitekey. Here is how to detect it and tell v2 from v3.