Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star half bd79095782ee4930099175e5ce7f4c89fa3ddabcd56fffcc7c74f6f2a2d46b27 (1 ratings)
Rated 4.5 out of 5
Subscribe to updates I use bootstrap

Statistics on bootstrap

Number of watchers on Github 122626
Number of open issues 441
Average time to close an issue about 15 hours
Main language CSS
Average time to merge a PR 1 day
Open pull requests 434+
Closed pull requests 321+
Last commit about 2 years ago
Repo Created almost 9 years ago
Repo Last Updated about 2 years ago
Size 115 MB
Homepage http://getbootstr...
Organization / Authortwbs
Latest Releasev4.0.0
Page Updated
Do you use bootstrap? Leave a review!
View open issues (441)
View bootstrap activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating bootstrap for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Sleek, intuitive, and powerful front-end framework for faster and easier web development.
Explore Bootstrap docs

Bootstrap Themes Job Board Blog

Table of contents

Quick start

Several quick start options are available:

  • Download the latest release.
  • Clone the repo: git clone https://github.com/twbs/bootstrap.git
  • Install with npm: npm install bootstrap
  • Install with yarn: yarn add bootstrap@4.0.0
  • Install with Composer: composer require twbs/bootstrap:4.0.0
  • Install with NuGet: CSS: Install-Package bootstrap Sass: Install-Package bootstrap.sass

Read the Getting started page for information on the framework contents, templates and examples, and more.


Slack Build Status npm version Gem version Meteor Atmosphere Packagist Prerelease NuGet peerDependencies Status devDependency Status CSS gzip size JS gzip size

Sauce Labs Test Status

What's included

Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:


We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). CSS 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, but not jQuery.

Bugs and feature requests

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 Jekyll 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. Working on our search? Be sure to set debug: true in the _scripts.html include.

Running documentation locally

  1. Run through the tooling setup to install Jekyll (the site builder) and other Ruby dependencies with bundle install.
  2. Run npm install to install Node.js dependencies.
  3. Run npm run test (or a specific NPM script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
  4. From the root /bootstrap directory, run npm run docs-serve in the command line.
  5. Open http://localhost:9001 in your browser, and voil.

Learn more about using Jekyll by reading its documentation.

Documentation for previous releases

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 http://editorconfig.org/.


Get updates on Bootstrap's development and chat with the project maintainers and community members.

  • Follow @getbootstrap on Twitter.
  • Read and subscribe to The Official Bootstrap Blog.
  • Join the official Slack room.
  • Chat with fellow Bootstrappers in IRC. On the irc.freenode.net server, in the ##bootstrap channel.
  • Implementation help may be found at Stack Overflow (tagged bootstrap-4).
  • Developers should use the keyword 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'll 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

Copyright and license

Code and documentation copyright 2011-2018 the Bootstrap Authors and Twitter, Inc. Code released under the MIT License. Docs released under Creative Commons.

bootstrap open issues Ask a question     (View All Issues)
  • over 3 years Class .custom-controls-stacked should clear floats
  • over 3 years Replace hardcoded breakpoints in Card, Carousel, Forms, Jumbotron, Modal, and Navbar
  • over 3 years Documentation nitpick
  • over 3 years Disabled collapse-link when document.ready
  • over 3 years Adding a tag (badge) in a button makes it taller
  • over 3 years Invisible border of input-group in inverse navbar
  • over 3 years Select text bad misaligned in Firefox with alpha 5
  • over 3 years pagination .page-link is underlined on hover
  • over 3 years Printing broken in IE11 and Firefox
  • over 3 years Buttons in container with data-toggle="buttons" don't get aria-pressed attribute
  • over 3 years .nav-link has padding when navbar is collapsed
  • over 3 years Modal title padding named wrong
  • over 3 years Collapse prevents radio button update
  • over 3 years carousel example is still using img-circle
  • over 3 years I'd like to be able to set .card margin-bottom indepedently of .card-header padding
  • over 3 years Provide a link to _variables.scss on website.
  • over 3 years Expand arrow gone from summary element
  • over 3 years Update grid classes to omit `xs` abbreviation
  • over 3 years ScrollSpy clears active nav-item on Safari when rubber-band scrolling past the top of page
  • over 3 years Column Count not working on alpha 5
  • over 3 years line-height is not specified for page-links
  • over 3 years Better hover/active customization in button mixin
  • over 3 years Responsive utility classes overlapping near breakpoint (ref: #20902)
  • over 3 years Support <script defer>
  • over 3 years Cannot read property 'offsetWidth' of undefined
  • over 3 years Follow up #20982 w/ active/open nav fixes
  • over 3 years popover 'Auto left' / 'Auto right' placement bug latest Chrome (Version 54.0.2840.71 (64-bit))
  • over 3 years v4 alpha 5 - navbar toggler inconsistencies
  • over 3 years Input-group within card-deck
  • over 3 years table-inverse : need a variable for hover, accent, active state
bootstrap open pull requests (View All Pulls)
  • Forms fixes: fieldset/legend, new .form-control-legend, accessibility advice
  • Update grunt-eslint.
  • Port v4 browser support tables to v3
  • Add $card-img-overlay-padding variable
  • .navbar-divider width: 1px=>$border-width
  • Extract $carousel-icon-width variable
  • Add `.w-100` as width: 100% utility class
  • Update Brazilian Portuguese translation's URL
  • v4: Forms cleanup
  • Fix #18406. Fixes form-inline with flex enabled
  • Use bootstrap-toc plugin for sidebar navigation in docs
  • Integrate postcss-flexbugs-fixes into build
  • Prevent double border on list-group in cards with no .card-block.
  • Carousel - Do not prevent on keydown for input and textarea
  • Mention contributors in License
  • Have same margin for <hN> as a <div> on .card-headers
  • Navbar improvements: dropdown support, margin/padding variables for navbar items, calculated spacer for body for fixed navbars
  • Tweak jQuery-not-found error message to mention required ordering
  • Add variables for popover
  • .input-group-addon line-height should be the same as .form-control
  • Flexbox enable list-group
  • Flexbox enable navbar
  • Add responsive clearfix utility classes
  • Tweak jQuery-not-found error message to mention required ordering
  • Port #18878 to v3
  • Fixed moved active class to a-tags. dashboard need fix.
  • Stop oversized images in .card-img-* from overflowing the card's boundaries
  • Update jQuery to 1.12.0
  • Added mobile toggles for responsive nav
  • Button toggling - trigger change event on input
  • Enabled ESLint and JSCS in Hound
  • Added explicit commentary to .card-* classes
  • Extended collapse panel example description.
  • remove empty sass if directives
  • CONTRIBUTING.md: Prohibit "+1" comments in favor of reactions
  • Add custom range styles
  • Explicitly state the ordering of cards in card columns in the docs
  • create mixin for .form-inline
  • Add jQuery and Tether to npm dependencies
  • Remove iOS virtual keyboard bug section from docs
  • Add variables for controlling button active/hover darken amount
  • Changed documentation for disabling the carousel pause functionality.
  • Updated documentation of the focus option from the modal component.
  • Update jQuery to v2.2.1.
  • Minor grammar improvements
  • Override margins and paddings on navbar-brand elements
  • Optimizes bootstrap dropdown
  • Add font colors to contextual table variants
  • Add $input-bg-focus and $input-color-focus variables
  • Remove unnecessary coupling and increased specificity in carousel
  • Add text-justify to responsive alignment classes
  • Added support for RTL
  • Warn if minimum width of smallest breakpoint != 0
  • Add positions utilities class
  • Show clearfix for examples for xs/sm devices
  • FIX: Part of Popover is outside boundaries of viewport
  • Correct dropdown examples
  • Suppress IE/Edge additional white/blue colors for focused <select>
  • Remove tab-focus mixin and add surgical `outline: none` where appropriate
  • Add GitHub issue template
  • Color contrast tweaks for V4
  • Dropdown tether
  • Use @border-radius and add $nav-tabs-border-radius variable
  • fix memory leak in tooltip $element
  • Update to normalize.css v4.0.0
  • more complete explanation of npm based use
  • Docs : Removed border from GitHub button
  • Fix issue #19270 (popovers and modals)
  • include jquery + tether deps for npm package. include gulp. Add .babe…
  • Add missing mix-col-span mixin
  • Add tooltip border color and width variables
  • Use $card-border-radius-inner for card-img border-radius
  • Update tooltip.js
  • Updated background properties using safe shorthands.
  • Update overview.md
  • Add dropdown classes for contextual background colors
  • Suggest alternative approaches for .hidden and .show in migration docs
  • Collapse plugin not finding trigger when targeting a class or multipl…
  • Fixed error of Tether getting destroy call second time (Tether 1.3.1)
  • Fix .input-group-btn overflowing its parent when Flexbox is enabled
  • remove references to $gray-* outside _variables.scss
  • Add contextual backgrounds for .table-inverse
  • Add @supports feature query for Carousel CSS 3D transforms
  • Darken middle border of certain split button dropdowns
  • Fix .embed-responsive class in flex container
  • Add disabled styling for .custom-select
  • Fix .embed-responsive class in flex container
  • use HTTPS
  • Strikethrough-when-checked and remove-when-checked checkboxes
  • Upgrade to babel 6.0
  • Tests: Switch from .then to .done to get synchronous operation
  • Fix: border removal affecting child tables
  • Update jQuery to v2.2.3.
  • Update jQuery to v1.12.3.
  • Remove reference to "loaded.bs.modal" event
  • v4: Navbar improvements
  • Alphabetized carousel options & added "ride" to it
  • Fix width scrolling problem with .card-deck
  • Dropdown: remove dependency to role="menu", role="listbox" a and li elements => fix keyboard navigation
  • added text-gray-dark class
  • fix the offcanvas example
  • Recursive copy of fonts
  • Fix heights of `<select>` elements to match `<inputs>` when using `.form-control`
  • Removal of unsupported vendor prefixes for @viewport
  • Dropdown perf - on keyboard nav, search for active item in the current dropdown rather than the whole document
  • Add support for contenteditable elements in Dropdowns -- Addresses: #19949
  • Remove forced default focus outline
  • Reset CSS position property when unpinning Affix
  • Add .h-100 (height:100%) utility class
  • Add new extra large size (.modal-xl) for .modal-dialog
  • Fix issue #16941 - HTML example in tooltip docs
  • Zero out the default margin-bottom on label.custom-file
  • Fix incorrect .row-margin when using odd gutter size
  • Made input[type="color"] squared instead of blocking across
  • Re-use 'between' mixin for 'only' mixin
  • add mixin/custom.scss file to be able to overide easily bootstrap mixins
  • Multiple data-targets for collapse plugin
  • Add media rules to nav items into toggleable navbar
  • Docs: Add link to Korean translation
  • Fixing bug described here: Multiple Tabs can become .active at once #20027
  • Custom Forms: Allow Chrome/Firefox feature that lets the user drag and drop into file inputs
  • alert.js: Avoid calling jQuery('#'), it's a syntax error in jQuery 3.0
  • Fix using which for MouseEvent in Dropdown
  • Dropdown: close menu when focusing outside element
  • Add .flex-*-unordered classes to reset Flexbox `order` CSS property
  • Add Wall of Browser Bugs entries for <dialog>
  • do not show tab when disabled
  • Fix modal being too wide on small devices
  • custom-control spacing
  • Update _navbar.scss
  • Updated documentation for #20123 (#20142)
  • Contextual background-inverse text color fix
  • Made modal.dispose work at any point in modal's lifecycle, prevented crashes if multiple modals are alive
  • Abbreviate CSS hex colors in pygments-manni.css
  • Only fix grid column collapsing when the column is empty
  • Add .col and .row-* classes to support flex-direction: column. Issue #20233
  • v4 hamburger icon fix
  • Docs: Optimize *.png with zopflipng -m
  • input[type="radio"] don't border-radius:0;
  • Add some properties to the list of property order in .scss-lint.yml
  • background-variant button hover
  • Fix small grammatical mistakes
  • Add "number" to popover content DefaultType
  • fix too many siblings activation in scrollspy
  • Switch to jQuery slim version.
  • .collapsing.width animation
  • Change broad helper to specific helper (a tiny docs edit)
  • Added breakpoint classes for margin and padding spacing
  • .form-control:focus customization
  • Fix dropdown example in docs (Fix #20410)
  • Upgrade to normalize.css v4.2.0.
  • Updated example screenshots
  • v4 - production's files for browsers (bower.json)
  • bower.json: Add Bowerder's `browser` field for minified JS & CSS
  • Resolves error preventing the dropdowns from working in the docs
  • Switch to `stylelint-config-bootstrap`
  • Updates .list-group-flush to not create a double border when placed inside a .card
  • Fix package.json
  • Update _navbar.scss to fix navbar items in wrong position when in state "collapse in", with any navbar-toggleable-*
  • Renames .img-rounded to .rounded
  • Fixes popover.js dynamically set title not displaying when previously hidden
  • v4: Move to npm scripts
  • V4 hamburger fix2
  • scrollspy: fix wrong activation of all nested links
  • More responsive text alignment utility classes
  • Update doc assets
  • Advanced truncate mixin with ability to determine width and text-wrap
  • Use more https URLs
  • Move Sauce credentials out of .travis.yml
  • V4: Add old .hidden-* classes to visibility utilities
  • Added information about the .panel-group class
  • Renamed contextual classes for tables
  • Popover inside modal
  • Fix segmented buttons in input group docs
  • Fix mixed-content warnings caused by CarbonAds.
  • Updated docs with extra auto resize example
  • Use .attr() instead of .prop() to get attribute
  • Add auto to `m-` spacer utility
  • add support for ol in tab plugin
  • adds a .custom-select-lg and makes .custom-select-sm use proper vars
  • update click state when hiding so can be shown again by trigger
  • prevent navigating to area href when modal target
  • Use card-spacer-y for vertical padding
  • Make .card class inside .card-columns display: block too
  • Fix Hound warnings for minified files.
  • Visibility mixin
  • Move Travis builds to container-based infrastructure.
  • Fix issue select[multiple] overflowing container
  • Fixed incorrect instructions: "Press ⌘ to copy"
  • Remove unused $variables in grid mixins
  • Use :*-of-type instead of :*-child so that <template>s don't break selectors
  • Change Scrollspy to add active class to nav item, nav link's parent
  • remove unnecessary loop
  • Update js docs overview blurb about accessing a plugin instance
  • Documentation link cleanup
  • Update documentation and test dependencies.
  • v4: Social meta tags
  • Prevent margin-bottom on vertical button groups
  • Update print styles borrowed from h5bp
  • Fixed progress bar color variables
  • Strip $ from copied shell commands.
  • Remove -webkit-overflow-scrolling:touch; due to an iOS Safari bug
  • [Fix #19849] Tabs are opened even if disabled.
  • Fix multi select box overflow
  • Make equal-width flexbox extend grid-column
  • Fix Collapse JS class not respecting the configured parent element
  • Fix #20566
  • v4.4 - Missing clearfix on docs for responsive navbar
  • Refs #17201: Use Tether as a non-window global variable, last try
  • Remove hard-coded value in button-outline-variant
  • Add container to tooltip options
  • v4: Dropdown units
  • v4: Customizable colors on custom form elements
  • v4: Document that all table styles are inherited
  • v4: Move Reboot's input border-radius override to .form-control
  • v4: The Utilities Update
  • Fix #20548
  • Use color variables consistently
  • Use .attr() method and cache array length
  • Remove classes at one time
  • Fixes 20614
  • Use multi-selector to remove the same event handler
  • Update _buttons.scss
  • Update _reboot.scss
  • Carousel: Only prevents default for ARROW_LEFT and ARROW_RIGHT keys
  • Remove borders on the top and/or bottom when .list-group-flush is the first and/or last child
  • Revert "Fix unescaped `#` in SVG data URLs"
  • switch to rgba for list-group border color
  • Added note about async tooltip('destroy')
  • Add alert-margin-bottom variable
  • Linked to slack
  • Closes #21055: Prevents ScrollSpy from clearing item when Safari rubberbands
  • Set line-height for page-links
  • Rename `.active` to `.show`
  • Refactor ESLint configuration.
  • Fix #20936 make inline checkbox/radio markup same as stacked
  • Change .tag print styles to .badge.
  • Update visual tests.
  • renamed modal-title-padding to modal-header-padding
  • Base text direction support for Bootstrap v4 JS widgets
  • Enlarges the clicking area for the alert close button
  • Made the background of the card header and footer transparent when .card-inverse'd
  • Left/right padding to modal on sm resolutions
  • Travis build infrastructure refresh.
  • Close #21090 - Fix aria-pressed attribute for buttons in container with data-attribute="buttons"
  • Feature/omit xs from grid
  • v4 - Add methods for determining if elements are shown, visible, expanded
  • in carousel example, replace img-circle by rounded-circle css class
  • Suppress spacebar keyup for dropdowns
  • Invalid visible items selector for dropdowns prevents arrow keys from working
  • Added responsive text sizing classes
  • Made input[type="color"] square instead of rectangular
  • resolved textual utility classes broken link
  • Add lint check that all variables are !default
  • Refactor Dashboard example.
  • Update Normalize to v5.0.0.
  • Remove extra media queries for setting gutters
  • Added $card-cap-color variable in .card-header and .card-footer
  • minor update to the .card-img class
  • Change scope of docs anchor preventDefault to include modals.
  • Accordion behavior with JQuery interface
  • Fix container with in navbar on smallest breakpoint
  • Harmonize navbar-brand, navbar-text and nav-link height
  • Make btn-block responsive
  • Navbar: break at correct viewport width and give option to be collapsed at no or all breakpoints
  • fix segmented buttons
  • JS Mangle private properties => reduce minified JS by 11.9% (4.8% gzipped)
  • JS constant rework => reduce minified JS by 7.5% (6.3% gzipped)
  • Carousel: fix reference to non-existing constant
  • Spacer vars with a more consistent doubling up pattern
  • Use existing key code constants in dropdown
  • Remove broken links
  • Add script to check for broken links in docs
  • Collapse module supports multi-target
  • Enhancement: btn-pill
  • css: table as block issues (corresponding to #21677)
  • Update tables.md
  • Table hover, accent, active variables for both table and table-inverse
  • Add doc example with badge links
  • Add alert divider (<hr>) example in docs
  • Allow customization of colors, background and shadow for active, hover, focus
  • Carousel - Add attributes from and to for Slid and Slide events
  • Use correct value for xs and sm breakpoints in documentation
  • Use native font stack for button, input, select and textarea
  • Remove reliance on regex in Util.getSelectorFromElement
  • Remove list-group-item-heading and list-group-item-text
  • Remove filter: alpha(opacity = 0);
  • v4: Remove focus styles from anchors in Reboot
  • Redefine grayscale variables
  • Use correct classes for `order` flexbox docs.
  • Remove unnecessary position and padding for alert close button
  • Fix image in <figure> can exceeds container width on Firefox
  • Creating a pull request for v4-dev and v4-dev-xmr
  • Support multiple targets for tabs
  • Fix Modal documentation about _handleUpdate method + move to public scope
  • fix distorted card images
  • Update tooltip.js getPosition()
  • Tabs/Scrollspy/.nav/.list-group/.active independent of markup (<nav>, .nav-item, <li> etc...)
  • Dropdown: refine handling of keydown in input and textarea
  • Fix padding with modal and fixed navbar
  • Prevent images in carousel-item to be stretched
  • HTMLElement.offset* by getBoundingClientRect()
  • Improve build tool to make it easier to maintain and more pleasant to use
  • numeric strings raise typecheck exception in tooltips
  • Fix .jumbotron-hr to .jumbotron hr
  • Allow to use Tab.js with list-group
  • Fix JS components console error "Error: <Component> is transitioning"
  • Use cssnano instead of clean-css => reduce minified CSS by 8.6% (4.9% gzipped)
  • Navbar: avoid double margin on toggle when positioned on the right within a container
  • Fix mixin media-breakpoint-only
  • Emoji Defaults
  • Rename `$navbar-*-toggler-bg` to `$navbar-*-toggler-icon-bg` since it's placed on .navbar-toggler-icon
  • Input-group inside d-flex with a tall item causes input and input-group-addon to be too tall
  • v4 Color update
  • `@mixin pagination-size()` doesn't apply line-height
  • Removed several unused scss variables
  • Rename .form-control-static to .form-control-readonly-plain
  • Pagination border-widths greater than 1px cause uneven borders betwee…
  • Nav Pills with open dropdown don't reflect the nav-pills active state…
  • Add responsive headings
  • First child of input group segmented buttons are off by $input-btn-border-width
  • Only add CSS transitions on Buttons for background-color, border-colo…
  • `$input-height` and `$input-height-*` should include borders, no need to calculate select.form-control heights, and calculate form validation icon sizes
  • v4 - Remove Tether for Popper
  • add webpack to documentation
  • Update nav and navbar HTML markup
  • Form tweaks
  • #20925 [Chrome] Cards inside .card-columns stack differently
  • Note about hiding tooltips/popovers. Closes #21490
  • docs - accessibility - add a main tag for content
  • Form validation tweaks
  • Updates docs to match Tooltip type checking
  • fix tooltips margins
  • Add border width to input height variables
  • Enhance Positioning Options for Tooltips & Popovers
  • Add missing flex-fill utility
  • Adding zoom callout for .form-control-sm
  • Translucent .input-group-addon borders
  • Use class name variables in selectors
  • Add `docs-clean` task to watch scripts
  • fix(css): .dropdown-menu-right positioning
  • Add pointer-events declarations to modal for easier custom close handling
  • Progress bars: center labels vertically and set height on parent .progress
  • Ensure that button.btn and a.btn have the same cursor
  • Sync code shown with code actually used
  • Make anchors in .thead-inverse elements white
  • Fix 22616 - Modal close button without title is left aligned
  • Fix border on input group elements and custom form inputs
  • Move the gap between inline checkboxes to right
  • Update Dependencies (REUPLOAD)
  • Busy sliding event
  • Form states: set form-control state based on form-group and handle sm and lg size
  • add Micon
  • Removed menu item from navbar example
  • Example Blog post card text overflowing bug
  • Override .custom-select width in .form-inline
  • Dropdown. Skip element disabled via attribute when using keyboard navigation
  • Add basic position to dropup/right/left and dropdown-menu-right
  • Button group refactoring and fixes similar as #25279
  • Allow to customize vertical margin of `nav-divider` mixin
  • Extend `$grid-breakpoints` and `$container-max-widths` maps
  • Fix tab.js Problem
  • Pagination move `.page-link:focus` outline value to variable `$pagina…
  • Input group CSS bug fixes
  • Input group tests and tweaks
  • Explictly add `cursor:pointer` to dropdown menu items
  • use bugify without custom jekyll plugin
  • use callout without custom jekyll plugin
  • A better `.navbar` align and a small optimization
  • Remove `position: relative` from grid columns
  • Prevent word-wrap
  • feat: improvements of `.navbar-expand .dropdown-menu`
  • Fix carousel transition duration
  • Update `.sr-only` mixin and utility
  • Card tables
  • Add pure css button (group) toggle
  • Updates the native and custom checks to use flexbox
  • Allow to use Tooltips/Popovers in Shadow DOM
  • Docs: mark up contents ASCII trees as semantically meaningful nested lists
  • Expand all docs sidebar links
  • Enable wrapping for elements in modal-footer
  • Linked card
  • Update themeing docs for more clearly how to remove from map
  • Allow non-string content as breadcrumb divider
  • Changing color of the .primary-button
  • Variable darken percentage for emphasized links
  • add missing properties
  • Remove `show` class from example code
  • set color to form-control-plaintext
  • use $input-bg for $custom-select-bg
  • Create a variable for label margin bottom
  • Make dark tables readable for print
  • Ensure modal scrolling is contained
  • Added Viewport Height & Width helpers
  • Brush up vertical rhythm of form-check in docs. Closes #25546
  • Separate issue templates, add support doc
  • Clean shell scripts
  • Adding a variable to handle the change of a modals border-radius.
  • Clarify the necessary `data-target`/`href` attribute for carousel controls
  • Fix one-by-one flush lists items borders
  • Update list-group-flush top/bottom item border setting
  • Add color value to table-row-variant mixin
  • Multiple form-controls in input-group
  • Remove loose HEX values
  • Remove unused variable
  • Fixes examples issue #25664 and #25388
  • Variable transition durations
  • Replace img-fluid by w-100 in Carousel docs to conform with HTML example
  • modal input autofocus attr & keyboard nav
  • Disable link functionality on disabled btn-link
  • Making use of `prefers-reduced-motion` media query
  • create responsive containers
  • Fix `custom-forms` heights and position
  • Consolidate cursor resets in Reboot
  • Fix #25813 by adding extra columns to table
  • wip feat(css): adds `.card-bg`
  • Add Sinon to do better unit test
  • Allow customization of breadcrumb border radius
  • Collapse with flex elements - simple approach
  • enables docsearch in development env
  • use example without custom jekyll plugin
  • Add touch support on our carousel with Hammer
  • Add box-shadow utilities
  • fix(table): Add border color relative to theme for accessibility
  • re-use gray for bd-example border / background
  • Fixes validation tooltip position on inline forms
  • fix(js): removes .modal .navbar-toggler margin
  • Allow background images for active buttons
  • Improve order utilities doc
  • Fix incorrect class .custom-file-control to .custom-file-label
  • `.input-group-text` vars
  • Fix nested calc
  • Fixes examples issue #25684
  • Fix caret alignment
bootstrap questions on Stackoverflow (View All Questions)
  • Parsley JS always returns false on Valid Form in Bootstrap Modal
  • Bootstrap Modal Confirmation
  • Angular ui bootstrap focus first invalid tab on submit
  • How to set position of bootstrap slider images to center?
  • changing data-target in bootstrap using CSS(first preference) or javascript(secnd preference)
  • Bootstrap 3 .img-responsive images are not responsive inside fieldset in FireFox
  • Bootstrap: display a tooltip in a different column
  • Can some one shed some light on how to redirect an action controller to a specific bootstrap tab
  • TypeError: $(...).modal is not a function with bootstrap Modal
  • Line up a form_for button in a bootstrap btn-group in rails
  • bootstrap not working with chrome (firefox and ie work fine)
  • How to make modal dialog open at page load in bootstrap
  • How to use Bootstrap CDN?
  • Disallow twitter bootstrap modal window from closing
  • How to close Bootstrap modal only when user clicks on close image?
  • How to properly render dc.js datatable using jquery and Bootstrap
  • Select2 4.0.0 Bootstrap theme
  • Why bootstrap is not loaded in django admin
  • Bootstrap column with sub grid?
  • Bootstrap wysiwyg not able to add hyperlinks in IE 10 & IE 11
  • How to use "change event" in bootstrap-wysiwyg?
  • bootstrap-wysiwyg loses focus
  • Bootstrap 3 - NavBar Cross-browser issue
  • Bootstrap tab validation not working
  • I rotated some text in bootstrap, and now it is stuck an inch from the left onscreen
  • Add Bootstrap Tooltip when Bootstrap Switch is Disabled
  • Bootstrap Collapse menu not collapsing?
  • Will_paginate gem conflicts with Bootstrap built in panel
  • Bootstrap - select and button next to each other
  • Bootstrap responsive video but with max-width AND centered
bootstrap list of languages used
bootstrap latest release notes
v4.0.0 v4.0.0

Our first stable v4 release!


  • Brand new examples and overhauls for existing ones.
  • Additional border utilities have been added and the default border-color for them darkened from $gray-200 to $gray-300.
  • Pagination focus styles now match button and input focus state.
  • Added responsive .order-0 classes to reset column order.
  • Improved examples of form validation documentation by adding tooltip examples and more.
  • New documentation added for using our CSS variables to the Theming page.
  • Improved consistent across browsers when printing.
  • Sass map extends and docs
  • New and improved print display utilities

Project board

For more details, visit https://github.com/twbs/bootstrap/issues/25098.

v4.0.0-beta.3 v4.0.0-beta.3

Breaking changes

As mentioned in our Beta 2 release, we needed to make a few more breaking changes in Beta 3. We've summarized them here and in our migration docsbe sure to read them!

  • Rewrote native and custom check controls. Both browser default and custom checkboxes and radios now have simpler markup after removing the <input> from the <label>. Now, all checkboxes and radios have a parent <div> and sibling <input> and <label> pair. This is essential for form validation and disabled inputs because we can use the input's state to style the label.

    In addition, custom checkbox and radio elements no longer have a .custom-control-indicator. This is generated from the new .custom-control-label.

  • Input groups were rewritten with specific .input-group-{prepend|append} classes. The new approach allows us to support validation styles and messages within input groups, while also adding support for custom selects, custom file inputs, and multiple .form-controls.

  • Responsive tables are once again parent classes to avoid accessiblity issues with changing a <table>'s display.

  • Deleted the .col-form-legend class, consolidating it's styles into the .col-form-label class.

Read the Migration page for further details.

More highlights

In addition to the breaking changes, we've addressed a few more general issues that may impact your project.

  • Restored cursor: pointer to non-disabled links, buttons, .close, navbar toggler, and pagination links.

  • Added a new vertically centered modal option with .modal-dialog-centered.

  • Added new dropleft and dropright variants for dropdowns in #23860.

  • Our npm package no longer includes any files other than our source and dist JavaScript and CSS files. If you previously relied on our running our scripts via the node_modules folder, you'll need to update your build tools.

  • Print styles have moved to bottom of the import stack to properly override styles.

For more details on this release's changes, take a look at the Beta 3 ship list issue, as well as the Beta 3 project.

v4.0.0-beta.2 v4.0.0-beta.2

Beta 2 is here! Read the full ship list for details on what issues were closed and PRs merged.


  • Improved Sass map customization with #23260. With this change, it's now possible to override specific key value pairs instead of resetting the entire map, ideal for color scheme customization.
  • Restored grid .offset- modifiers in #23445. Originally our intent was to supplement this with our margin utilities, but we underestimated the appeal of fixed number column offsets.
  • Remove unnecessary color from .badge, and it's associated $badge-color variable, in #23529.
  • Rename grayscale function to gray to avoid breaking CSS native grayscale filter in #23579.
  • Renamed .table-inverse, .thead-inverse, and .thead-default to .*-dark and .*-light, matching our color schemes used elsewhere in #23560.
  • Responsive tables now generate classes for each grid breakpoint, meaning we've added .table-responsive-{sm,md,lg,xl} to the already present .table-responsive. You might need to adjust your usage depending on when you want a table to resize. See #22804.
  • Include two new dist files which contain Popper.js inside bootstrap.bundle.js and bootstrap.bundle.min.js. See #23735.
  • Dropped support for Bower as they've deprecated the package manager. See #23568.
  • Switched breadcrumbs from float to flexbox in #23683.
  • Added new CSS variables in #23761.
  • Switched to Stylelint in #23572.
  • New Theming page in the docs from #23611
  • #23943: Changed the color-yiq from a mixin that included the color property to a function that returns a value, allowing you to use it for any CSS property. For example, instead of color-yiq(#000), you'd write color: color-yiq(#000);.
  • New and improved theming in #24429.
Other projects in CSS