Skip to content
Github fork of Christian Bach's tablesorter plugin:
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell.

See the full documentation



  • Multi-column sorting.
  • Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. Add your own easily
  • Support for ROWSPAN and COLSPAN on TH elements.
  • Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria).
  • Extensibility via widget system.
  • Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+.
  • Small code size.
  • Works with jQuery 1.2.3+


Included all original document pages with updates from my blog post on undocumented options.


Change Log

View the complete listing here.

Version 2.0.31 (2012-2-27)

  • Added sortRestart option:
    • When true, this option resets the sort direction so that clicking on an unsorted column will now sort in the sortInitialOrder direction.
    • Clicking on a single column to cancel a multi-sorted table may not initially sort as expected.
    • Requested by severa in issue #30. Thanks!
  • Made some sortReset fixes:
    • Columns widget will now clear it's styling when the sort has reset.
    • Added a demo.
  • Changed the filter widget inputs to be of a search type:
    • Currently only supported by webkit.
    • Requested by cr125rider in issue #29. Thanks!
  • Updated sortLocaleCompare documentation since it was explained incorrectly.
  • Did some general code cleanup and some optimization.

Version (2012-2-20)

  • Modified the "filter" widget to disable the input window instead of setting it with display none. Now the input is disabled and a "disabled" class is applied to allow for further styling.

Version 2.0.30 (2012-2-20)

  • Fixed the total mess I just made with the addWidget init functionality... I need a vacation :P

Version 2.0.29 (2012-2-20)

  • Fixed a problem with the addWidget init function which apparently was always being called, even if you didn't want it! Fix for issue #28. Thanks to thezoggy for helping with troubleshooting!
  • Minor cleanup of sorting class names code.

Version (2012-2-16)

  • Modified the plugin pager to ignore child rows. Fix for issue #27.

Version 2.0.28 (2012-2-1)

  • Added a new function to widgets called "init" which is called upon initialization, before any of the widgets are applied.

    • I added it to allow the "saveSort" widget to get the saved sort data (localStorage or cookie) before the initial sort was applied.
    • The "saveSort" widget is still compatible with the original tablesorter, but the original version will call all of the widgets twice on initialization, if using the "saveSort" widget.
    • New add widget format is as follows:

          id: 'myWidget',
          init: function(table, allWidgets, thisWidget){
            // widget initialization code - this is only run ONCE
            // but in this example I call the format function because
            // I want to keep it backwards compatible with the original tablesorter
            thisWidget.format(table, true);
          format: function(table, initFlag) {
            // widget code to apply to the table AFTER EACH SORT
            // the initFlag is true when format is called for the first time, but
            // only if it is called from the init function

Version 2.0.27 (2012-1-31)

  • Added sortReset option
    • Setting this option to true, allows you to click on the header a third time to clear the sort
    • Clearing the sort DOES NOT return the table to it's initial unsorted state.
  • Added saveSort widget
    • This widget will save the last sort to local storage, and will fallback to cookies.
    • The widget does use the JSON.stringify function which is not fully supported (IE7), so if you plan to support it and use this widget, please include this JSON library.
  • Fixed pager page size not sticking. Fix for issue #24.
Something went wrong with that request. Please try again.