Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Github fork of Christian Bach's tablesorter plugin + awesomeness ~
JavaScript CSS HTML

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.




  • Multi-column alphanumeric sorting and filtering.
  • Multi-tbody sorting - see the options table on the main document page.
  • Supports Bootstrap v2 and 3
  • Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. Add your own easily.
  • Inline editing - see demo
  • 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+, Chrome 5.0+.
  • Small code size, starting at 25K minified
  • Works with jQuery 1.2.6+ (jQuery 1.4.1+ needed with some widgets).
  • Works with jQuery 1.9+ ($.browser.msie was removed; needed in the original version).


Special Thanks

  • Big shout-out to Nick Craver for getting rid of the eval() function that was previously needed for multi-column sorting.
  • Big thanks to thezoggy for helping with code, themes and providing valuable feedback.
  • Big thanks to ThsSin- for taking over for a while and also providing valuable feedback.
  • Also extra thanks to christhomas and Lynesth for help with code.
  • And, of course thanks to everyone else that has contributed, and continues to contribute to this forked project!

Change Log

View the complete listing here.

Version 2.15.8 (3/12/2014)

  • Filter widget

    • Search delay is no longer ignored.
    • Fixes issues #544 & #545
    • Thanks to @dturkenk for this contribution!
  • Align Character widget (beta)

    • Added this widget to help align cell content on a character (space, decimal, etc).
    • Check out the demo!

Version 2.15.7 (1/25/2014)

  • Core

    • Minor natural sort algorithm optimization
    • Added namespace which should contain a unique namespace for each table; it is used when binding to event listeners.
  • Build table widget

    • Removed inappropriate empty table console message when initializing.
    • build table widget documentation update (includes <head> scripts & css)
    • Fixed nested accordions
  • Column selector widget

    • Setting the columnSelector_saveColumns option to true now saves the "auto" state. Fixes issue #517.
  • Filter widget

    • Use the new namespace option to use with event listeners. Fixes issue #535.
  • headerTitles widget

    • Sorry for all of these breaking changes, I should have left this widget in beta.
    • The headerTitle_prefix, headerTitle_text, headerTitle_numeric options has been replaced, in lieu of the new ouput options; sorry for no deprecation notice.
    • Added headerTitle_useAria, headerTitle_tooltip, headerTitle_output_sorted, headerTitle_output_unsorted, headerTitle_output_nosort, headerTitle_cur_text, headerTitle_cur_numeric, headerTitle_nxt_text, headerTitle_nxt_numeric, headerTitle_type & headerTitle_callback options. See the headerTitles widget demo for more details.
    • Added "refreshHeaderTitle" method to force the widget to update.

Version 2.15.6 (3/7/2014)

  • Doc

    • Added docs for $.tablesorter.language which contains the text used in the aria-label for the header
    • Update isValueInArray & sortAppend docs.
  • Core

    • Destroy now unbinds the updateCache method properly
    • Update $.tablesorter.isValueInArray function & sortAppend option. Fixes issue #523.
    • All test dates are now time zone & DST independent. Fixes issue #516.
    • Added tests for sortForce, sortAppend, sortMultiSortKey and sortResetKey.
    • Cache natural sort regex.
    • Date parsers now return the original cell text instead of an empty string when encountering invalid dates. Sort of fixes issue #531.
    • Event fixes:
      • Sort events will now only show when the table is being sorted; previously when updating an unsorted table, sort events would fire.
      • The updateComplete event now fires after every triggered update (update, updateRows, updateAll, updateCell & addRows)
      • Updated pager to correctly trigger the updateComplete event when using ajax.
      • Added unit tests to ensure these events fire on an empty table.
      • Fixes issue #532
  • ColumnSelector widget

    • Make column disable, visible & invisible methods consistent. Fixes issue #519
  • Filter widget

    • Preset filter searches (set by data-value on the header) work again. Fixes issues #511 & #525.
    • Add note to docs about adding a placeholder. Fixes issue #522.
    • Filter build select function no longer causes a javascript error on empty tables. Fixes issue #528.
  • Grouping widget

    • The collapsed option once again shows the group headers. Fixes issues #514 & 533
    • Add group_saveGroups & group_saveReset options:
      • The group_saveGroups option (true by default) saves the group name of any collapsed groups (requires group_collapsible to be true)
      • The group_saveReset option (null by default) contains a jQuery selector string or jQuery object pointing to an element to be used to clear the saved groups.
      • Both of these options require the storage utility script contained within the jquery.tablesorter.widgets.js file.
      • Fullfils feature request of issue #514.
    • Added details about using regular expressions within the group_separator option.
  • Header Titles widget (headerTitles)

    • New widget which adds the current sort to the header title attribute.
    • It distinguishes between a text and numeric sort and includes the current sort direction
    • A prefix can be included.
    • By default, an ascending sort shows either "A - Z" or "0 - 9", or "Z - A" or "9 - 0" for descending sorts.
    • Note that date columns will show as numeric
    • Fixes issue #529.
  • Pager (addon & widget)

    • Ensure empty array [] and array of empty strings ['', '', ''] evaluate as the same when checking if the filters have changed. Fixes issue #202 (again).
    • Compare totalRows vs. totalPages when preventing an ajax call.
    • Changes to make the updateComplete event fire, but because of the asynchronous nature of ajax, it fires before any sortEnd events. It may take some more work to resolve this, if it becomes a concern.
    • Attempted to fix pager row count issue. See issue #455.
  • Miscellaneous

    • Pager custom controls (beta) now shows no pages on a single page. Fixes issue #518
    • Increase Bootstrap 3 theme css specificity. See issue #515
    • Checkbox parser no longer causes a js error when a checkbox doesn't exist.

Version 2.15.5 (2/23/2014)

  • Pager widget now initializes properly when using ajax. Fixes issue #510.

Version 2.15.4 (2/22/2014)

  • Add "updateCache" method
    • This method updates the parsers, if undefined, then updates the internal cache.
    • Used by the pager (addon & widget) to update the internal cache after an ajax update.
  • Pager (addon & widget)
    • Fixed several undefined variable javascript errors. Fixes issue #509.
    • Fixed an issue with recursion in the pager widget - removed several unnecessary "applyWidget" methods.
    • Now uses the "updateCache" method after the table is rendered using ajax.
Something went wrong with that request. Please try again.