Solution 1:

TabMixPlus allows multi-row tab bars.

It will allow you to choose the maximum number of rows you want it to show.

TabMixPlus Multi-row Tab Options

Solution 2:

Not exactly the answer to your question, but I find Tree Style Tab very useful. Gain some height and order, at cost of some width.

Screenshot Tree

Solution 3:

Tab Kit - Tab grouping, vertical tab tree, multi-rows, and various tweaks for power users.

alt text

alt text

Tutorial: Customize Tab Behavior in Firefox with Tab Kit

Solution 4:

EDIT: I am now using a different method, described in this answer: https://superuser.com/a/1352233/260948


To have the tabs on multiple rows, without icons, of a fixed size I do as follows. Tested on Firefox 57 through 61 on Linux Fedora, without the need of installing tab mix plus. All credits go to these posts:

https://www.reddit.com/r/firefox/comments/726p8u/multirow_tabs_firefox_ignores_mozboxflex/dngb8qf/

https://www.reddit.com/r/FirefoxCSS/comments/7dclp7/multirow_tabs_in_ff57/

If you do not want to remove the icons from the tabs, then omit the following two lines from the file that we are going to write:

/* Tabs: no icons */
.tabbrowser-tabs .tab-icon-image { display: none !important; }

So, let's get started.

Close firefox.

On Linux create the following folder, where RANDOMCHARACTERS will be different on each computer:

~/.mozilla/firefox/RANDOMCHARACTERS.default/chrome/

On Windows 7, create the following folder, where YOURUSERNAME is your username and RANDOMCHARACTERS will be different on each computer:

C:\Users\YOURUSERNAME\Application Data\Mozilla\Firefox\Profiles\RANDOMCHARACTERS.default\chrome\

On older versions of Windows the folder is:

C:\Documents and Settings\YOURUSERNAME\Application Data\Mozilla\Firefox\Profiles\RANDOMCHARACTERS.default\chrome\

On Linux or Windows, inside the above folder, create a file named userChrome.css

It must be plain text. Which means that you should create it using vi or kwrite or nano or notepad.

Inside this userChrome.css file, write all the following text. Then save and that's it. Enjoy :)

    @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* only needed once */

    /* Tabs: no icons */
    .tabbrowser-tabs .tab-icon-image { display: none !important; }

    /* all the following is to have multiple rows of tabs */

    /*
    The class .tabbrowser-tabs has been replaced with id #tabbrowser-tabs
    changed selectors accordingly
    */
    .tabbrowser-tab:not([pinned]) {
        flex-grow:1;
        min-width:150px !important; /* Needed important tag, width can be whatever you like */
        max-width: 150px !important; /* Makes the tabs always fill the toolbar width */
    }
    .tabbrowser-tab,.tab-background {
        height:var(--tab-min-height);
    }
    .tab-stack {
        width: 100%;
    }
    #tabbrowser-tabs .scrollbox-innerbox {
        display: flex;
        flex-wrap: wrap;
    }
    #tabbrowser-tabs .arrowscrollbox-scrollbox {
        overflow: visible;
        display: block;
    }
    #titlebar,#titlebar-buttonbox{
        height:var(--tab-min-height) !important;
    }
    #titlebar{
        margin-bottom:calc(var(--tab-min-height)*-1) !important;
    }
    #main-window[sizemode="maximized"] #titlebar{
        margin-bottom:calc(6px + var(--tab-min-height)*-1) !important;
    }
    #main-window[sizemode="maximized"] #TabsToolbar{
        margin-left:var(--tab-min-height);
    }
    #titlebar:active{
        margin-bottom:0 !important;
    }
    #titlebar:active #titlebar-content{
        margin-bottom:var(--tab-min-height) !important;
    }
    #tabbrowser-tabs .scrollbutton-up,#tabbrowser-tabs .scrollbutton-down,#alltabs-button,.tabbrowser-tab:not([fadein]){
        display: none;
    }

    /* This enables maximum width before scrollbar is shown */

    #main-window[tabsintitlebar] #tabbrowser-tabs {
        -moz-window-dragging: no-drag;
    }
    #tabbrowser-tabs .scrollbox-innerbox {
        max-height: none;
        overflow-y:auto;
    }