Google-styled theme for Bootstrap.

  • By Tim O'Donnell
  • Last update: Dec 21, 2022
  • Comments: 13

TODC Bootstrap logo

TODC Bootstrap

A Google-styled theme for Bootstrap.
Explore TODC Bootstrap docs »

Report bug · Request feature

Table of contents


This is a Google-styled theme for Bootstrap. Because I'm a fan of the new Google UI seen in Gmail, Docs, Calendar, etc, I decided to reproduce the look of these new UI elements for my own personal use. The project's goal isn't UI parity with Google Apps -- it's feature parity with Bootstrap, themed with Google's UI in mind.

TODC Bootstrap was created by Tim O'Donnell, and maintained with the support and involvement of the community.

Quick start

Several quick start options are available:

NOTE - After cloning/installing todc-bootstrap you must run grunt checkout-bootstrap from the todc-bootstrap directory. This will download the correct version of the Bootstrap source.

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


devDependency Status CSS gzip size JS gzip size JS gzip size

TODO - Configure BrowserStack

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:

└── dist/
    ├── css/
    │   ├── bootstrap-grid.css
    │   ├──
    │   ├── bootstrap-grid.min.css
    │   ├──
    │   ├── bootstrap-reboot.css
    │   ├──
    │   ├── bootstrap-reboot.min.css
    │   ├──
    │   ├── bootstrap-utilities.css
    │   ├──
    │   ├── bootstrap-utilities.min.css
    │   ├──
    │   ├── bootstrap.css
    │   ├──
    │   ├── bootstrap.min.css
    │   ├──
    │   ├── todc-bootstrap-utilities.css
    │   ├──
    │   ├── todc-bootstrap-utilities.min.css
    │   ├──
    │   ├── todc-bootstrap.css
    │   ├──
    │   ├── todc-bootstrap.min.css
    │   └──
    └── js/
        ├── bootstrap.bundle.js
        ├── bootstrap.bundle.min.js
        ├── bootstrap.esm.js
        ├── bootstrap.esm.min.js
        ├── bootstrap.js
        ├── bootstrap.min.js

We provide compiled CSS and JS (bootstrap.*, todc-bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*, todc-bootstrap.min.*). source maps (bootstrap.*.map, todc-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.


This is being tested in the latest versions of Chrome, Firefox, and IE8+.

The following projects are specifically designed for use with todc-bootstrap:


  • SASS - for compiling .scss files into CSS
  • Bootstrap - this will be automatically checked out, if necessary, during the build process

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.


TODC Bootstrap's documentation, included in this repo in the root directory, is built with Hugo and publicly hosted on GitHub Pages at 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 site/assets/js/src/search.js file.

Running documentation locally

  1. Run npm install to install the Node.js dependencies, including Hugo (the site builder).
  2. Run npm run test (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
  3. From the root /todc-bootstrap directory, run npm run docs-serve in the command line.
  4. Open http://localhost:9002/ in your browser, and voilà.

Learn more about using Hugo by reading its documentation.

Documentation for previous releases

You can find all our previous releases docs on

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.

Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at


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 TODC Bootstrap.

Releases will be numbered with the following format:


The first set of <major>.<minor>.<patch> is the Bootstrap version while the second set is the todc-bootstrap version.

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.


Tim O'Donnell


BrowserStack Logo

Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!

Copyright and license

Copyright 2011-2020 Tim O'Donnell. Code released under the MIT license. Docs released under Creative Commons.

NOTE This project was previously and incorrectly licensed under the Public Domain. It has now been changed to be compatible with Bootstrap's current license.


Inspired by Bootstrap and, of course, Google.



  • 1

    Verify we still match Google styles

    • [x] Tweak the tooltip style
    • [x] Pager: square off the corners
    • [x] Breadcrumbs: Use the inverse of the Google Support breadcrumb
    • [x] Accordion/Collapse: Model after the Google Support accordion
    • [x] Carousel: some simple color changes (e.g. darker greys/blacks) and perhaps remove the gradient
    • [x] Google style chevrons that can be used in the carousel, breadcrumbs, pager, etc
  • 2

    Bootstrap 3

    Some things to consider for upgrading this project to Bootstrap 3. Please see here for the complete list of changes for Bootstrap 3, twitter/bootstrap#6342

    A build of this project using Bootstrap 3.0.0 is available here,

    • [x] Change license to MIT. Stated here
    • [x] The .nav-list has been re-designed to look like the BS2 sidenav. Should this be used as the base and then use .nav-list-google to get the current functionality? This would be similar to the way tabs are currently handled. This would simplify docs.css and give another nice navigation option.
    • [x] Submenus are currently listed as being dropped. Should they be retained in this project or follow core?
  • 3

    Google Style Navbars

    Here are my ideas on how we can implement the different navbars Google uses:

    Google uses two variants of a navbar in their webpages:

    • has the standard black google bar
    • does not have that bar, nav is separated into two sections, a header with logo & search, and then a bar of links.

    We want to support both options!

    Gmail-esque Navbar

    We style the regular navbar-inner class to be just like gmail and the html / css class structure could remain the same.

    Developer-esque Navheader & Navbar

    • We use a new class on the div.navbar - .navbar-google to indicate the Developer-esque nav theme
    • Add a new div.navbar-header class where content could be placed (logo, search bar, etc.)
    • Style the ul.nav to be similar to the tabs on
        <div class="navbar navbar-google">
            <div class="navbar-header">
                <div class="container">
                    <!-- here goes search bar / logo content -->
            <div class="navbar-inner">
                <div class="container">
                    <!-- normal bootstrap structure -->
  • 4

    Should no :focus outline when :active

    Note: Browser add focus and active status when you ~~~mouseup~~~ mousedown a element

    Now 2017-03-27 19_40_41-css todc bootstrap

    Expect 2017-03-27 19_41_32-google translate

  • 5

    Default branch name

    Hi @todc,

    What are your thoughts on renaming the "master" branch to "main"? Bootstrap did it here c28934cb1871d6b6bd6a866660493a1137de17c6.

    If you would like to change the name, I don't have access to the repository settings to change the default branch. I can take care of everything else and then the default can be changed.


  • 6

    Top navigation and the items.

    Hi guys,

    I've just started using TODC and getting two issues. First one is the top padding when top navigation is top fixed position. The second is that not sure why menu items got shrank.


  • 7

    Add Card UI components

    Can you port some of the features from bootplus?

    especially the News Card, People Card and People Hover Card

  • 8

    W3C CSS Validator for todo-bootstrap running to 300+ error

    I started noticing lately that the project website in itself has 300+ css validation errors.

    What could be the issues using the todo custom css style-sheet in any project?

  • 9

    New Logo

    Hi @todc,

    Bootstrap has changed its logo for version 5. bootstrap-logo-shadow

    I've updated the todc-bootstrap logo to reflect the new design. Let me know your thoughts. todc-bootstrap-logo


  • 10

    Add blue border on .btn-link:focus, and Proper "Proper fix #179"

    Add blue border on .btn-link:focus

    2017-03-30 00_13_19-css todc bootstrap

    Proper "Proper fix #179"

    It wrong at CSS priority. My wrong fix: 2017-03-29 22_30_00-css todc bootstrap Expect: 2017-03-29 22_29_50-css todc bootstrap

    Some reason cause I can't build, so you should build and test.

  • 11

    Nested dropdowns are broken in recent update

    I've just updated to the most recent version (cloned from repo), and while a lot of bugs are fixed (excellent job!), there is a small regression with the dropdowns, making the nested sub-menus badly aligned.

    See: Bad Dropdown

  • 12

    Don't include *.map in dist/css/todc-bootstrap.css, have a debug build

    So todc-bootstrap.css shouldn't be a debug build by default, maybe have a todc-bootstrap.debug.css which has the source map included.

    This is mainly due to using that file with other files in an app, and usually we bring in the non-minified version and minify things for production only. We generate our own source maps when needed, so this is kind of a hassle, since we need to use the min version (or edit the file, which is hardly acceptable).

  • 13

    Popout Menu is not visible outside of a scrollable area

    When creating a scrollable area and using a dropdown or any other popout element inside the scrollable area, it will not be shown outside of the overflow-hidden area.

    See example:


    I realize that this may not be directly related to the TODC port, but rather Bootstrap itself.

    In any case, a possible solution might be by using Tether.js: