A simple but powerful
CSS library for modern projects

A reimagined alternative to Bootstrap and Tailwind CSS. Build modern interfaces with both utility classes and ready-to-use components. Free and open-source.

https://cdn.jsdelivr.net/gh/getfinalui/finalcss@main/css/final.min.css

Simple classes, real interfaces

Rendered examples with the exact HTML below each preview. Use components for the base UI, then adjust details with utilities.

Theme-ready UI

Semantic colors adapt when a parent uses dark mode.

Light theme

Default color tokens.

Live
Dark theme

Same component classes.

Dark
<div class="d-grid grid-template-cols-2 max-sm:grid-template-cols-1 gap-4">
  <article class="card card-body bg-base">
    <div class="d-flex justify-content-between align-items-start gap-3 mb-4">
      <div>
        <h5 class="mb-1">Light theme</h5>
        <p class="text-secondary mb-0">Default color tokens.</p>
      </div>
      <span class="badge badge-green">Live</span>
    </div>
    <button type="button" class="btn btn-primary">Open project</button>
  </article>

  <article class="theme-dark card card-body">
    <div class="d-flex justify-content-between align-items-start gap-3 mb-4">
      <div>
        <h5 class="mb-1">Dark theme</h5>
        <p class="text-secondary mb-0">Same component classes.</p>
      </div>
      <span class="badge badge-blue">Dark</span>
    </div>
    <button type="button" class="btn btn-default">Open project</button>
  </article>
</div>

Responsive grid

Use breakpoint prefixes to change layout without extra CSS.

Analytics

grid item

Billing

grid item

Support

grid item

<div class="d-grid grid-template-cols-3 max-lg:grid-template-cols-2 max-sm:grid-template-cols-1 gap-4">
  <div class="p-4 rounded bg-blue-100">
    <h6 class="mb-1">Analytics</h6>
    <p class="mb-0 opacity-70">grid item</p>
  </div>
  <div class="p-4 rounded bg-green-100">
    <h6 class="mb-1">Billing</h6>
    <p class="mb-0 opacity-70">grid item</p>
  </div>
  <div class="p-4 rounded bg-purple-100">
    <h6 class="mb-1">Support</h6>
    <p class="mb-0 opacity-70">grid item</p>
  </div>
</div>

Button variants

Use component classes for consistent size, color, and states.

<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-blue">Blue</button>
<button type="button" class="btn btn-green">Green</button>
<button type="button" class="btn btn-red">Red</button>
<button type="button" class="btn btn-orange">Orange</button>
<button type="button" class="btn btn-purple">Purple</button>
<button type="button" class="btn btn-teal">Teal</button>
<button type="button" class="btn btn-primary-subtle">Subtle</button>
<button type="button" class="btn btn-outline">Outline</button>
<button type="button" class="btn btn-default">Default</button>

Newsletter form

Build common marketing and app forms with cards, inputs, buttons, and spacing utilities.

Weekly update
Design notes in your inbox

Short CSS and UI tips for building cleaner interfaces.

<article class="card card-body mx-auto" style="max-width: 440px;">
  <span class="badge badge-orange mb-3">Weekly update</span>
  <h5 class="mb-2">Design notes in your inbox</h5>
  <p class="text-secondary">Short CSS and UI tips for building cleaner interfaces.</p>

  <label class="form-label" for="newsletterEmail">Email address</label>
  <div class="d-flex max-sm:flex-col gap-2">
    <input class="form-control" id="newsletterEmail" type="email" placeholder="you@example.com">
    <button type="button" class="btn btn-primary">Subscribe</button>
  </div>
</article>

Product card

Compose product UI with layout, color, size, text, and button utilities.

Workspace kit

Starter components and utilities.

$29
<article class="card overflow-hidden mx-auto" style="max-width: 360px;">
  <div class="h-45 bg-neutral-200 d-flex align-items-center justify-content-center">
    <div class="w-20 h-20 rounded bg-primary"></div>
  </div>

  <div class="card-body">
    <div class="d-flex justify-content-between align-items-start gap-3 mb-3">
      <div>
        <h5 class="mb-1">Workspace kit</h5>
        <p class="text-secondary mb-0">Starter components and utilities.</p>
      </div>
      <span class="badge badge-green">$29</span>
    </div>
    <div class="d-flex gap-2">
      <button type="button" class="btn btn-primary flex-grow">Buy now</button>
      <button type="button" class="btn btn-default">Details</button>
    </div>
  </div>
</article>

How does it look by default?

Elements created with Final CSS utility and component classes.
Customize everything to match your brand style.

Templates

Modern website templates, crafted with Final CSS

Similar to Bootstrap 5, but...

Final CSS is more lightweight, has no JavaScript dependency, and includes simplified components with additional utility classes. It is redesigned with cleaner, more aesthetic defaults. If you have used the Bootstrap framework, you have probably faced challenges like overriding styles or changing SCSS variables. Both can be time-consuming and frustrating. Final CSS is built to make that work simpler.

What is the problem with Bootstrap?

I have used Bootstrap for hundreds of projects. It provides customizable SCSS variables and separate Sass files for each component. You can also use CSS directly from a CDN, which is great, but...

  • It is bloated with many styles and components.
  • Its navbar is very limited, so in many cases you have to create your own.
  • Utility classes are limited. For example, custom element sizes often require new class names and another stylesheet.
  • Nav links and buttons use inline-block, so SVG icons or font icons can break vertical alignment.
  • Customizing Sass variables is too complicated because many variables depend on other variables.
  • Colors are complicated, with too many color variables, and dark mode works incorrectly for many components.
  • Bootstrap color classes are hard to remember. For example, text-bg-primary, bg-primary, --bs-primary-rgb, and --bs-primary-text-emphasis all require documentation.
What is the problem with Tailwind?

Tailwind is great, and many large companies use it. Still, many developers complain about it.

  • Long and messy class names can make HTML repetitive and hard to scan.
  • It can lock you into its ecosystem.
  • Creating dark mode can be difficult because you often define dark colors for each element.
  • Tooling and setup can become complex: npm, PostCSS, CLI tools, and more.
  • It ships many color variants that many projects never use.
  • There are many other tradeoffs that become clearer in real projects.

Enjoy styling with final.css