Tailwind CSS
Utility-first CSS framework for rapidly building custom designs without leaving your HTML. Highly customizable with a plugin system.
Websites Using Tailwind CSS
What Is Tailwind CSS?
Tailwind CSS is the leading utility-first CSS framework: instead of shipping pre-built components, it provides a large set of small, single-purpose utility classes (such as flex, pt-4, text-sm, and bg-blue-500) that you compose directly in your HTML to build completely custom designs. The short answer for anyone asking what Tailwind is: it is a framework that replaces handwritten CSS files with utility classes drawn from a configurable design system, generating a small, purged stylesheet that contains only the classes a project actually uses. It has become one of the most widely adopted styling approaches on the modern web, especially in React, Vue, and Next.js projects.
Tailwind CSS was created by Adam Wathan, with Steve Schoger and a small team, and first released in 2017. It grew out of frustration with the trade-offs of both handwritten CSS (hard to maintain, easy to make inconsistent) and component frameworks like Bootstrap (fast but visually generic). Tailwind's answer was utility-first styling: tiny classes that map to single CSS declarations, composed in markup, with consistency enforced by a shared design-token scale. Precise current market-share percentages are difficult to state with confidence because Tailwind classes are frequently compiled, purged, and sometimes renamed in production, and because detection methodologies differ. What technology-detection sources and developer surveys consistently report is that Tailwind is one of the fastest-growing and most-loved CSS tools of recent years, with very high satisfaction among developers who use it. Treat any single headline figure cautiously, but the qualitative trend is unmistakable: Tailwind adoption has risen sharply and continues to be a default choice for many new projects.
A crucial detail for detection, which we will return to, is that Tailwind's production output is purged: unused classes are removed at build time, and the framework does not load a recognizable named stylesheet file or expose a JavaScript global. That makes Tailwind detected not by a script or a window object, but by the distinctive shape of the class names in the HTML.
How Tailwind CSS Works
Tailwind works by giving you a comprehensive vocabulary of utility classes that each apply one small piece of styling, and then compiling only the classes you use into a single stylesheet.
At the authoring level, you style elements by stacking utilities in the class attribute. A button might read class="px-4 py-2 rounded bg-blue-500 text-white font-semibold hover:bg-blue-600". Each token corresponds to a specific declaration: px-4 is horizontal padding, rounded is a border radius, bg-blue-500 is a background color from the palette, and hover:bg-blue-600 applies a background on hover. Crucially, the values are not arbitrary; they come from a design-token scale defined in Tailwind's configuration (spacing, color palette, font sizes, breakpoints, shadows, and so on). Because every developer pulls from the same scale, designs stay consistent without anyone writing custom CSS.
Responsive and state variants are expressed as prefixes. md:flex applies display: flex at the medium breakpoint and up; dark:bg-gray-800 applies a background in dark mode; hover:, focus:, active:, group-hover:, and many more modifiers compose naturally. This means an entire responsive, interactive design lives in the markup, readable at a glance, with no separate media queries to maintain.
For one-off values that fall outside the scale, Tailwind supports arbitrary values in square brackets: w-[327px], bg-[#1da1f2], or grid-cols-[1fr_2fr]. These compile on demand. Seeing bracketed arbitrary values in the HTML is one of the most distinctive fingerprints of Tailwind, because no other popular framework uses that syntax.
The compilation step is what keeps Tailwind small. Modern Tailwind scans your source files for class names and generates only the CSS for classes you actually use, discarding everything else. The result is typically a single, small stylesheet (often well under 20 kilobytes) regardless of how large the framework's full vocabulary is. The trade-off, important for detection, is that the production CSS file is usually a generic, hashed, or build-tool-named asset rather than something called tailwind.css.
Teams that repeat the same long utility lists often extract patterns, either into framework components (a React <Button> that carries the classes) or, less commonly, with Tailwind's @apply directive, which folds utilities into a custom CSS class. Either way, the visible result in the browser is dense, utility-style class attributes.
How to Tell if a Website Uses Tailwind CSS
Tailwind is detected differently from script-based libraries: there is usually no global object and no obviously named stylesheet, so you identify it by the shape of the class names. Here are the signals and the tools that reveal them, including an important caveat.
Signals in the page and DOM
- Utility-class soup. The single strongest signal is HTML where elements carry long strings of short, single-purpose classes such as
flex items-center justify-between px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100. This dense, atomic class style is characteristic of Tailwind. - Responsive and state prefixes. Look for prefixed variants like
md:grid-cols-3,lg:flex,dark:bg-gray-900,hover:text-blue-600, andfocus:ring. The colon-prefixed modifier pattern is a Tailwind hallmark. - Arbitrary values in brackets. Classes such as
w-[327px],top-[12px],bg-[#1da1f2], orgrid-cols-[200px_1fr]are nearly unique to Tailwind and a very strong confirmation. - Signature class names. Tokens like
space-y-4,divide-y,ring-2,backdrop-blur,aspect-video, and the color-with-shade pattern (text-gray-500,bg-indigo-600) are typical of Tailwind's naming. - A single compiled stylesheet. In the Network tab you will usually see one CSS file containing many short utility rules, often with a hashed or build-tool name rather than
tailwind.css. Reset rules from Tailwind's "Preflight" base layer (an opinionated normalize) are also present.
The caveat: purging and renaming
Because Tailwind purges unused classes and some setups (or obfuscators) can rename classes, detection by file name or global is unreliable, and in rare cases class names may be minified. The robust approach is to read the class-name patterns in the DOM and confirm with computed styles. In DevTools Elements, inspect an element and check the Computed/Styles panel: a class like pt-4 resolving to padding-top: 1rem, or text-sm resolving to a small font-size with a matching line-height, confirms Tailwind's token scale is in play even when the file name is generic.
Tools to confirm it
| Tool | What you do | What it reveals |
|---|---|---|
| View Source | Open the page source | Dense utility-class strings, responsive prefixes, and bracketed arbitrary values |
| DevTools Elements | Inspect an element and read Computed styles | Confirms classes like pt-4 map to Tailwind's spacing scale (padding-top: 1rem) |
| DevTools Network | Open the CSS file in the panel | A single compiled stylesheet of many short utility rules, plus Preflight reset styles |
| DevTools Console | Search the stylesheet text for tokens | Presence of utilities like .flex, .pt-4, or arbitrary-value rules confirms Tailwind |
| Wappalyzer | Run the browser extension on the page | Frequently flags Tailwind CSS in the UI frameworks category (though purging can affect this) |
For a focused walkthrough dedicated to this exact question, see our guide on how to tell if a website uses Tailwind CSS. Because reading a site's design tokens pairs naturally with this, our guide on how to find what fonts and colors a website uses is a useful companion, and for the scripts that often accompany Tailwind-based single-page apps, see how to check what JavaScript libraries a website uses. If you are weighing Tailwind against a component framework, compare it with our profile of Bootstrap.
Key Features
Tailwind's feature set centers on productivity, consistency, and small output.
- Utility-first classes. A comprehensive vocabulary of single-purpose classes for layout, spacing, color, typography, borders, effects, and more.
- Configurable design system. A central configuration defines the color palette, spacing scale, breakpoints, fonts, and shadows that every utility draws from.
- Responsive and state variants. Prefix modifiers (
sm:,md:,hover:,focus:,dark:,group-*) compose styling directly in markup. - Arbitrary values. Bracket syntax (
w-[327px],bg-[#1da1f2]) for one-off values outside the scale. - Just-in-time generation and purging. Only used classes are compiled, producing a small stylesheet.
- Preflight base. An opinionated CSS reset that normalizes default browser styles.
- Dark mode. First-class dark-mode support via the
dark:variant. - Plugin ecosystem. Official plugins for typography (
prose), forms, aspect ratio, and container queries, plus many community plugins. @applydirective. Optional extraction of utility patterns into custom CSS classes.
A few features explain Tailwind's popularity. The design-token scale is the quiet engine of consistency: because spacing, color, and typography all come from a shared scale, even large teams produce harmonious interfaces without coordinating CSS. Just-in-time generation with purging is what makes the approach practical, turning a huge utility vocabulary into a tiny shipped file. And arbitrary values removed the last reason teams kept a separate CSS file for the occasional custom dimension.
Pros and Cons
Tailwind's trade-offs flow from putting styling into markup.
Pros
- Very fast to build and iterate, with no context-switching between HTML and CSS files.
- Strong design consistency through a shared token scale.
- Tiny production CSS thanks to purging, regardless of project size.
- No naming fatigue; you compose utilities instead of inventing class names.
- Highly customizable design system without abandoning the utility workflow.
- Excellent fit for component frameworks where utilities live inside reusable components.
Cons
- Markup becomes verbose; class attributes can grow long and dense.
- Requires a build step and initial configuration to set up properly.
- Learning the utility vocabulary takes time, and the HTML can look noisy to newcomers.
- Without component extraction, repeated utility strings can be duplicated across markup.
- Detection and debugging by file name is harder because of purged, generically named output.
Tailwind CSS vs Alternatives
Tailwind competes with both component frameworks and other CSS methodologies. The table frames the landscape.
| Framework / Approach | Philosophy | Output size | Customization | Best for |
|---|---|---|---|---|
| Tailwind CSS | Utility-first | Small (purged) | Very high (config-driven) | Custom designs, component-based apps |
| Bootstrap | Component + grid | Medium-large | Medium (Sass/CSS vars) | Fast, standardized responsive sites |
| Bulma | Component (CSS only) | Medium | Medium | CSS-only component framework |
| Plain CSS / Sass | Author your own | Varies | Total | Full control, small or bespoke projects |
| CSS-in-JS (e.g. Emotion) | Scoped styles in JS | Varies | High | Component-scoped styling in JS frameworks |
The most instructive comparison is Tailwind versus Bootstrap, since they sit at opposite ends of a spectrum. Bootstrap hands you finished components (btn btn-primary, card, navbar) that look polished instantly but can feel generic and require overrides for a bespoke look. Tailwind hands you raw utilities (flex, pt-4, bg-blue-500) that you assemble into your own components, yielding unique designs and a tiny stylesheet at the cost of busier markup and a build step. Against plain CSS or Sass, Tailwind trades some of the cleanliness of separated stylesheets for speed and enforced consistency. Against CSS-in-JS, Tailwind keeps styling out of the JavaScript runtime (no runtime style injection), which can help performance, while CSS-in-JS offers tighter per-component scoping and dynamic styling. The right choice depends on whether you prize bespoke design and small output (Tailwind), out-of-the-box components (Bootstrap), or fully hand-authored styles (plain CSS).
Use Cases
Tailwind fits a recognizable and growing set of scenarios.
- Custom marketing sites and landing pages. Bespoke, brand-specific designs built quickly without writing CSS files.
- React, Vue, and Next.js applications. Utilities living inside components, which is where Tailwind shines.
- Design systems and component libraries. A consistent token scale powering reusable, themeable components (the foundation of tools like shadcn/ui).
- Rapid prototyping. Quickly turning a design into working markup with full control over the result.
- Dashboards and SaaS interfaces. Dense, data-rich UIs where utility composition keeps styling close to structure.
- Sites needing minimal CSS payload. Projects where the small purged stylesheet is a performance advantage.
For competitive research and lead generation, recognizing Tailwind on a prospect's site is a useful signal that the team likely follows modern front-end practices and probably uses a component framework such as React or Vue underneath, since Tailwind and component-based architectures are so frequently paired.
Frequently Asked Questions
Why is Tailwind CSS hard to detect with automatic tools?
Because Tailwind purges unused classes at build time and outputs a single, often generically named or hashed stylesheet, with no JavaScript global to query. Automatic detectors that rely on named files or window objects can miss it. The reliable method is to read the class-name patterns in the HTML (utility soup, colon-prefixed variants, bracketed arbitrary values) and confirm with computed styles in DevTools.
What does a class like w-[327px] mean, and why does it indicate Tailwind?
That is a Tailwind arbitrary value: it sets width: 327px for a one-off value that is not on the default spacing scale. The square-bracket syntax is essentially unique to Tailwind among popular frameworks, so seeing w-[327px], bg-[#1da1f2], or similar bracketed classes is a strong, specific sign that a site uses Tailwind.
Does Tailwind CSS require JavaScript to run?
No. The shipped result is plain CSS; Tailwind does not add a runtime JavaScript library to style the page. It does use a build-time tool (the Tailwind compiler) to scan your files and generate the stylesheet, but the browser only loads CSS. This is different from CSS-in-JS approaches that inject styles at runtime.
Is Tailwind CSS free to use?
Yes. The Tailwind CSS framework is free and open source under the MIT license. The maintainers also sell optional commercial products such as the Tailwind UI component sets and templates, but the framework itself costs nothing for personal and commercial use.
How is Tailwind different from inline styles?
Inline styles (style="padding-top: 16px") are one-off, cannot use media queries or pseudo-states, and bypass any design system. Tailwind utilities map to a shared, configurable token scale, support responsive and state variants (md:, hover:), are cached in a single stylesheet, and are reusable across the project. So while both put styling near the markup, Tailwind brings consistency, variants, and caching that inline styles cannot.
Want to identify the CSS framework and full technology stack behind any website instantly? Try StackOptic at https://stackoptic.com.
Alternatives to Tailwind CSS
Compare Tailwind CSS
Analyze a Website
Check if any website uses Tailwind CSS and discover its full technology stack.
Analyze Now