bootstrap, bulma, foundation-sites, and materialize-css are popular CSS frameworks used to accelerate user interface development. bootstrap offers a comprehensive set of styled components and utilities with optional JavaScript. bulma is a modern Flexbox-based framework that is CSS-only, requiring separate scripts for interactivity. foundation-sites provides a robust responsive grid and components but has shifted to community maintenance. materialize-css implements Google's Material Design but is currently unmaintained and archived, making it risky for new projects.
These four libraries aim to speed up UI development, but they differ significantly in maintenance status, technical approach, and long-term viability. Let's compare how they handle core engineering concerns.
bootstrap is actively maintained with regular releases.
<!-- bootstrap: Active maintenance -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3/dist/css/bootstrap.min.css" rel="stylesheet">
bulma is also active with a recent v1.0 release.
<!-- bulma: Active maintenance -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.0/css/bulma.min.css">
foundation-sites is community maintained after ZURB stopped development.
<!-- foundation-sites: Community maintenance -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
materialize-css is archived and unmaintained.
<!-- materialize-css: Unmaintained/Archived -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
bootstrap uses a Flexbox-based grid with responsive breakpoints.
.col-md-6 define width at specific screen sizes.<!-- bootstrap: Flexbox grid -->
<div class="row">
<div class="col-md-6">Column 1</div>
<div class="col-md-6">Column 2</div>
</div>
bulma uses a Flexbox grid with a simple syntax.
.column automatically wrap and resize.<!-- bulma: Flexbox grid -->
<div class="columns">
<div class="column">Column 1</div>
<div class="column">Column 2</div>
</div>
foundation-sites uses the XY Grid (Flexbox) or older Float Grid.
.cell medium-6 define width.<!-- foundation-sites: XY Grid -->
<div class="grid-x grid-padding-x">
<div class="cell medium-6">Column 1</div>
<div class="cell medium-6">Column 2</div>
</div>
materialize-css uses a Float-based grid (legacy).
.col s6 define width.<!-- materialize-css: Float grid -->
<div class="row">
<div class="col s6">Column 1</div>
<div class="col s6">Column 2</div>
</div>
bootstrap supports both Sass variables and CSS custom properties.
/* bootstrap: Sass override */
$primary: #ff5722;
@import "bootstrap/scss/bootstrap";
bulma relies on Sass variables before compilation.
/* bulma: Sass override */
$primary: #ff5722;
@import "bulma/bulma";
foundation-sites uses Sass maps for deep customization.
/* foundation-sites: Sass map override */
$foundation-palette: (primary: #ff5722);
@import "foundation";
materialize-css uses Sass variables.
/* materialize-css: Sass override */
$primary-color: #ff5722;
@import "materialize";
bootstrap includes optional vanilla JavaScript components.
// bootstrap: Initialize modal
const myModal = new bootstrap.Modal(document.getElementById('myModal'));
myModal.show();
bulma includes NO JavaScript.
// bulma: Custom JS required
// No built-in API, you toggle classes manually
document.querySelector('.modal').classList.add('is-active');
foundation-sites requires jQuery and initialization.
$(document).foundation().// foundation-sites: jQuery initialization
$(document).foundation();
$('#myModal').foundation('open');
materialize-css requires initialization via global object.
// materialize-css: Global init
M.Modal.init(document.getElementById('myModal'));
Here is how each library styles a primary button.
bootstrap uses semantic utility classes.
<button class="btn btn-primary">Bootstrap</button>
bulma uses readable class names.
<button class="button is-primary">Bulma</button>
foundation-sites uses simple class names.
<button class="button primary">Foundation</button>
materialize-css uses specific effect classes.
<button class="btn waves-effect waves-light">Materialize</button>
| Feature | bootstrap | bulma | foundation-sites | materialize-css |
|---|---|---|---|---|
| Status | β Active | β Active | β οΈ Community Maintained | β Archived |
| Grid | Flexbox | Flexbox | Flexbox (XY) | Float (Legacy) |
| JS Included | β Yes (Vanilla) | β No | β Yes (jQuery) | β Yes (jQuery) |
| Customization | Sass + CSS Vars | Sass | Sass Maps | Sass |
| Best For | Enterprise Tools | Modern SPAs | Legacy Maintenance | Avoid |
bootstrap is the safest choice for most teams. It balances features, stability, and ease of use. It works well for dashboards, admin panels, and content sites where you need reliable components without extra setup.
bulma is excellent for modern stacks like React or Vue. Since it has no JavaScript, it does not conflict with your framework's state management. Choose this if you want to build your own interactivity layer.
foundation-sites should only be used if you are updating an existing app that already depends on it. The reduced maintenance activity makes it a risk for new projects.
materialize-css should be avoided. The project is unmaintained, and the technical approach is outdated. If you need Material Design, look for actively maintained alternatives.
Choose bootstrap if you need a stable, widely adopted framework with built-in JavaScript components and extensive documentation. It is ideal for internal tools, dashboards, and projects where long-term support and community resources are critical.
Choose bulma if you prefer a CSS-only approach that integrates easily with modern JavaScript frameworks like React or Vue. It is suitable for projects where you want full control over interactivity without fighting built-in jQuery or vanilla JS dependencies.
Choose foundation-sites only if you are maintaining a legacy application already built on it. Due to reduced maintenance activity since ZURB stepped back, it is not recommended for new greenfield projects where long-term stability is required.
Do NOT choose materialize-css for new projects. The repository is archived and the package is unmaintained. If you need Material Design, evaluate actively maintained alternatives like MUI or updated forks instead.
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
Explore Bootstrap docs Β»
Report bug
Β·
Request feature
Β·
Blog
Our default branch is for development of our Bootstrap 5 release. Head to the v4-dev branch to view the readme, documentation, and source code for Bootstrap 4.
Several quick start options are available:
git clone https://github.com/twbs/bootstrap.gitnpm install bootstrap@v5.3.8yarn add bootstrap@v5.3.8bun add bootstrap@v5.3.8composer require twbs/bootstrap:5.3.8Install-Package bootstrap Sass: Install-Package bootstrap.sassRead the Getting started page for information on the framework contents, templates, examples, and more.
Within the download youβll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
bootstrap/
βββ css/
β βββ bootstrap-grid.css
β βββ bootstrap-grid.css.map
β βββ bootstrap-grid.min.css
β βββ bootstrap-grid.min.css.map
β βββ bootstrap-grid.rtl.css
β βββ bootstrap-grid.rtl.css.map
β βββ bootstrap-grid.rtl.min.css
β βββ bootstrap-grid.rtl.min.css.map
β βββ bootstrap-reboot.css
β βββ bootstrap-reboot.css.map
β βββ bootstrap-reboot.min.css
β βββ bootstrap-reboot.min.css.map
β βββ bootstrap-reboot.rtl.css
β βββ bootstrap-reboot.rtl.css.map
β βββ bootstrap-reboot.rtl.min.css
β βββ bootstrap-reboot.rtl.min.css.map
β βββ bootstrap-utilities.css
β βββ bootstrap-utilities.css.map
β βββ bootstrap-utilities.min.css
β βββ bootstrap-utilities.min.css.map
β βββ bootstrap-utilities.rtl.css
β βββ bootstrap-utilities.rtl.css.map
β βββ bootstrap-utilities.rtl.min.css
β βββ bootstrap-utilities.rtl.min.css.map
β βββ bootstrap.css
β βββ bootstrap.css.map
β βββ bootstrap.min.css
β βββ bootstrap.min.css.map
β βββ bootstrap.rtl.css
β βββ bootstrap.rtl.css.map
β βββ bootstrap.rtl.min.css
β βββ bootstrap.rtl.min.css.map
βββ js/
βββ bootstrap.bundle.js
βββ bootstrap.bundle.js.map
βββ bootstrap.bundle.min.js
βββ bootstrap.bundle.min.js.map
βββ bootstrap.esm.js
βββ bootstrap.esm.js.map
βββ bootstrap.esm.min.js
βββ bootstrap.esm.min.js.map
βββ bootstrap.js
βββ bootstrap.js.map
βββ bootstrap.min.js
βββ bootstrap.min.js.map
We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). Source maps (bootstrap.*.map) are available for use with certain browsersβ developer tools. Bundled JS files (bootstrap.bundle.js and minified bootstrap.bundle.min.js) include Popper.
Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.
Bootstrapβs documentation, included in this repo in the root directory, is built with Astro and publicly hosted on GitHub Pages at https://getbootstrap.com/. The docs may also be run locally.
Documentation search is powered by Algolia's DocSearch.
npm install to install the Node.js dependencies, including Astro (the site builder).npm run test (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets./bootstrap directory, run npm run docs-serve in the command line.Learn more about using Astro by reading its documentation.
You can find all our previous releases docs on https://getbootstrap.com/docs/versions/.
Previous releases and their documentation are also available for download.
Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the Code Guide, maintained by Mark Otto.
Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at https://editorconfig.org/.
Get updates on Bootstrapβs development and chat with the project maintainers and community members.
irc.libera.chat server, in the #bootstrap channel.bootstrap-5).bootstrap on packages which modify or add to the functionality of Bootstrap when distributing through npm or similar delivery mechanisms for maximum discoverability.For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we adhere to those rules whenever possible.
See the Releases section of our GitHub project for changelogs for each release version of Bootstrap. Release announcement posts on the official Bootstrap blog contain summaries of the most noteworthy changes made in each release.
Mark Otto
Jacob Thornton
Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!
Thanks to Netlify for providing us with Deploy Previews!
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
Thank you to all our backers! π [Become a backer]
Code and documentation copyright 2011-2025 the Bootstrap Authors. Code released under the MIT License. Docs released under Creative Commons.