Native Tables & Charts releases
Gutenberg-native responsive tables and charts for WordPress: reusable datasets, synced views, style presets, import/export, and League Table migration.
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/bfrye26/native-tables-charts/releases/download/3.1.0/native-tables-charts-3.1.0.zipReadme
=== Native Tables & Charts === Contributors: cgm Tags: gutenberg, tables, charts, data, responsive, benchmark Requires at least: 6.6 Requires PHP: 8.1 Stable tag: 3.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Build responsive tables and charts directly in Gutenberg, reuse datasets across posts, and migrate League Table content without relying on shortcodes or external chart services.
== Description ==
Native Tables & Charts is a Gutenberg-first data presentation plugin for editorial WordPress sites. It combines a spreadsheet-style data editor, responsive semantic tables, native charts, reusable datasets, style presets, import/export tools, and a migration path from League Table.
The primary workflow lives inside the block editor. Add a Native Data Table or Native Data Chart block, enter or paste data, choose a template, adjust responsive presentation, and publish. No shortcode is required for new content.
Charts are rendered locally by WordPress using HTML, CSS and SVG. The plugin does not call an external chart API or require a CDN. Every chart also includes an accessible HTML data representation.
= Gutenberg blocks =
- Native Data Table
- Native Data Chart
Inserter variations include Blank Data Table, Product Comparison, Specifications, Ranking, Benchmark Results, Horizontal Benchmark Chart, Dual-Metric Benchmark Chart, and Grouped Comparison Chart.
= Data workflow =
- Inline datasets for data used only in the current block.
- Reusable datasets for data shared between posts and visualizations.
- Synced views for table/chart presentation settings that should be reused.
- Detach/snapshot workflow when a historical copy should stop receiving synced data updates.
- Data Library with search, usage counts, view counts, raw data export, full dataset/view bundle export, duplication and deletion.
- Maximum supported dataset size: 10,000 rows and 40 columns.
- Virtualized Gutenberg grid for large datasets.
- Debounced row updates for reusable datasets rather than rewriting the full dataset on every cell edit.
= Table features =
- Direct spreadsheet-style editing in Gutenberg.
- Add, insert, duplicate, move and delete rows and columns.
- Rectangular cell selection, copy, cut, clear and multi-cell paste.
- Paste from Excel and Google Sheets.
- CSV, TSV and JSON import/export.
- Header row, caption and automatic position/ranking column.
- Up to five default sort priorities.
- Optional visitor sorting with no jQuery dependency.
- Sorting types: automatic, text, number/digit, percent, currency, URL, time, ISO date, US long date and short date.
- Short date formats: DD/MM/YYYY, YYYY/MM/DD and MM/DD/YYYY.
- US/point-decimal and EU/comma-decimal number handling.
- Sticky headers.
- Automatic or fixed table layout.
- Table, column and scroll-container widths/heights.
- Desktop/tablet/mobile preview in Gutenberg.
- Responsive horizontal scroll, hidden-column and stacked-card modes.
- Separate phone/tablet breakpoints, typography and image visibility.
- Column alignment and width controls.
- Row/column automatic colour rules and alignment rules.
- Header/body/caption font family, weight, style, size and colour controls.
- Header, odd-row and even-row background/text/link colours.
- Borders, cell spacing, radius and margins.
- Per-cell text/background colour, alignment, font weight and font style.
- Per-cell links with optional new-tab behaviour.
- WordPress Media Library images on the left or right side of a cell, with alt text and optional image links.
- Merged cells using row/column spans.
- Custom HTML cells are always sanitized. Administrators can use WordPress' normal post HTML/protocol allow-list or configure a League Table-style restricted tag/protocol list under Settings. Developers can extend the result with the
ntc_allowed_htmlandntc_allowed_protocolsfilters. - Formula operations: sum, subtraction, minimum, maximum and average.
- Average decimal precision and PHP-compatible half-up, half-down, half-even and half-odd rounding.
- Built-in table style presets: Editorial, Comparison, Ranking, Specifications, Minimal, Compact and Dark.
- Save, import and export custom table style presets.
= Chart features =
- Horizontal bar chart.
- Dual-metric benchmark chart with independent metric scales.
- Vertical bar chart.
- Grouped bar chart.
- Stacked bar chart.
- Multi-series line chart.
- Scatter-style point chart.
- Donut chart.
- Combo, histogram, box-and-whisker, waterfall, bullet, bubble, funnel, range-bar, timeline/Gantt and slope charts.
- Treemap, sunburst, Sankey, candlestick/OHLC, error-bar, calendar-heatmap and population-pyramid charts.
- Likert, Pareto, streamgraph, parallel-coordinates, network, choropleth/region-map and polar-area charts.
- Gutenberg data editing without an external chart service. Charts default to a clean Preview mode, with dedicated Data, optional Split, and full-screen Focus modes.
- Responsive layouts based on the chart container, with a configurable mobile breakpoint.
- Automatic-height charts by default, with optional 16:9, 4:3 and square aspect ratios.
- Responsive numeric axes and optional benchmark grid lines for horizontal and dual-metric charts.
- Mode-based Gutenberg preview with Desktop/Tablet/Mobile viewport controls; charts reopen in clean Preview mode instead of showing the spreadsheet and visualization at the same time.
- Titles, subtitles, direction labels, legend labels, sort annotations and axis labels.
- Higher-is-better, lower-is-better and neutral presentation.
- Data sorting without destructively reordering the stored dataset.
- Units and decimal formatting.
- Exact row labels can be highlighted, useful for emphasizing the product being reviewed.
- Primary, secondary and highlight colours.
- Typography presets plus direct sizing controls for chart titles, subtitles, row labels, values, axes, legends and footers.
- Auto/Spacious/Comfortable/Compact chart-density modes for intelligent row and bar sizing.
- Multi-series legend for grouped, stacked, line and scatter charts.
- Footer, secondary footer and source fields for benchmark/system configuration notes.
- Accessible chart labels and a semantic HTML data representation with Screen readers only, Collapsible, Always visible and Disabled output modes.
- Built-in chart themes include benchmark, editorial, dashboard, accessible, print/grayscale, financial, scientific, soft-neutral, high-impact dark, brand-inherit and compact-mobile treatments, with visual previews in Gutenberg.
- Save, import and export custom chart style presets.
= Editor settings =
Administrators can individually enable or disable advanced cell-property controls, including colours, alignment, typography, links, images, formulas, custom HTML and row/column spans. This mirrors League Table's ability to limit which cell tools are exposed while keeping the Gutenberg interface simpler for editors. The same Settings screen can restrict which HTML tags, attributes and link protocols custom HTML cells are allowed to use.
= Native backup and portability =
- Tables & Charts > Tools can export a complete JSON backup of all reusable datasets and synced table/chart views.
- Custom presets are included in complete backups when the current user has preset-management permission.
- Each reusable dataset can also be exported as a self-contained bundle containing its data and synced views.
- Complete backups, dataset bundles and raw Native Tables & Charts JSON data exports can be imported as new records without overwriting existing datasets.
- CSV, TSV and JSON data exports remain available from the Gutenberg editor and REST-backed Data Library workflow.
= League Table migration =
The plugin includes a migration tool designed around League Table 2.25 data structures.
- Detects League Table database tables.
- Dry-run report before migration.
- Migrates table data, captions, descriptions, enabled sorting rules, ranking, widths, typography, colours, borders, responsive options, cell links, cell images, formulas, merged cells, HTML cells, autocolours and autoalignment.
- Imports League Table XML exports.
- Converts
[lt id="..."]shortcodes to Native Data Table blocks. - Converts existing
dalt/tableGutenberg blocks to Native Data Table blocks. - Stores original post content in migration backups before replacement.
- Can roll back the post-content changes from a migration batch.
- Migrates League Table's configured cell-property visibility switches and custom-HTML tag/protocol allow-lists when Native Tables & Charts has not already been configured. For security, custom HTML remains sanitized even if the legacy plugin had its KSES bypass disabled.
- Never deletes the original League Table database tables.
Always perform a full database/file backup and run the dry-run on a staging copy before migrating a production site.
== Installation ==
- Upload the
native-tables-chartsfolder to/wp-content/plugins/, or install the ZIP from Plugins > Add New > Upload Plugin. - Activate Native Tables & Charts.
- Open a post or page in the block editor and add a Native Data Table or Native Data Chart block.
- For reusable data, use the block toolbar to save the current inline data as a reusable dataset.
- Manage reusable datasets under Tables & Charts > Data Library.
- Manage custom styles under Tables & Charts > Style Presets.
- Use Tables & Charts > Tools for full native backups and re-import.
- If replacing League Table, open Tables & Charts > Migration and run a dry-run first.
== Migrating from League Table ==
- Back up WordPress and the database.
- Install and activate Native Tables & Charts while League Table data is still present.
- Go to Tables & Charts > Migration.
- Run the Dry-Run Report and review the detected tables, post instances and advanced cells.
- Run Migration. Leave content replacement enabled if you want old shortcodes and League Table blocks converted automatically.
- Review migrated posts and responsive behaviour on staging.
- Only after verification, disable League Table.
- Leave the original League Table database tables in place until you are satisfied with the migration.
== Frequently Asked Questions ==
= Does the plugin require shortcodes? =
No. New tables and charts are native Gutenberg blocks. The migration tool can replace old League Table shortcodes with blocks.
= Does chart rendering depend on a third-party service? =
No. Charts are rendered by WordPress using local HTML, CSS and SVG output. No chart data is sent to an external rendering service.
= What happens if JavaScript is disabled on the front end? =
Tables and charts remain server-rendered and readable. Visitor-triggered table re-sorting is the main enhancement that requires the small local front-end script. Charts include an HTML data representation.
= Can the same data power a table and several charts? =
Yes. Save the data as a reusable dataset and reference it from multiple table/chart blocks or synced views.
= Can I freeze a historical chart so future dataset edits do not change it? =
Yes. Detach the block from the reusable dataset to create an inline snapshot.
= How large can a dataset be? =
Version 1.0 limits datasets to 10,000 rows and 40 columns. The Gutenberg data grid virtualizes large row sets so it does not mount every visible cell at once.
= Does uninstalling delete my datasets? =
Not by default. Tables & Charts > Settings contains an explicit option to delete plugin data on uninstall. Keep it disabled on production unless you intentionally want all plugin data removed.
== Changelog ==
= 3.1.0 =
- Added block transforms so the standard Gutenberg Table block and Flexible Table Block can be converted to Native Data Table directly in the editor.
- Preserves headers, captions, fixed layout, stacked-mobile and sticky-header behaviour, merged cells, cell alignment, colours, font styling, links and inline HTML during conversion.
- Converts numeric columns to native numeric types so sorting works immediately.
= 3.0.9 =
- Added progressive large-table rendering so only one page of rows is mounted in the browser at a time.
- Added chart-type-aware render limits, evenly sampled trend data, and an explicit maximum-row control.
- Reduced Gutenberg data duplication with shared reusable-dataset caches, larger REST chunks, and lightweight saved block attributes.
- Reused dataset, view, source, and row reads within each frontend request and reduced unnecessary post-source cache invalidation.
- Reworked League Table detection into resumable 100-post requests and reduced migration work to five identified posts per request.
- Added complete opt-in Dataset and Review JSON-LD controls with validation, provenance, licensing, distribution, product, author, publisher, dates, pros/cons, and safe aggregate-rating rules.
- Prevented incomplete structured data from being emitted and added the
ntc_schema_payloadintegration filter.
= 3.0.8 =
- Fixed a React lifecycle error that could crash Gutenberg after opening or closing the existing-data picker.
- Loaded reusable datasets and synced views completely before applying them, preventing partial or broken block previews.
- Added spreadsheet-style cell navigation with caret-aware arrow keys, Enter, Shift+Enter, and Tab.
- Realigned and respaced the existing-data and import modals across desktop and narrow editor layouts.
= 3.0.7 =
- Replaced the complete Gutenberg Shortcode block when migrating an embedded League Table shortcode.
- Detected and repaired native table blocks incorrectly nested inside Shortcode blocks by version 3.0.6.
- Invalidated affected migration progress so damaged posts are rediscovered before continuation.
= 3.0.6 =
- Split large legacy table row and cell-property imports into resumable 200-record requests.
- Replaced legacy shortcodes without running expensive third-party post-save hooks while preserving rollback backups and clearing post caches.
- Added detaile
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| 3.1.0 | Aug 19, 2026 | native-tables-charts-3.1.0.zip | 1 |
| 3.0.9 | Aug 18, 2026 | native-tables-charts-3.0.9.zip | 1 |
| 3.0.8 | Aug 18, 2026 | native-tables-charts-3.0.8.zip | 2 |
| 3.0.7 | Aug 18, 2026 | native-tables-charts-3.0.7.zip | 0 |
| 3.0.6 | Aug 18, 2026 | native-tables-charts-3.0.6.zip | 1 |
| 3.0.5 | Aug 18, 2026 | native-tables-charts-3.0.5.zip | 1 |
| 3.0.4 | Aug 18, 2026 | native-tables-charts-3.0.4.zip | 1 |
| 3.0.3 | Aug 18, 2026 | native-tables-charts-3.0.3.zip | 1 |
| 3.0.2 | Aug 18, 2026 | native-tables-charts-3.0.2.zip | 1 |
| 3.0.1 | Aug 18, 2026 | native-tables-charts-3.0.1.zip | 1 |
| 3.0.0 | Aug 18, 2026 | native-tables-charts-3.0.0.zip | 0 |
| 2.0.0 | Aug 18, 2026 | native-tables-charts-2.0.0.zip | 0 |
| 1.1.1 | Aug 17, 2026 | native-tables-charts-1.1.1.zip | 0 |
| 1.1.0 | Aug 17, 2026 | native-tables-charts-1.1.0.zip | 1 |