Comparing classless CSS frameworks
Tags: css, webdev
Published: 2023-09-20 17:58:32

**Written by [Shalitha Suranga](https://blog.logrocket.com/author/shalithasuranga/)✏️**

In the early days of the internet, most web developers wrote their own CSS stylesheets to structure and style web pages. Nowadays, we use pre-developed, fully-featured CSS frameworks to do this and save development time. But these frameworks won’t automatically style DOM elements using HTML tag semantics because these frameworks are class-based CSS frameworks. 

Classless CSS frameworks, by contrast, don’t define CSS classes. Instead, they automatically style your raw HTML structure based on HTML tag semantics. For example, almost all classless frameworks apply a button style for all `<button>` tags. 

In this article, I’ll explain the concepts of classless CSS frameworks with use cases and compare ten popular classless CSS frameworks with live previews. 

_Jump ahead:_

*   [What is a classless CSS framework?](#classless-css-framework)
*   [When to use classless CSS frameworks](#when-use-classless-css-frameworks)
*   [Classless vs. class-light vs. class-based CSS frameworks](#classless-vs-class-light-vs-class-based-css-frameworks)
*   [Top 10 classless CSS frameworks](#top-ten-classless-css-frameworks)
    *   [New.css](#new-css)
    *   [Sakura](#sakura-css)
    *   [Missing.css](#missing-css)
    *   [Water.css](#water-css)
    *   [MVP.css](#mvp-css)
    *   [Pico.css](#pico-css)
    *   [Simple.css](#simple-css)
    *   [Tacit](#tacit-css)
    *   [Almond.css](#almond-css)
    *   [Bolt.css](#bolt-css)
*   [Classless CSS framework comparison](#classless-css-framework-comparison)

## What is a classless CSS framework? <a name="classless-css-framework">

A classless CSS framework is a CSS stylesheet that styles DOM elements based on semantic HTML tags. A webpage typically consists of several HTML element types, such as headings, lists, tables, paragraphs, and form controls. 

HTML offers several tags to render these elements, such as the `<table>` tag to create a table. Each tag indicates how the end DOM element  will appear — when we use the `<table>` tag, we know that the web browser will render a table. 

Classless CSS frameworks help you style raw HTML pages instantly without using pre-defined classes, like class-based frameworks, or even writing a single line of CSS. Moreover, classless frameworks offer various themes and CSS variables for better customization. 

Look at the following sample classless CSS definition for tables:

```css
table {
   /* styles for tables */
}

th, td {
   /* styles for table headers and rows */
}
```

The CSS frameworks we’ll cover override styles defined by the user-agent stylesheet and apply custom styles for all standard HTML tags. When you import a classless CSS framework stylesheet into a raw HTML page, you will eventually see a well-styled, modern webpage because the classless framework applies styles to all of your existing standard HTML tags.

## When to use classless CSS frameworks <a name="when-use-classless-css-frameworks">

A classless CSS framework doesn’t behave like a fully-featured class-based CSS framework that offers various pre-developed components and layout structures. A classless framework defines minimal styles to apply common styles based on HTML tag names and attributes. 

This makes these libraries helpful in scenarios where you need to instantly style raw HTML without using dedicated classes or writing CSS sources. Here are some common scenarios where you can use a classless CSS framework:

*   Adding styles for a simple blog site that renders raw HTML
*   Giving a modern look to a legacy, static, HTML-only webpage
*   Creating a simple portfolio website or personal website
*   Adding styles for [M](https://blog.logrocket.com/how-to-safely-render-markdown-using-react-markdown/)[arkdown-rendered HTML](https://blog.logrocket.com/how-to-safely-render-markdown-using-react-markdown/) content in a web app
*   Prototyping (i.e., designing an HTML form for a client meeting) and designing a minimum viable product (MVP)

## Classless vs. class-light vs. class-based CSS frameworks <a name="classless-vs-class-light-vs-class-based-css-frameworks">

After covering what classless CSS frameworks are and the use cases they’re best suited for, we discussed how they differ from traditional class-based frameworks.However, there is another CSS framework type called class-light, which reside between classless and class-based frameworks. 

Class-light frameworks help you style webpages using features from both classless and class-based framework types. They not only style raw HTML pages based on semantic HTML concepts but also offer minimal classes for building layouts and coloring. [Chota](https://github.com/jenil/chota) and [Milligram](https://github.com/milligram/milligram) are popular class-light CSS frameworks. 

Let’s compare these types of CSS framework in the following table:

<table>

<thead>

<tr>

<th>Comparison factor</th>

<th>Classless</th>

<th>Class-light</th>

<th>Class-based</th>

</tr>

</thead>

<tbody>

<tr>

<td>Provides pre-defined classes</td>

<td>No, but may contain a few optional utility classes</td>

<td>Less, compared to the class-based type</td>

<td>Many</td>

</tr>

<tr>

<td>Time to learn</td>

<td>Nothing new to learn because there are no mandatory classes</td>

<td>Less, due to minimal classes</td>

<td>Usually takes more time (Copy-pasting pre-developed code segments may boost the development process)</td>

</tr>

<tr>

<td>Framework size (affects performance — smaller is better)</td>

<td>Very lightweight</td>

<td>Lightweight</td>

<td>Not lightweight, compared to other two types</td>

</tr>

<tr>

<td>Components (i.e., dialog boxes)</td>

<td>None, or a few based on semantic HTML tags</td>

<td>Minimal, few</td>

<td>Fully-featured, many</td>

</tr>

<tr>

<td>Suitable for</td>

<td>Scenarios where you need to style raw HTML quickly</td>

<td>Minimal web designs, for extending with custom styles</td>

<td>Complex web apps</td>

</tr>

</tbody>

</table>

## Top 10 classless CSS frameworks <a name="top-ten-classless-css-frameworks">

Let’s browse a few popular, well-maintained, and high-quality classless CSS frameworks with live previews. I’ll demonstrate all upcoming classless frameworks using [this raw HTML page](https://codepen.io/shalithasuranga/pen/eYbzmrq) (taken from [`cbracco/html5-test-page`](https://github.com/cbracco/html5-test-page)), which renders every semantic HTML tag. I suggest you open this raw HTML content preview and all upcoming demo links in multiple browser tabs at once for better side-by-side comparison.

### New.css <a name="new-css">

![New.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/new-css-demo.gif) [New.css](https://github.com/xz/new.css) is a simple classless CSS framework that offers three inbuilt themes: light, dark, and terminal. It offers several CSS variables for building custom themes and customizing the current theme’s color scheme.

#### Installation

You can install this CSS framework via your preferred Node package manager:

```bash
npm install @exampledev/new.css
# --- or ---
yarn add @exampledev/new.css
```

It’s also possible to download the latest stylesheet file from [GitHub](https://github.com/xz/new.css/releases) or import from the jsDeliver CDN as follows:

```bash
<link rel="stylesheet" href="https://cdn.jsDeliver.net/npm/@exampledev/new.css/new.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/VwqjYdp) and see how New.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://newcss.net/demo/) and switch themes live.

### Sakura <a name="sakura-css">

![Sakura CSS demo](https://blog.logrocket.com/wp-content/uploads/2023/09/sakura-css-demo.gif) [Sakura](https://github.com/oxalorg/sakura) is a minimal classless CSS framework written using the Sass preprocessor language. It styles standard semantic HTML tags and offers seven pre-developed themes. You can easily adjust theme colors or build your own theme with Sakura’s CSS variables.

#### Installation

You can easily download the latest stylesheet version from [GitHub](https://github.com/oxalorg/sakura/tree/master/css) and link to your webpage — or import it directly from the unpkg CDN as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/sakura.css/css/sakura.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/ExGyapV) and see how Sakura styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://oxal.org/projects/sakura/demo/) and switch themes live.

### Missing.css <a name="missing-css">

![MIssing.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/missing-css-demo.gif) [Missing.css](https://github.com/bigskysoftware/missing) is a simple class-light CSS framework that offers both classless and class-based framework features. It behaves more like a classless framework since it applies styles for every frequently used semantic HTML tag and uses CSS variables-based customization. 

Missing.css’s class-light features provide Flexbox-based layouts, grids, and modern pre-styled components like alerts, navigation bars, icon buttons, and more via its helper CSS classes.

#### Installation

You can easily download the latest stylesheet version from [GitHub](https://github.com/bigskysoftware/missing/tree/prod/releases/_artifacts) and link to your webpage — or import it directly from the unpkg CDN, as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/missing.css/dist/missing.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/PoXzwBR) and see how Missing.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://missing.style/demos/) and browse various sample pages.

### Water.css <a name="water-css">

![Water.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/water-css-demo.gif) [Water.css](https://github.com/kognise/water.css) is a modern classless CSS framework that offers light and dark themes. It also offers CSS variables-based theme customization and has several extra features like dialog box support that works beyond traditional semantic HTML.

#### Installation

You can easily download the latest stylesheet version from [GitHub](https://github.com/kognise/water.css/tree/master/dist) and link to your webpage — or import it directly from the jsDeliver CDN as follows:

```bash
<link rel="stylesheet" href="https://cdn.jsDeliver.net/npm/water.css/out/water.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/rNoLaZN) to see how Water.css styled our raw HTML sample page. You can also check the [official demo website](https://watercss.kognise.dev/) and toggle light and dark themes live for sample HTML content.

### MVP.css <a name="mvp-css">

![MVP.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/mvp-css-demo.gif) The [MVP.css classless CSS framework](https://github.com/andybrewer/mvp) is built specifically for creating web MVPs. It styles most modern semantic HTML tags, like `<header>` and `<section>`, offers better mobile viewport support, and offers all the basic components you need for a web MVP. 

MVP.css also offers [CSS variables](https://blog.logrocket.com/create-better-themes-with-css-variables/) and a dark theme you can set separately from the default light theme.

#### Installation

You can download MVP.css into your web projects via a Node package manager as follows:

```bash
npm install mvp.css
# --- or ---
yarn add mvp.css
```

It’s also possible to download the latest stylesheet version from [GitHub](https://github.com/andybrewer/mvp/releases) and link to your webpage or import it directly from the unpkg CDN, as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/mvp.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/JjwKoaK) and see how MVP.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://andybrewer.github.io/mvp/) and toggle light and dark themes live for sample HTML content.

### Pico.css <a name="pico-css">

![Pico.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/pico-css-demo.gif) [Pico.css](https://github.com/picocss/pico) is a minimalistic, class-light CSS framework that offers a dedicated classless CSS stylesheet version. It comes with pre-developed light and dark themes and CSS variables to build custom color schemes. 

Pico adds styles for frequently used semantic HTML tags and offers a way to create dialog boxes, sections, accordions, cards, switches, tooltips, and dropdowns with plain semantic HTML. You can structure your web layouts with or without CSS classes using the `<header>`, `<main>`, and `<footer>` tags.

#### Installation

You can download Pico into your web projects via a Node package manager as follows:

```bash
npm install @picocss/pico
# --- or ---
yarn add @picocss/pico
```

For PHP developers, Pico offers a Composer package too:

```bash
composer require picocss/pico
```

It’s also possible to download the latest stylesheet version from [GitHub](https://github.com/picocss/pico/tree/master/css) and link to your webpage or import it directly from the jsDeliver CDN as follows:

```bash
<link rel="stylesheet" href="https://cdn.jsDeliver.net/npm/@picocss/pico/css/pico.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/WNLxbgY) and see how Pico.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://picocss.com/) and browse several sample web pages styled with Pico.

### Simple.css <a name="simple-css">

![Simple.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/simple-css-demo.gif) [Simple.css](https://github.com/kevquirk/simple.css) is a minimal classless CSS framework that lets you create custom color schemes with a few CSS variables. It doesn’t offer manually-switchable themes, but it automatically sets a dark color theme based on the user agent’s color scheme configuration.

#### Installation

You can download Simple.css into your web projects via a Node package manager as follows:

```bash
npm install simpledotcss
# --- or ---
yarn add simpledotcss
```

Also, it’s possible to download the latest stylesheet version from [GitHub](https://github.com/kevquirk/simple.css) and link to your webpage or import it directly from the unpkg CDN as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/simpledotcss/simple.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/poqbvOB) and see how Simple.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://simplecss.org/demo) and see how Simple.css styles semantic HTML tags.

### Tacit <a name="tacit-css">

![Tacit CSS demo](https://blog.logrocket.com/wp-content/uploads/2023/09/tacit-css-demo.gif) [Tacit](https://github.com/yegor256/tacit) is a simple classless CSS framework written using the Sass preprocessor language. It styles semantic HTML tags in a minimalistic way without altering them too much. Tacit doesn’t offer inbuilt additional themes except the default one, but it is easily customizable with CSS variables.

#### Installation

You can download the latest stylesheet version from [GitHub](https://github.com/yegor256/tacit/releases) and link to your webpage or import it directly from the jsDeliver CDN as follows:

```bash
<link rel="stylesheet" href="https://cdn.jsDeliver.net/gh/yegor256/tacit@gh-pages/tacit-css.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/ExGyadV) and see how Tacit styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://yegor256.github.io/tacit/) and see how Tacit styles semantic HTML tags.

### Almond.css <a name="almond-css">

![Almond.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/almond-css-demo.gif) [Almond.css](https://github.com/alvaromontoro/almond.css), a classless CSS framework written using Sass, lets you style semantic HTML tags with [HSL color scheme-based customization](https://blog.logrocket.com/using-hsl-colors-css/). It offers separate stylesheets for two framework versions: the generic version with icons and the light version without icons. It doesn’t give you inbuilt themes, but you can create custom themes with its CSS variables.

#### Installation

You can download Almond.css into your web projects via a Node package manager as follows:

```bash
npm install almond.css
# --- or ---
yarn add almond.css
```

It’s also possible to download the latest stylesheet version from [GitHub](https://github.com/alvaromontoro/almond.css/tree/master/dist) and link to your webpage or import it directly from the unpkg CDN as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/almond.css/dist/almond.lite.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/BavzyqV) and see how Almond.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://alvaromontoro.github.io/almond.css/demo/) and see how Almond.css styles semantic HTML tags.

### Bolt.css <a name="bolt-css">

![Bolt.css demo](https://blog.logrocket.com/wp-content/uploads/2023/09/bolt-css-demo.gif) [Bolt.css](https://github.com/tbolt/boltcss) is a simple classless CSS framework that comes with a few CSS variables for color scheme customization. It doesn’t offer switchable pre-developed themes, but you can use CSS variables to adjust the pre-defined color scheme. Besides, Bolt automatically applies a dark color scheme.

#### Installation

You can download Bolt.css into your web projects via a Node package manager as follows:

```bash
npm install boltcss
# --- or ---
yarn add boltcss
```

It’s also possible to download the latest stylesheet version from [GitHub](https://github.com/tbolt/boltcss) and link to your webpage  or import it directly from the unpkg CDN as follows:

```bash
<link rel="stylesheet" href="https://unpkg.com/boltcss/bolt.min.css" />
```

#### Demo

Check [this CodePen](https://codepen.io/shalithasuranga/pen/rNoLaQa) and see how Bolt.css styled the raw HTML page I’ve shown you before. You can also check the [official demo website](https://boltcss.com/) and see how Bolt.css styles semantic HTML tags.

## Classless CSS framework comparison <a name="classless-css-framework-comparison">

Let’s compare the above popular classless frameworks across various comparison factors:

<table>

<thead>

<tr>

<th>Comparison factor</th>

<th>New</th>

<th>Sakura</th>

<th>Missing</th>

<th>Water</th>

<th>MVP</th>

<th>Pico</th>

<th>Simple</th>

<th>Tacit</th>

<th>Almond</th>

<th>Bolt</th>

</tr>

</thead>

<tbody>

<tr>

<td>Minified framework size in kilobytes (affects performance — lesser is better)</td>

<td>4.68</td>

<td>2.68</td>

<td>36.85</td>

<td>22.14</td>

<td>6.58</td>

<td>71.85</td>

<td>8.54</td>

<td>5.49</td>

<td>13.86</td>

<td>7.71</td>

</tr>

<tr>

<td>Browser support</td>

<td>Works on all modern browsers (Deprecated IE v11 may cause styling issues)</td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td>Additional components/widgets (i.e., dialog boxes, switches, etc.)</td>

<td>No</td>

<td>No</td>

<td>Yes see components: https://missing.style/docs/components/</td>

<td>No</td>

<td>No</td>

<td>Yes see components: https://picocss.com/docs/accordions.html</td>

<td>No</td>

<td>No, but basic structuring is possible with <aside></td>

<td>Yes see components:  https://alvaromontoro.github.io/almond.css/demo/</td>

<td>No</td>

</tr>

<tr>

<td>Layout support</td>

<td>No</td>

<td>No</td>

<td>Yes</td>

<td>No</td>

<td>Yes</td>

<td>Yes</td>

<td>No</td>

<td>No</td>

<td>No</td>

<td>No</td>

</tr>

</tbody>

</table>

Based on the above comparison factors, we can categorize each framework into one of three use case categories:

<table>

<thead>

<tr>

<th>Usage category</th>

<th>Framework name</th>

</tr>

</thead>

<tbody>

<tr>

<td>For tiny websites, blogs, prototyping, and rendering Markdown-generated HTML</td>

<td>New, Sakura, Water, Simple, Tacit, and Almond</td>

</tr>

<tr>

<td>For website MVPs</td>

<td>MVP, Missing, and Pico</td>

</tr>

<tr>

<td>For minimal web app desiging</td>

<td>Pico</td>

</tr>

</tbody>

</table>

Even though I’ve categorized classless frameworks based on bundle size and features, that doesn’t mean you shouldn’t use a feature-rich classless framework to enhance a tiny webpage or Markdown-generated HTML page. A few kilobytes’ difference won’t affect webpage performance on current, super-fast networks and modern, powerful computers.

## Conclusion

In this article, we studied the concept of classless CSS frameworks and compared it with other class-based and class-light frameworks. We discussed ten popular classless CSS frameworks with live previews and compared them with various factors. 

Some class-light frameworks like Chota and Milligram also style semantic HTML and behave like classless CSS frameworks, even though they are advertised as [micro CSS frameworks](https://blog.logrocket.com/6-css-micro-frameworks-compared/). You can browse an up-to-date list of almost all open-source classless and class-light CSS frameworks from this [GitHub repository](https://github.com/dbohdan/classless-css). 

The top classless CSS frameworks discussed in this article style all frequently used semantic HTML tags and let you attractively modernize raw HTML — just copy-paste a stylesheet CDN link to your web page and preview. You can easily customize styles with these frameworks’ CSS variables. You can also override styles with the `!important` flag if you want. Moreover, it’s possible to build your own classless framework using the standard semantic HTML tags [specification](https://developer.mozilla.org/en-US/docs/Web/HTML/Element).

---

## Is your frontend hogging your users' CPU?

As web frontends get increasingly complex, resource-greedy features demand more and more from the browser. If you’re interested in monitoring and tracking client-side CPU usage, memory usage, and more for all of your users in production, [try LogRocket](https://lp.logrocket.com/blg/css-signup).

[![LogRocket Signup](https://blog.logrocket.com/wp-content/uploads/2019/12/cpu-memory-usage.png)](https://lp.logrocket.com/blg/css-signup)

[LogRocket](https://lp.logrocket.com/blg/css-signup) is like a DVR for web and mobile apps, recording everything that happens in your web app, mobile app, or website. Instead of guessing why problems happen, you can aggregate and report on key frontend performance metrics, replay user sessions along with application state, log network requests, and automatically surface all errors.

Modernize how you debug web and mobile apps — [Start monitoring for free](https://lp.logrocket.com/blg/css-signup).