<img width="360" alt="Logo of Handsontable data grid" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-black.svg?raw=true"/>
Use it with JavaScript, TypeScript, or frameworks such as
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper" target="_blank">React</a>,
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular-wrapper" target="_blank">Angular</a>, and
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue3" target="_blank">Vue</a>. With its spreadsheet-like editing features, it’s perfect for building data-rich internal apps. It allows users to enter, edit, validate, and process data from various sources. Common use cases include resource planning software (ERP), inventory management systems, digital platforms, and data modeling applications.
Website — Documentation — Themes — API — Community
<img width="780" alt="JavaScript data grid preview" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-light-theme.png?raw=true"/>
Below, you'll find the installation guide for the JavaScript component. If you're using a specific framework, refer to its dedicated wrapper for installation instructions:
You can also use Yarn, NuGet or load the package from CDN.
bash
npm install handsontable
```html
```
```js import Handsontable from 'handsontable';
const element = document.getElementById('handsontable-grid');
new Handsontable(element, { data: [ { company: 'Tagcat', country: 'United Kingdom', rating: 4.4 }, { company: 'Zoomzone', country: 'Japan', rating: 4.5 }, { company: 'Meeveo', country: 'United States', rating: 4.6 }, ], columns: [ { data: 'company', title: 'Company', width: 100 }, { data: 'country', title: 'Country', width: 170, type: 'dropdown', source: ['United Kingdom', 'Japan', 'United States'] }, { data: 'rating', title: 'Rating', width: 100, type: 'numeric' }, ], rowHeaders: true, navigableHeaders: true, tabNavigation: true, multiColumnSorting: true, headerClassName: 'htLeft', licenseKey: 'non-commercial-and-evaluation', });
```
Show/Hide code
If your environment does not support imports, you can use the code below to quickly set up and run a data grid with basic configuration options.
```html
Handsontable - JavaScript Data Grid Example```
Handsontable themes control how your data table looks: colors, spacing, typography, borders, and overall visual style.
You get three built-in themes out of the box: - main – modern, clean, default choice - horizon – lighter, spacious feel - classic – traditional spreadsheet look
Each theme supports: - ️Light mode - Dark mode

You can style Handsontable to match your product’s visual identity by creating a custom theme. Use the Theme API to extend a built-in theme and apply your own styling while keeping support for light/dark modes and density settings.
Handsontable is a data grid component written in JavaScript, not a spreadsheet. However, it brings in many features typically found in spreadsheet software. We designed it this way because spreadsheet-like patterns are often the most user-friendly when it comes to data entry and management.
div) or windowAt first glance, it might seem that a data table, spreadsheet, and data grid are just different names for the same thing - an interactive table displaying data. In reality, these tools serve different purposes and offer distinct functionalities, designed to meet specific needs. Handsontable sits comfortably in the data grid category while incorporating many of the best aspects of spreadsheet software.
We're here to help!
If you're using Handsontable with a free, non-commercial license, you can: - Join the conversation on GitHub Discussions to share ideas, suggest features, or discuss changes. - Report any bugs you find on our GitHub Issue Board. - Connect with other developers and find answers on our Developer Forum.
If you have a commercial license, feel free to contact us directly at support@handsontable.com or use our contact form.
Handsontable is available under two licensing options, allowing you to choose the one that best fits your needs. Each license comes with its own terms and conditions, as outlined below:
This license is available for non-commercial purposes such as teaching, academic research, or evaluation. It allows you to use Handsontable free of charge under the terms specified in the non-commercial license agreement.
Learn more here.
For commercial use, a paid license is required. This license includes support and maintenance to ensure you get the most out of Handsontable. The commercial license can be purchased directly from Handsoncode or through an authorized reseller. See the pricing page for details.
For projects covered by the free non-commercial license, simply use the phrase `'non
$ claude mcp add handsontable \
-- python -m otcore.mcp_server <graph>