
GITNUXSOFTWARE ADVICE
Data Science AnalyticsTop 10 Best Grid Software of 2026
Top 10 grid software ranking for analytics use cases, including Databricks, BigQuery, and Redshift, plus Vaadin Grid and TanStack Table.
How we ranked these tools
Core product claims cross-referenced against official documentation, changelogs, and independent technical reviews.
Analyzed video reviews and hundreds of written evaluations to capture real-world user experiences with each tool.
AI persona simulations modeled how different user types would experience each tool across common use cases and workflows.
Final rankings reviewed and approved by our editorial team with authority to override AI-generated scores based on domain expertise.
Score: Features 40% · Ease 30% · Value 30%
Gitnux may earn a commission through links on this page — this does not influence rankings. Editorial policy
Vaadin Grid is the best fit for teams building interactive, editable tables where backend-controlled paging and custom row widgets matter, while TanStack Table is the stronger choice if you’re in a React app and want programmable grid behavior without a fixed UI framework.
Editor’s top 3 picks
Three quick recommendations before you dive into the full comparison below — each one leads on a different dimension.
Vaadin Grid
Server-driven virtualization with incremental fetch hooks that align rendered rows to user sort and filter state.
Built for fits when teams need interactive, editable tables with backend-controlled paging and custom row widgets..
TanStack Table
Editor pickComposable row model pipeline built from feature hooks and custom renderers.
Built for fits when React apps need programmable grid behavior without adopting a fixed UI framework..
Wijmo FlexGrid
Editor pickCell templates plus edit lifecycle events let apps render and validate domain rules per cell.
Built for fits when teams need interactive, editable data grids inside web apps..
Related reading
Comparison Table
Vaadin Grid
enterpriseA data-grid component for Java and web applications with server-side data handling.
Server-driven virtualization with incremental fetch hooks that align rendered rows to user sort and filter state.
Vaadin Grid is a UI component built for data-heavy applications, with APIs for defining columns, formatting values, and customizing headers and cell content. It supports editing and event-driven interactions such as selection and value change listeners. For performance, it relies on virtualization and incremental loading so the UI does not require every row to exist in the browser.
A tradeoff appears when governance and data access control are handled outside the component, since Vaadin Grid mainly renders and reacts to UI state. Tight integration is strongest when the application already uses Vaadin routing, views, and data-binding patterns. Vaadin Grid fits teams that need interactive tabular views with custom cell components while keeping control of query logic in the back end.
- +Virtualized rendering keeps scrolling smooth on large datasets
- +Callback-style data loading supports paging and filter-aware queries
- +Custom cell renderers enable domain widgets inside rows
- +Editing and selection events integrate cleanly with Vaadin UIs
- –Deep backend data governance stays outside the grid component
- –Highly custom layouts can require more UI code than table frameworks
Operations dashboard teams
Review and triage records in tables
Faster incident triage
Enterprise application builders
Embed domain controls in table cells
More actionable row views
Show 2 more scenarios
Internal tooling teams
Edit and validate fields inline
Lower form navigation cost
Inline editing plus value change listeners support validation workflows in the UI layer.
Data-heavy UI teams
Page through millions of records
Lower client memory usage
Virtualized scrolling avoids loading full datasets into the browser at once.
Best for: Fits when teams need interactive, editable tables with backend-controlled paging and custom row widgets.
More related reading
TanStack Table
API-firstA headless table and data-grid utility for building custom interfaces in modern JavaScript frameworks.
Composable row model pipeline built from feature hooks and custom renderers.
TanStack Table provides core row model engines like sorting and filtering, plus a flexible table state model where features read from and write to controlled props. Column sizing, grouping, and row selection can be composed via feature hooks, and custom render functions let the grid stay headless for integration into existing UI systems. The automation surface is the set of state and callback patterns around getState, onChange, and row model recomputation, which keeps the library predictable when wiring to APIs.
A key tradeoff is that TanStack Table does not include backend data fetching or enterprise governance controls, so server-side paging, caching, and auditing remain responsibilities of the surrounding app stack. It fits best when grid behavior must integrate tightly with existing analytics filters, form state, or URL-driven parameters.
- +Headless hooks for custom cell renderers and row model composition
- +Controlled state model keeps selection and expansion synchronized
- +Extensible column definitions for sizing, sorting, and grouping
- +Efficient derived row models with clear recomputation boundaries
- –No built-in data virtualization for very large datasets
- –Server-side pagination and filtering must be implemented in the app
- –Feature composition can increase code complexity for advanced grids
- –Accessibility and keyboard UX need careful integration in renderers
React analytics teams
Filter and sort large in-memory results
Consistent UI and query state
Product engineering teams
Editable grids with custom cell components
Fewer wrapper components
Show 2 more scenarios
Dashboard platform teams
Reusable grid configuration across pages
Uniform grid behavior
Define shared column metadata and compose feature hooks per screen.
Data engineering frontends
Server-driven paging and filtering
Predictable request patterns
Use manual pagination and filtering flags to align requests with backend analytics queries.
Best for: Fits when React apps need programmable grid behavior without adopting a fixed UI framework.
Wijmo FlexGrid
enterpriseA commercial JavaScript data grid with spreadsheet behavior, editing, grouping, and formatting.
Cell templates plus edit lifecycle events let apps render and validate domain rules per cell.
FlexGrid focuses on front-end grid behavior rather than back-end analytics, with a view layer that can bind to collections, track changes, and update the UI after edits. Core capabilities include column grouping, row selection modes, in-grid editing, and column-level formatting with custom cell templates for complex data display. Event hooks like cellEditEnding and rowEditEnding enable validation and transformation at the moment the user commits changes. For data operations, the component supports client-side filtering and sorting on the bound view, while larger datasets can rely on paging patterns wired into the data source.
A notable tradeoff is that FlexGrid does not replace the analytics engines that supply aggregated metrics, so it needs an external data service for warehouse results, time series rollups, and permission-aware queries. FlexGrid fits best when dashboards already fetch structured data and the main requirement is interactive spreadsheet-like exploration and editing inside a web app. One situation where it fits cleanly is operations tooling that uses editable tables for constraints, thresholds, and scenario parameters with immediate client-side recalculation and validation.
- +Cell-level templates support custom rendering and editing per column
- +Event hooks enable validation at edit commit and navigation points
- +Grouping and column formatting cover common analytics table layouts
- +Works with collection views for sorting and filtering without extra glue
- –Does not provide a built-in analytics backend or query engine
- –Advanced behaviors require careful state handling in custom editors
- –Large datasets depend on paging wiring and data source design
- –Governance and audit logging must be implemented outside the grid
Operations analysts
Edit thresholds in a tabular console
Fewer invalid threshold changes
Frontend engineers
Build drillable analytics tables
Cleaner analytics UI wiring
Show 2 more scenarios
QA and tooling teams
Create spreadsheet-like data review
Faster structured data review
Sorting, grouping, and row selection provide predictable review workflows over bound collections.
Data product teams
Support scenario parameter editing
Faster scenario iteration
Paging and client-side views let users adjust parameters while recalculated cells update immediately.
Best for: Fits when teams need interactive, editable data grids inside web apps.
Syncfusion DataGrid
enterpriseA data-grid component for JavaScript, .NET, mobile, and desktop application frameworks.
Row virtualization combined with template-driven rendering for high-performance large-table UX.
Syncfusion DataGrid is a JavaScript grid component built for complex, interactive table UIs inside web apps. It provides configurable column types, client-side sorting and filtering, row virtualization for large datasets, and editing workflows that map to common data binding patterns.
DataGrid also includes event hooks and a rich set of grid APIs for tailoring rendering, behavior, and data operations. Integration depth is strongest when the UI needs fine control over grid state, custom cell templates, and high-throughput scrolling.
- +Row virtualization improves scrolling throughput on large datasets
- +Extensible cell templates support custom rendering per column
- +Editing and validation hooks cover common CRUD grid workflows
- +Event and API surface enable targeted behavior changes
- –Complex configuration can require more framework-level wiring
- –Advanced data workflows depend on external data sources
- –Deep customization can increase maintenance when UI requirements change
Best for: Fits when teams need a highly configurable web grid with virtualization and custom cell rendering.
MUI X Data Grid
API-firstA React data-grid component with community and commercial editions for application interfaces.
Virtualized row rendering with column-level edit and render customization in a React component model.
MUI X Data Grid renders virtualized, interactive tables with React-focused column definitions and built-in editing interactions. Core capabilities include client-side sorting, filtering, grouping, pagination, and row selection that integrate with controlled React state.
The grid supports fine-grained customization through column renderers, cell edit components, and event callbacks for row updates. Extensibility comes from a documented component API surface and grid-level hooks that let apps wire validation, persistence, and analytics events.
- +React-first component API supports controlled state for paging and selection
- +Virtualized rendering keeps scroll performance stable on large datasets
- +Column-level configuration enables custom editors and renderers
- +Event callbacks cover common lifecycle points for edits and row selection
- –Complex setups rely on multiple specialized grid modules
- –Deep server-side data workflows need careful integration of callbacks and caching
- –Cross-cutting governance like audit logging is not built into the grid component
- –Advanced analytics-style aggregations require extra configuration and plugins
Best for: Fits when React apps need high-interactivity tables with custom cell editing and strong event hooks.
Jspreadsheet
API-firstA JavaScript spreadsheet and grid component for editable data, formulas, and structured tables.
A focused grid API with cell editor configuration and granular events for wiring formulas and external synchronization.
Jspreadsheet is a web grid component library for embedding spreadsheet-like editing inside existing web apps. It provides configurable cell editors, validation hooks, and formulas so teams can model calculations directly in the grid view.
The API exposes event streams for edits, selection, and rendering, which supports automation such as syncing changes to external systems. It is distinct from grid-to-database products because it focuses on client-side spreadsheet behavior rather than end-to-end analytics or warehousing workflows.
- +Spreadsheet-style editing with pluggable cell types and validation callbacks
- +Formula support built around functions and formula recalculation
- +Event hooks expose change, selection, and rendering signals for integrations
- +Works well for embedding grids into custom UIs without building a full app
- –No native RBAC, audit logs, or admin workflows for multi-user governance
- –Complex back-end behaviors require custom wiring around the grid events
- –Large datasets can hit browser performance limits during heavy editing
- –Limited built-in reporting and analytics beyond grid interactions
Best for: Fits when teams need an embeddable spreadsheet editor with custom UI and event-driven integrations.
Bryntum Grid
enterpriseA commercial JavaScript grid component designed for high-volume data and complex application interfaces.
Virtualized row and column rendering paired with extensible editors for large datasets without sacrificing interactive responsiveness.
Bryntum Grid is a web grid component focused on high-density data rendering and UI responsiveness in demanding table layouts.
It supports virtualization for large datasets, customizable cell and header rendering, and editing patterns that fit complex data workflows.
Integration is driven through a documented JavaScript API, event hooks, and extensibility points that let applications wire grid state to external stores and services.
The grid is built for operational control in enterprise UIs through configuration options that govern behavior such as sorting, filtering, selection, and editing flows.
- +Virtualized rendering keeps scroll performance usable with very large row counts
- +Extensible column, cell, and editor configuration supports complex UI layouts
- +Event-driven API makes it straightforward to sync selection and edits to app state
- +Fine-grained configuration covers sorting, filtering, selection, and editing behaviors
- –Deep customization requires front-end engineering time and careful state management
- –Enterprise governance features like RBAC and audit logging are not native to the grid
- –Advanced workflows depend on application-side data modeling and change handling
- –Complex filter and edit setups can increase integration complexity across screens
Best for: Fits when applications need a customizable, high-throughput web grid with virtualization and tight UI-to-state integration.
DHTMLX Grid
enterpriseA JavaScript grid component with editing, sorting, filtering, grouping, and virtual rendering.
A template-plus-editor approach lets each column define custom rendering and editing behavior with programmable event integration.
DHTMLX Grid is a client-side JavaScript grid component designed for building interactive tables with sorting, filtering, and rich cell editors without a separate backend grid framework. The component exposes a clear API for configuring columns, data binding, and editing behavior, and it supports custom renderers so complex business displays can be built per cell.
DHTMLX Grid also provides event hooks for user interactions and data lifecycle, which supports workflows like validation, computed fields, and cross-row updates. The implementation focus is on extensibility through templates, editor types, and programmable event handling rather than a heavy server-side grid data model.
- +Column and editor configuration uses a consistent JavaScript API
- +Custom cell templates support rich UI per column and per row
- +Event hooks enable validation and coordinated updates across cells
- +Editing workflow supports common UX patterns like inline edits
- –Deep governance features like RBAC and audit logs are not part of the grid
- –Large dataset handling depends on integration with data loading strategy
- –Complex cross-cell calculations require custom event and state wiring
- –Advanced admin workflows are implemented outside the grid component
Best for: Fits when front-end teams need an extensible interactive grid with custom editors and event-driven editing logic.
Glide Data Grid
API-firstA React data-grid component optimized for high-performance scrolling and spreadsheet-style interaction.
Cell-level editing with formula-driven views that update charts and widgets from the same grid state.
Glide Data Grid renders spreadsheet-like tables with cell-level editing over connected data sources. It supports interactive filtering, sorting, formulas, and chart components inside the same grid surface.
Data can be synchronized into the grid for fast exploration, then shared as configured views for repeatable analysis. Integration is centered on wiring the grid to Glide apps and linked data rather than running it as a standalone ETL or analytics warehouse.
- +Spreadsheet-style editing with formulas inside a unified grid UI
- +Linked views enable repeatable filtering and table configurations
- +Chart and widget elements connect to the same interactive grid
- +Grid behavior updates quickly for typical exploration datasets
- –Limited admin controls compared with enterprise governance tooling
- –API and automation surface is narrower than database-native platforms
- –Large data workloads can bottleneck on client-side grid interactions
- –Cross-system data modeling needs careful mapping outside the grid
Best for: Fits when teams need shareable, interactive table experiences without building a full analytics app.
Kendo UI
enterpriseA commercial UI library that includes data grids for Angular, React, Vue, and ASP.NET applications.
Kendo UI grid exports and cell templates let the same configured grid render both interactive analysis and downloadable report tables.
Kendo UI by Telerik targets teams that need web-ready grid components inside a broader UI and form stack. It delivers feature-rich data grid widgets with filtering, grouping, sorting, paging, and templating, plus data-binding patterns that fit client-side and server-backed workflows.
Kendo UI also provides a configuration-driven approach for grid behavior, with event hooks that connect grid interactions to external APIs. For analytics-heavy grids, Kendo UI supports exporting and custom templates so reporting tables can reuse the same UI primitives across views.
- +Comprehensive grid feature set with sorting, paging, grouping, and filtering
- +Event-driven hooks connect grid interactions to custom data endpoints
- +Templating and custom cell rendering support tailored analytics table layouts
- +Built-in export tooling fits report-style grid views
- –Grid behavior customization can require significant JavaScript and integration work
- –Advanced analytics experiences depend on external data shaping and API design
- –Large data needs careful paging and virtualization strategy in the integration layer
- –Governance features like RBAC and audit logs are not native to the grid widget
Best for: Fits when teams need a web grid UI with strong table interactions and custom export driven by their own analytics APIs.
Conclusion
After evaluating 10 data science analytics, Vaadin Grid stands out as our overall top pick — it scored highest across our combined criteria of features, ease of use, and value, which is why it sits at #1 in the rankings above.
Use the comparison table and detailed reviews above to validate the fit against your own requirements before committing to a tool.
How to Choose the Right grid software
Grid software is used to render large, interactive tables in web apps with editing, filtering, paging, and event-driven integrations to backend data services.
This buyer’s guide covers Vaadin Grid, TanStack Table, Wijmo FlexGrid, Syncfusion DataGrid, MUI X Data Grid, Jspreadsheet, Bryntum Grid, DHTMLX Grid, Glide Data Grid, and Kendo UI so the selection can be matched to the required UI-to-data control model.
Grid software for interactive tables, virtualization, and event-driven data integration
Grid software provides row and column rendering plus interaction hooks such as sorting, filtering, selection, and editing, while coordinating client-side state with data loading logic.
Vaadin Grid is focused on server-driven virtualization that aligns incremental row fetches to user sort and filter state using callback-style data loading. TanStack Table takes a different approach with a headless, composable row model pipeline built from feature hooks and custom renderers, so data virtualization and server-side paging must be implemented by the app.
Grid integration and performance features that change implementation effort
The grid choice determines how much work stays inside the UI layer versus how much logic must be built around the grid. That shows up in virtualization behavior, the event and callback surface, and the way row state stays consistent with sort and filter actions.
State-aligned data loading for sort and filter
Vaadin Grid keeps incremental fetches aligned to the user sort and filter state using callback-style data loading. Kendo UI connects grid interactions to custom data endpoints through event-driven hooks, which can work well but shifts orchestration effort into integration code.
Virtualized rendering throughput for large datasets
TanStack Table delivers a headless, composable row model pipeline, but it does not provide built-in data virtualization for very large datasets. Syncfusion DataGrid combines row virtualization with template-driven rendering to maintain responsive scrolling as row counts increase.
Editable cells and validation lifecycle
Wijmo FlexGrid provides cell templates plus edit lifecycle events that run validation at edit commit and navigation points. MUI X Data Grid exposes React component event hooks with virtualized rendering so cell editing and render customization can be kept synchronized with controlled paging and selection.
Extensibility model for custom cell and row rendering
Bryntum Grid pairs virtualized rendering with extensible column, cell, and editor configuration for complex UI layouts. DHTMLX Grid uses a template-plus-editor approach where each column defines custom rendering and programmable event integration.
Automation and integration surface for wiring external workflows
Vaadin Grid uses callback-style data loading that helps wire server workflows to grid interactions without duplicating state logic in the app layer. Glide Data Grid links spreadsheet-style formulas to chart and widget updates from the same grid state, which narrows the automation surface compared with database-native platforms.
Spreadsheet-style editing and formula-driven recalculation
Jspreadsheet focuses on a compact spreadsheet grid API with formula support and granular events for wiring formulas and external synchronization. Glide Data Grid also uses spreadsheet-style formulas, but it ties formula updates directly to linked views that share filtering and table configurations.
Choose the grid by its UI-to-data control model and extension philosophy
The fastest path to stable behavior depends on whether the grid owns data fetching and virtualization or the app owns it. The grid will either align its row fetches to current UI state or it will require the app to implement server-side pagination and filtering logic.
Pick a state-aligned server-driven fetching model when backend paging is central
Choose Vaadin Grid when the dataset is large and the backend must control paging while row fetches stay aligned to the current sort and filter state. Choose MUI X Data Grid when a React-controlled component model should own paging and selection state and the grid should mirror those changes through its event hooks.
Pick headless composition when the app already defines the row pipeline
Choose TanStack Table when the React app needs a programmable row model pipeline built from feature hooks and custom renderers. Plan to implement server-side pagination and filtering plus data virtualization behavior in the app because the grid itself does not include built-in data virtualization.
Pick virtualization with template-driven rendering when UI throughput matters most
Choose Syncfusion DataGrid when virtualization plus template-driven rendering is needed with less custom state plumbing. Choose Bryntum Grid when virtualization must be paired with extensible editors for complex layouts and interactive responsiveness.
Pick event-first editing when domain validation must run at commit boundaries
Choose Wijmo FlexGrid when edits require cell-level templates and validation at edit commit and navigation points. Choose DHTMLX Grid when column-by-column template and editor configuration must plug into a consistent JavaScript event workflow.
Pick spreadsheet-style APIs when formulas drive the user’s workflow
Choose Jspreadsheet when spreadsheet-style editing and formula recalculation must plug into external synchronization through granular events. Choose Glide Data Grid when formulas must update charts and widgets from the same grid state and when shareable filtering and table configurations are part of the workflow.
Pick export-driven table analysis when reports must mirror interactive state
Choose Kendo UI when interactive analysis needs to output downloadable report tables using grid exports aligned to the same cell templates. Avoid Kendo UI when advanced analytics behavior should be built around an internal grid-native data engine because workflows depend on external data shaping and API design.
Who should buy which grid based on editing, virtualization, and orchestration needs
Teams that integrate grids with backend data pipelines need a control model that matches their existing server workflow. Teams that focus on UI-first composition need headless or templated rendering that can be assembled without fighting the grid’s internal assumptions.
Web apps that require backend-controlled paging with sort and filter aware fetching
Vaadin Grid aligns incremental row fetches to user sort and filter state through callback-style data loading. This reduces mismatch between client UI state and server query parameters during rapid interactions.
React teams that want programmable cell behavior without adopting a fixed UI framework
TanStack Table provides a headless, composable row model pipeline built from feature hooks and custom renderers. Server-side paging and filtering plus large-dataset virtualization must be implemented by the app.
Front-end teams building interactive spreadsheet-like editors for calculations
Jspreadsheet provides spreadsheet-style editing with pluggable cell types, validation callbacks, and formula recalculation. Glide Data Grid adds linked views where filtering and table configurations can be reused across widgets.
Teams that need cell-level edit validation and domain rules enforced at commit points
Wijmo FlexGrid exposes edit lifecycle events that run validation at edit commit and navigation points. This supports rule enforcement per cell without pushing all validation into external form layers.
Organizations building governance-oriented multi-user admin experiences
Jspreadsheet lacks native RBAC and audit logs, so governance must be handled in surrounding systems. Bryntum Grid also does not provide enterprise governance features like RBAC and audit logging natively in the grid.
Common grid selection pitfalls that create rework during integration
Grid rework usually starts when teams choose based on UI features alone and then discover the data loading or governance model does not match the application. It also happens when virtualization expectations are set incorrectly for large datasets.
Assuming the grid includes built-in data virtualization for very large datasets when using TanStack Table
TanStack Table does not provide built-in data virtualization for very large datasets, so the app must implement server-side pagination, filtering, and virtualization behavior. For high-throughput scrolling, Syncfusion DataGrid and Bryntum Grid provide row virtualization as part of the grid experience.
Treating Jspreadsheet like an enterprise governance layer
Jspreadsheet provides spreadsheet-style editing and formula workflows, but it has no native RBAC or audit logs for multi-user governance. Place multi-user authorization and auditing outside the grid and wire only UI events into those systems.
Overestimating how much customization can be done without front-end integration work
Bryntum Grid supports extensive extensible editors and complex UI layouts, but deep customization requires front-end engineering time and careful state management. DHTMLX Grid uses a consistent JavaScript API with templates and editors, but large dataset behavior still depends on the data loading strategy.
Building an export workflow without aligning grid state to backend shaping
Kendo UI exports can work well with interactive cell templates, but advanced analytics experiences depend on external data shaping and API design. Ensure the grid’s event hooks call the same backend transformations that the export pipeline uses.
Choosing a cell editing lifecycle that does not match when domain rules must be enforced
Wijmo FlexGrid supports validation at edit commit and navigation points, which fits domain rules tied to specific editing boundaries. If validation must run at those exact lifecycle moments, avoid approaches that force all validation into custom editors without clear commit hooks.
How We Selected and Ranked These Tools
We evaluated Vaadin Grid, TanStack Table, Wijmo FlexGrid, Syncfusion DataGrid, MUI X Data Grid, Jspreadsheet, Bryntum Grid, DHTMLX Grid, Glide Data Grid, and Kendo UI using feature depth for interactive tables at large scale and the practical integration effort required by their event and callback surfaces. Features accounted for 40% of the ranking weight, and ease and value each contributed 30%, so the scoring favored grids that reduce custom wiring for sort and filter state coordination.
Vaadin Grid ranked highest because its server-driven virtualization keeps incremental fetches aligned to user sort and filter state using callback-style data loading, which reduces client-server mismatch during rapid interactions. TanStack Table placed lower for the ranking purpose because it composes row logic well but requires the app to implement server-side pagination, filtering, and data virtualization behavior.
Frequently Asked Questions About grid software
How should analytics teams choose between Vaadin Grid and TanStack Table for interactive table state?
What does “server-driven virtualization” mean in Vaadin Grid compared with Bryntum Grid?
Which grid is best for cell-level editing with validation logic that runs per edit lifecycle?
How can developers integrate grid edits with external APIs without rebuilding the UI layer?
Which tool offers a headless, composable pipeline for row models when building custom analytics views?
When does a grid like MUI X Data Grid work better with controlled React state than a non-React widget?
What breaks if the grid is used for heavy server-side analytics workflows instead of embedding formulas and client-side computations?
How do grids like Kendo UI and Syncfusion handle high-volume scrolling when the dataset is larger than what can be loaded at once?
Which grid supports exporting and report-style tables built from the same interactive UI configuration?
Tools reviewed
Primary sources checked during evaluation.
Referenced in the comparison table and product reviews above.
Keep exploring
Comparing two specific tools?
Software Alternatives
See head-to-head software comparisons with feature breakdowns, pricing, and our recommendation for each use case.
Explore software alternatives→In this category
Data Science Analytics alternatives
See side-by-side comparisons of data science analytics tools and pick the right one for your stack.
Compare data science analytics tools→