Handsontable is a JavaScript/HTML5 Spreadsheet Library for Developers
Failed to load latest commit information.
demo Update demo pages and add numbro to bower dependency. #3487 Jun 24, 2016
dist 0.26.0 Jun 27, 2016
lib Fix autoResize text editor on focus. #3394 May 19, 2016
plugins Replace jQuery to window.jQuery Jun 6, 2016
src 0.26.0 Jun 27, 2016
tasks Added modularization by hot-builder. #2072 Apr 10, 2015
test/jasmine 0.26.0 Jun 27, 2016
.bowerrc refactor Heatmaps demo to use Chroma.js; move to "Integrations" menu Jun 12, 2014
.editorconfig Added .editorconfig file. See http://editorconfig.org/ for details. Jan 20, 2014
.gitattributes Added gitattributes to stop git complaining about CR/LF Nov 12, 2012
.gitignore Update .gitignore Jul 24, 2015
.jscsrc Updated jscs rules Oct 1, 2015
.jshintignore Add jshint support to Gruntfile and fixed some typo based on jshint spec Dec 4, 2014
.jshintrc Changes necessary for filter by value functionality Mar 2, 2016
.npmignore Update .npmignore file Mar 21, 2016
.travis.yml Set timezone for tests. #3254 Feb 19, 2016
CHANGELOG.md 0.12.0 Nov 27, 2014
CNAME Rename CNAME_ to CNAME May 15, 2013
CONTRIBUTING.md Update contributing text Apr 13, 2015
Gruntfile.js Replace Numeral into Numbro as a main library for numbers formatting. #… Jun 21, 2016
LICENSE Add better support for npm dependencies and support for injecting LIC… Nov 3, 2015
README.md Update documentation Apr 11, 2016
bower.json 0.26.0 Jun 27, 2016
handsontable.jquery.json 0.26.0 Jun 27, 2016
index.html Add new functionality simultaneously manual resizing columns and rows. Apr 5, 2016
package.json 0.26.0 Jun 27, 2016
update.json 0.12.0 Nov 27, 2014


Handsontable Build Status

Handsontable is a data grid component with an Excel-like appearance. Built in JavaScript, it integrates with any data source and comes with features like data validation, sorting, grouping, data binding or column ordering. Actively supported by the Handsoncode team and the GitHub community.

Check out the demos at http://handsontable.com/examples.html or fork the example on JSFiddle to see Handsontable in action.

Quick start

  1. A recommended way to install Handsontable is through Bower package manager using the following command:

    bower install handsontable --save

    Alternatively, you can download it in a ZIP file.

  2. After Handsontable is downloaded, embed the code into your project. All the files that you need are in the dist\ directory:

    <script src="dist/handsontable.full.js"></script>
    <link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
  3. Then, create a new Handsontable object, passing a reference to an empty div as a first argument. After that, load some data if you wish:

    <div id="example"></div>
      var data = [
        ["", "Kia", "Nissan", "Toyota", "Honda"],
        ["2008", 10, 11, 12, 13],
        ["2009", 20, 11, 14, 13],
        ["2010", 30, 15, 12, 13]
    var container = document.getElementById('example');
    var hot = new Handsontable(container,
       data: data

API Reference

AMD support

If you use a modular script loader than Handsontable is not bound to the global object and will fit nicely in your build process. You can require Handsontable just like any other module.

require(['handsontable'], function(Handsontable) {
    var hot = new Handsontable(document.getElementById('example'), {
      data: [[1, 2, 3, 4], [1, 2, 3, 4]]

CommonJS module support

If you use a CommonJS compatible environment you can use the require function to import Handsontable.

var handsontable = require('handsontable');

To bundle handsontable with Browserify you must specify the module names of all required modules by Handsontable:

browserify main.js -o bundle.js -r moment -r pikaday -r zeroclipboard


Please follow this guidelines when reporting bugs and feature requests:

  1. Use GitHub Issues board to report bugs and feature requests (not our email address)
  2. Please always write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.
  3. If possible, please add a JSFiddle link that shows the problem (start by forking this fiddle). It saves us much time.
  4. If you can't reproduce it on JSFiddle, please add a screenshot that shows the problem. JSFiddle is much more appreciated because it lets us start fixing straight away.

Thanks for understanding!


Handsontable is compatible with IE 9+, Firefox, Chrome, Safari and Opera.

Want to help?

Please see CONTRIBUTING.md


To see the list of recent changes, see Releases section.


The MIT License (see the LICENSE file for the full text)


You can contact us at hello@handsontable.com.