UnoCSS is instant on-demand Atomic CSS engine.

0 detections
0 websites tracked
Updated 25 May 2026

Websites Using UnoCSS

No websites detected yet. Analyze a website to contribute data.

What Is UnoCSS?

UnoCSS is an instant, on-demand atomic CSS engine: a tool that generates utility classes dynamically at build time based on exactly the classes your project uses, producing the smallest possible stylesheet with no unused rules. Created by Anthony Fu, a prolific open-source developer in the modern JavaScript tooling ecosystem, UnoCSS reframes atomic CSS not as a fixed framework but as an engine you configure. Rather than shipping a predefined library of utilities, it scans your source, matches the class names it finds against rules and presets, and emits only the CSS needed for those exact classes.

The core promise is captured by the word "on-demand." Traditional utility frameworks either ship a large stylesheet that must be purged of unused classes, or generate utilities from a fixed set. UnoCSS instead treats utilities as the output of pure functions: a class name is matched by a rule, and that rule returns the corresponding CSS. Because nothing is generated unless a matching class actually appears in your code, the resulting CSS is minimal by construction, and the engine is fast because it only does work for the classes in use. UnoCSS is frequently described as flexible and extremely performant for precisely this reason.

Crucially, UnoCSS is engine-first and preset-driven. It does not impose a single utility vocabulary; instead, you choose presets that define the rules. There is a preset that closely mirrors Tailwind CSS and Windi CSS conventions, presets for attributify mode, icons, web fonts, typography, and more, and you can write custom rules for project-specific utilities. This means UnoCSS markup can look almost identical to Tailwind markup when the Tailwind-compatible preset is used, or quite different when other presets or custom rules are in play. Understanding this configurability is essential to recognizing and reasoning about UnoCSS.

UnoCSS is not a browser extension, a hosted service, or a runtime library you simply link from a CDN in production (though a CDN runtime build exists for prototyping). In typical use it is a build-time tool, integrated as a Vite plugin, a PostCSS plugin, or through other integrations, that produces a static CSS file shipped with the site. Because the output is ordinary atomic CSS embedded in or linked from the page, and because the class names live in the markup, UnoCSS leaves recognizable fingerprints, though, as discussed below, distinguishing it from other atomic engines requires care precisely because of its configurability.

Placed in context, UnoCSS belongs to the modern wave of utility-first and atomic CSS tooling that followed Tailwind's popularization of the approach, sitting alongside the now-archived Windi CSS (which pioneered on-demand generation) as part of that lineage. Its distinguishing philosophy is to be the most flexible and fastest engine in the category: a configurable foundation on which you can reproduce Tailwind-like utilities, invent your own, or mix presets freely, rather than a fixed framework with a single opinionated vocabulary.

How UnoCSS Works

At its heart, UnoCSS is a matching engine. You define (or import via presets) a set of rules, each of which is a pattern paired with a function that returns CSS. When the engine scans your source files, it extracts candidate tokens (class names, and in attributify mode, attributes), tests them against the rules, and for every match generates the corresponding CSS declaration. Static rules match exact strings; dynamic rules use patterns to handle families of utilities, such as any margin step or any color. The final stylesheet is the union of CSS produced for the tokens actually found, nothing more.

Presets are the primary way teams configure UnoCSS. A preset bundles rules, variants, shortcuts, and theme values into a reusable package. The default/Wind preset provides a Tailwind- and Windi-compatible utility set, so a project can adopt familiar class names like p-4, text-lg, flex, and bg-blue-500 immediately. Other official presets add capabilities: an attributify preset lets you express utilities as HTML attributes rather than long class strings; an icons preset renders icons from popular icon sets as pure CSS using inline data; a web-fonts preset wires up font loading; and a typography preset styles prose content. You can combine presets and override their theme values to tailor the system.

UnoCSS also provides variants and shortcuts for ergonomics. Variants transform rules to handle states and contexts, hover, focus, responsive breakpoints, dark mode, by wrapping the generated CSS appropriately, so hover:bg-blue-600 or md:flex work as expected. Shortcuts let you compose multiple utilities into a single named token, similar to defining a component class, so btn could expand to a set of padding, color, and rounding utilities. Because all of this is configuration, two UnoCSS projects can present very different class vocabularies depending on the presets, shortcuts, and custom rules their authors chose.

A distinctive optional feature is attributify mode, where utilities are expressed as HTML attributes instead of class names. Instead of class="p-4 m-2 text-blue-500", you might write attributes grouped by purpose, which can make complex markup more readable. When a project uses attributify mode, the utility information lives in attributes rather than the class attribute, which changes how the framework looks in the source and is itself a potential UnoCSS signal, since this pattern is characteristic of the UnoCSS (and Windi) lineage.

Integration is build-time and ecosystem-friendly. UnoCSS is most commonly used as a Vite plugin, fitting naturally into modern stacks built on Vite, Vue, React, Svelte, SvelteKit, Nuxt, Astro, and similar tools, but it also offers a PostCSS plugin, a CLI, runtime builds, and editor tooling. During the build, the engine generates the CSS and the bundler emits it as a static asset. There is also an inspector for debugging which rules matched. The end result shipped to the browser is a compact, static atomic stylesheet, plus the utility-bearing markup, exactly the kind of standard output that can be inspected from the outside.

How to Tell if a Website Uses UnoCSS

UnoCSS can be genuinely tricky to detect with certainty, and it is important to be honest about that. Because it is an engine that emits ordinary atomic CSS, and because its most common preset deliberately mirrors Tailwind's class names, a UnoCSS site using that preset can look almost identical to a Tailwind site in the delivered markup. StackOptic analyzes the available server-side signals, and you can inspect the same clues, but the conclusion is often best expressed as "atomic/utility CSS, likely UnoCSS or Tailwind" unless a more specific marker is present.

Build-tool and integration hints. UnoCSS is most often used with Vite. While the CSS output itself is generic, the surrounding build artifacts, hashed asset file names, module preloading, and the overall structure typical of a Vite build, can point to the kind of modern stack where UnoCSS is common. This is contextual rather than definitive.

Attributify-mode markup. If you see utilities expressed as HTML attributes (grouped attribute-based styling) rather than only in the class attribute, that pattern is strongly associated with the UnoCSS/Windi lineage and is one of the more specific tells, since plain Tailwind does not use attributify by default.

Generated CSS layer comments or markers. UnoCSS sometimes emits identifiable comments or layer markers in its generated stylesheet (for example layer annotations). Inspecting the actual CSS file for engine-specific markers can occasionally distinguish it from other tools, though minification may strip these.

Icon utilities rendered as pure CSS. The UnoCSS icons preset renders icons as background-image data URIs via utility classes (for instance an i- icon class convention). Seeing icons implemented this way, as CSS rather than inline SVG or icon-font glyphs, can hint at the UnoCSS icons preset.

Utility-dense markup in general. As with any atomic framework, dense strings of utility classes signal a utility-first approach. This narrows the candidates to the atomic family (UnoCSS, Tailwind, Windi, Tachyons) even when it cannot pinpoint UnoCSS alone.

MethodWhat to doWhat it reveals
View SourceOpen "View Page Source" on the pageUtility-dense class strings, possible attributify attributes, hashed CSS asset links
Browser DevToolsInspect the Elements panel, Network tab, and the loaded CSS fileThe generated atomic CSS, any engine markers, icon utilities, Vite-style asset names
curl -sRun curl -s https://example.com and fetch the linked CSSUtility classes in markup; grep the CSS for layer/engine comments
WappalyzerRun the extension on the live pageMay identify "UnoCSS" or report Tailwind/utility CSS; treat as a hint
BuiltWithLook up the domainTechnology profile that may flag the build tooling and CSS approach

A reasonable command-line approach is to fetch the page, find the linked stylesheet, and inspect it: curl -s https://example.com | grep -oE 'href="[^"]+\.css"' to locate the CSS, then curl -s <css-url> | grep -i "uno" to look for engine markers, and review the markup for attributify attributes. For methodology, see how to find out what technology a website uses and how to check what javascript libraries a website uses. Because UnoCSS markup so often resembles Tailwind, the inspection habits in how to tell if a website uses tailwind css are directly relevant, the practical reality is that you frequently identify the broader utility-first pattern first, then look for the more specific UnoCSS markers above. If you are studying a site's CSS delivery for speed, how to make your website load faster is a useful companion, since on-demand engines like UnoCSS exist largely to minimize CSS weight.

The honest summary is that confident, framework-specific detection of UnoCSS often depends on finding a distinctive marker, attributify attributes, the icons-as-CSS convention, or engine comments in the unminified stylesheet, rather than the generic utility classes alone. Server-side analysis is valuable here because it can fetch both the raw HTML and the actual CSS file directly, giving you the best chance to spot those engine-specific signals; but where none are present, the responsible conclusion is to report a utility-first/atomic CSS approach and note UnoCSS as a likely candidate alongside Tailwind rather than overclaiming.

Key Features

  • On-demand generation. Utilities are produced only for the class names actually used, yielding a minimal stylesheet by construction.
  • Engine-first, preset-driven. A configurable matching engine rather than a fixed library, with presets defining the utility vocabulary.
  • Tailwind/Windi-compatible preset. A default preset that mirrors familiar class names for an easy transition from those tools.
  • Attributify mode. An optional mode that expresses utilities as HTML attributes for cleaner, grouped markup.
  • Pure-CSS icons preset. Renders icons from popular icon sets as CSS, avoiding separate icon fonts or inline SVG management.
  • Variants and shortcuts. Built-in handling for states, breakpoints, and dark mode, plus composable named shortcuts.
  • Fast, modern integrations. First-class Vite support plus PostCSS, CLI, runtime, and editor tooling, with an inspector for debugging.

Pros and Cons

Pros

  • Produces extremely small CSS because nothing unused is ever generated, which benefits performance.
  • Highly flexible and configurable, you can reproduce Tailwind-style utilities, invent custom rules, or mix presets.
  • Very fast build performance, a frequently cited advantage of its on-demand design.
  • Fits naturally into modern Vite-based stacks and integrates broadly across frameworks.

Cons

  • Configurability means more decisions and setup than a fixed, batteries-included framework.
  • Heavy reliance on presets and custom rules can make one project's conventions differ from another's.
  • Harder to detect and reason about from the outside because its output often mimics Tailwind.
  • A smaller community and ecosystem than the dominant Tailwind, though it is actively developed and growing.

UnoCSS vs Alternatives

UnoCSS is an atomic CSS engine, best compared against other utility-first tools and engines.

ToolModelDefining traitBest for
UnoCSSOn-demand atomic enginePreset-driven, configurable, very fastMaximum performance and flexibility in modern stacks
Tailwind CSSUtility-first frameworkLarge fixed utility set, huge ecosystemCustom designs with broad community support
Windi CSSOn-demand engine (archived)Pioneered on-demand generationHistorical projects; superseded by alternatives
TachyonsAtomic utilities on a fixed scaleTiny, no build step neededMinimal, predictable styling without tooling
BootstrapComponent-based CSS + JSReady-made componentsConventional UIs and rapid assembly

If a site turns out to use a different tool, the same CSS-and-markup inspection points to it. Compare UnoCSS's on-demand engine with the dominant utility-first framework Tailwind CSS, whose conventions UnoCSS's default preset deliberately mirrors, to understand how closely the two can resemble each other in practice.

Use Cases

UnoCSS is a natural fit for modern, build-driven web projects, especially those already using Vite, where its on-demand generation delivers minimal CSS and fast builds. Performance-sensitive sites benefit from shipping only the utilities they use, and teams that want utility-first ergonomics without committing to a single fixed vocabulary appreciate the engine's configurability. Projects built with Vue, Nuxt, Astro, SvelteKit, and similar tools frequently adopt UnoCSS because it slots into those ecosystems cleanly.

It also suits design systems that need custom utilities beyond what a fixed framework provides, since custom rules and shortcuts let teams define their own atomic vocabulary on top of the engine. Sites that want icons delivered as pure CSS, rather than managing an icon font or many inline SVGs, can use the icons preset, and teams attracted to cleaner markup may enable attributify mode. Developers migrating from Tailwind or the archived Windi CSS often choose UnoCSS because the compatible preset makes the transition low-friction while improving build performance.

Consider a few scenarios. A team building a content-heavy site on Astro might adopt UnoCSS to keep the shipped CSS tiny and the build fast, using the Tailwind-compatible preset so developers reuse familiar class names. A design-system team might layer custom rules and shortcuts onto UnoCSS to encode their brand's spacing, color, and component conventions as first-class utilities. A developer who values terse, readable markup might enable attributify mode to group utilities as attributes, reducing the long class strings common in utility-first code.

From a competitive-research standpoint, identifying UnoCSS, when its specific markers are present, signals a team working in a modern, performance-conscious, Vite-centric stack, often one that favors cutting-edge JavaScript tooling. That profile is useful context for vendors and analysts assessing a site's engineering sophistication. The practical caveat, as covered above, is that UnoCSS frequently presents as generic utility-first CSS indistinguishable from Tailwind, so the responsible read is often "modern atomic CSS, likely UnoCSS or Tailwind," with a firmer call only when attributify, the icons convention, or engine markers appear. Surfacing even that level of insight automatically across many domains, rather than inspecting each site's CSS by hand, is exactly the kind of analysis a technology-detection tool is built to perform.

Frequently Asked Questions

What does "on-demand" atomic CSS mean?

On-demand atomic CSS means utility classes are generated only for the exact class names your project actually uses, rather than shipping a large predefined stylesheet that must be purged. UnoCSS scans your source, matches the tokens it finds against rules, and emits just the corresponding CSS. The result is a minimal stylesheet by construction and very fast builds, because the engine only does work for classes in use. This is the central idea that distinguishes engines like UnoCSS from fixed utility frameworks.

Is UnoCSS the same as Tailwind CSS?

No, but they can look very similar. Tailwind is a utility-first framework with a large, fixed set of utilities and a vast ecosystem. UnoCSS is a configurable engine that generates utilities on demand, and its default preset deliberately mirrors Tailwind's class names so the markup often appears nearly identical. The differences are architectural, UnoCSS is preset-driven and engine-first, with optional features like attributify mode and pure-CSS icons, whereas Tailwind ships a defined framework. Because of the resemblance, detection sometimes can only narrow it to "UnoCSS or Tailwind."

Why is UnoCSS hard to detect on a website?

Because UnoCSS emits ordinary atomic CSS, and its most common preset reproduces Tailwind's class vocabulary, a UnoCSS site can be visually and structurally indistinguishable from a Tailwind site in the delivered markup. There is no mandatory generator tag or fixed file name that always identifies it. The more specific clues, attributify-mode attributes, icons rendered as CSS, or engine comments in the unminified stylesheet, are not always present. When they are absent, the honest conclusion is that the site uses utility-first CSS, with UnoCSS as one likely candidate alongside Tailwind.

What is attributify mode in UnoCSS?

Attributify mode is an optional UnoCSS feature that lets you express utilities as HTML attributes instead of packing them all into the class attribute. Rather than a long class string, you group related utilities as attributes, which can make complex markup more readable. Because plain Tailwind does not use this pattern by default, seeing attributify-style markup is one of the more specific signals that a site uses UnoCSS (or the related Windi lineage), making it a helpful clue during detection.

Which build tools work with UnoCSS?

UnoCSS integrates broadly across the modern JavaScript ecosystem. It is most commonly used as a Vite plugin, fitting projects built with Vite, Vue, Nuxt, React, Svelte, SvelteKit, and Astro, but it also provides a PostCSS plugin, a command-line interface, runtime builds for prototyping, and editor tooling, along with an inspector for debugging which rules matched. This flexibility lets teams adopt UnoCSS in most contemporary front-end setups, which is part of why it has gained traction in performance-focused, build-driven projects.

Want to detect UnoCSS and the rest of a site's technology stack instantly? Run any URL through StackOptic at https://stackoptic.com.

UnoCSS - Websites Using UnoCSS | StackOptic