How to make a data table with WordPress starts with a plugin, since core WordPress carries no built-in way to sort or filter rows. A WordPress data table is an interactive table that reads its rows from a file, a database, or manual entry, then adds sorting, search, and pagination on its own.
Store owners and site editors build one to publish product catalogs, price lists, and reports without writing HTML markup. The table lives inside a post or page, judged against a plain, static table once the row count passes fifty entries.
wpDataTables, the plugin most sites use for this task, has logged more than 2.6 million downloads from the WordPress plugin directory as of 2026 (WordPress.org).
Table of Contents
What Is a WordPress Data Table?
A WordPress data table is an interactive table embedded inside a post or page that sorts, filters, and searches its own rows without any custom code.
The plugin handling that behavior is wpDataTables, and it renders the table from a data source you choose once, not markup you write by hand.
A plain HTML table only shows what you type into it. Change a price, add a row, or reorder a column, and you’re editing raw markup again.
A WordPress data table works differently:
- Reads its rows from a file, a database, or manual entry
- Refreshes when the source changes, depending on the table type
- Adds sorting, search, and pagination on its own
- Adapts its layout across screen sizes without extra CSS
Various WordPress table plugins take a stab at this, and wpDataTables covers the widest span of data sources, from a single CSV file to a live MySQL query.
The rest of this guide builds one from scratch, starting with the table type you pick before anything else.
What Types of WordPress Data Tables Can You Build?
wpDataTables offers four table types, and the one you pick decides how much the table can do later.
Each type trades flexibility for simplicity in a different place. Picking wrong here means rebuilding the table later.
Here’s how the four line up before the detail:
| Table Type | Data Source | Editable | Best For |
|---|---|---|---|
| Simple | None, built by hand | Always | Small styled tables |
| Linked | Excel, CSV, Sheets, JSON, XML | No | Data that already lives elsewhere |
| Manual | None, entered in the wizard | Always | Small original datasets |
| MySQL Query | SQL query | Yes | Large or fast-changing data |
Simple Table
A simple table is built cell by cell inside the wpDataTables editor, closer to a spreadsheet than a database.
It supports things a linked or query table can’t touch, including merging adjacent cells, star ratings, and drag-and-drop row reordering.
- No external data source of any kind
- No sorting, filtering, or search on the front end
- Full manual control over layout, per-cell styling, and merged cells
Pros: total layout freedom, no data source to maintain.
Cons: becomes tedious past roughly a dozen rows, and none of the interactive features apply.
Linked Table
- Sources: Excel, CSV, Google Sheets, JSON, XML, serialized PHP array
- Refresh: re-reads the source file on every page load
- Editing: not editable inside WordPress, the source file stays the single point of truth
Update the spreadsheet and the table on the front end updates the next time someone loads the page. Nobody touches the WordPress admin to make that happen.
Pros: zero manual re-entry once the source is set up. Cons: a moved or renamed source file breaks the table instantly.
Manual Table
A manual table is built column by column inside the creation wizard, with a data type and a default value set per column.
The rows live in MySQL from the moment the table is generated, and every cell can be edited later from the WordPress admin.
Pros: no external file to manage, always editable. Cons: data entry is manual, so it doesn’t scale past a few hundred rows comfortably.
MySQL Query Table
This is the table type built for volume.
A MySQL query table pulls its rows from a SQL query rather than a file, which means a database column acting as a primary key is what keeps sorting and filtering reliable at scale.
- Uses server-side processing, so only the visible page of rows loads at once
- Handles millions of rows without loading them all into the browser
- Requires enough SQL knowledge to write or adapt the query
Pros: the only type built for genuinely large datasets. Cons: the steepest learning curve of the four.
Which Data Source Should You Use to Build a WordPress Data Table?

The data source decision comes down to how often the numbers change and how large the dataset already is.
Excel and CSV suit static datasets updated occasionally. Google Sheets and MySQL fit numbers that move weekly or daily.
A side-by-side view of the four data sources makes the trade-off clearer:
| Source | Setup Effort | Live Updates | Best For |
|---|---|---|---|
| Excel / CSV | Low, upload once | Only on re-upload | One-off reports, price lists |
| Google Sheets | Low | Yes, on page load | Teams already tracking data in Sheets |
| MySQL query | High, needs SQL | Yes, live from the database | Large or frequently changing datasets |
| Manual entry | Low for small sets | Manual, edited in WordPress | Small original datasets |
Excel and CSV: fastest to set up, and the file format most people already have sitting on their computer.
Google Sheets: keeps a team’s shared spreadsheet as the single source of truth, without anyone re-uploading a file.
MySQL is where the row count matters most. wpDataTables’ own support team recommends switching to a query-based table with server-side processing once a dataset passes 5,000 rows, since a non-server-side table loads every row into the page’s HTML at once and can slow or crash the browser (wpDataTables Support, 2026).
Between 2,000 and 5,000 rows, turning on the plugin’s caching feature is usually enough to keep a linked table responsive without touching the query builder at all.
For anyone fetching data from a database that already exists on the server, the query route skips the file-upload step entirely.
How Do You Build a WordPress Data Table Step by Step?

Building the table happens in five steps, from installing the plugin to generating the finished table shell.
None of them require touching a line of PHP.
- Install wpDataTables from Plugins > Add New, or upload the ZIP file through Plugins > Add New > Upload if you bought the premium version.
- Activate the plugin, then open wpDataTables > Create a Table from the WordPress admin sidebar.
- Choose a table type: simple, linked, manual, or MySQL query.
- Point the wizard at a data source (upload a file, paste a query, or link a spreadsheet), or define each column manually with a name and data type.
- Click Generate Table. The table opens in the editor, ready for data entry or final table configuration.
That last step is where most of the real customization happens, covered next.
wpDataTables has built up a track record doing this: 70,000+ active installations and a 4.5-star rating across 448 reviews on WordPress.org (2026) come from sites running exactly this five-step flow.
Anyone who has used a spreadsheet before recognizes the layout almost immediately, since the table generator mirrors that familiar column-and-row grid.
How Do You Configure a WordPress Data Table After Creating It?

Once the table exists, four settings decide how it behaves on the front end: sorting, responsiveness, editing, and formatting.
Each one lives in a different tab of the table configuration screen.
Sorting, Search, and Filtering
A global search box sits above the table by default, searching every visible column at once.
Per-column filters narrow that further, letting a visitor filter by one column’s value while the search box still covers the rest.
- Global search across all columns
- Per-column dropdown or range filters
- Multi-criteria filtering, combining more than one column’s filter at a time
The interaction is powered by JavaScript sorting under the hood, so a click on any column header reorders the rows instantly, no page reload involved.
Responsive Behavior
Adapts automatically: a wpDataTables table adjusts its column layout across desktop, tablet, and mobile without a separate mobile version to maintain.
Resize the browser window and columns collapse into a details view rather than forcing a visitor to scroll sideways.
Whether a table stays fully responsive or scrolls horizontally instead is one checkbox on the table configuration screen, not a CSS project.
Front-End and Back-End Editing
- Back-end editing: changes made from the WordPress admin, available on manual and MySQL query tables
- Front-end editing: logged-in visitors edit cells directly on the published page
- Inline editing: click a cell, type, done
- Popup form editing: a form window opens for the whole row at once
- Excel-like editor: a spreadsheet-style grid for bulk changes
Linked tables skip all of this, since the source file stays the only place edits happen.
Conditional Formatting
Conditional formatting changes a cell’s color or style automatically once its value crosses a rule you set, the same idea as Excel’s conditional formatting.
A rule might turn a stock column red under 10 units, or highlight any row where a status column reads “Overdue.”
- Rules apply to a single column or an entire row
- Multiple rules can stack on the same column
- Formatting updates live as the underlying data changes
How Do You Insert a WordPress Data Table Into a Post or Page?
A finished table reaches a post or page through a shortcode or a dedicated block, and both methods pull from the same table.
Neither one touches the table’s data or settings.
Shortcode Method

Every table generates its own shortcode automatically, visible on the table’s row in the wpDataTables list.
Copy it, paste it into a Classic Editor post, and the table renders where the shortcode sits.
- Copy the shortcode from the table list or the table editor
- Paste it into a Classic block, a Shortcode block, or the Classic Editor directly
- Publish the page to see the live table
This is the fastest route for anyone inserting a table into WordPress who’s already comfortable with shortcodes from other plugins.
Gutenberg Block Method
Block name: wpDataTables, searchable from the block inserter with a plus icon.
Table selection: a dropdown in the block sidebar lists every table already created.
View option: choose Regular or Excel-like display before publishing.
Placeholders: %VAR1%, %VAR2%, and %VAR3% let one table serve different filtered views across separate pages.
The block shows a live preview in the editor, so the table looks the same before and after hitting Publish.
How Do You Turn a WordPress Data Table Into a Chart?
Any existing wpDataTables table can become the data source for a chart, without re-entering a single number.
The chart pulls live from the table, so updating the table updates the chart too.
Four rendering engines are available, each suited to a different kind of chart:
| Engine | Style | Best For |
|---|---|---|
| Google Charts | Clean, classic chart styles | General reporting, the free-tier default |
| Chart.js | Lightweight, animated | Simpler dashboards |
| HighCharts | Polished, feature-dense | Financial and stock data |
| ApexCharts | Modern, interactive | Marketing and analytics dashboards |
Through Google Charts alone, wpDataTables’ own documentation lists 14 chart types as of 2026, including line, bar, pie, area, histogram, and candlestick charts.
Setting one up follows the same pattern regardless of engine:
- Select an existing table as the chart’s source
- Pick a chart type from the ones the chosen engine supports
- Map table columns to the chart’s axes and series
- Save, and the chart updates automatically whenever the source table changes
Most chart types need one string or date column for the axis labels and the rest numeric. Mixed text in a numeric column is the most common reason a chart renders empty.
Simpler dashboard-style charts tend to reach for Chart.js instead, since it renders faster on pages with several charts stacked together.
Free Plugin or Premium: Which One Do You Need?

wpDataTables Lite covers simple and linked tables for free, while a paid tier unlocks manual tables, MySQL query tables, and front-end editing.
The gap between the two shows up fastest once a dataset grows past a small size.
- Lite caps every table at 150 rows, regardless of table type (Kinsta)
- Lite has no server-side processing, so large linked tables load slowly once they approach that cap
- Lite can’t create manual tables, MySQL query tables, or front-end editable tables at all
- Premium starts at the Starter tier and adds three more tiers above it
The four paid tiers don’t all include the same feature set, and the differences aren’t just about how many sites you can run the plugin on.
Starter: unlimited tables and charts, but no Google Sheets API connection, no private spreadsheets, and no database-driven tables.
Standard: adds MySQL query tables, private Google Sheets, and front-end editing, but leaves out WooCommerce integration and HighCharts Stock.
Pro and Developer: carry every feature from Standard, and differ mainly in domain count, 3 domains on Pro versus unlimited domains on Developer (wpDataTables, 2026).
A site running a single small table can usually stop at Lite. Anything pulling from a database or needing more than one editor probably can’t.
Which WordPress Table Plugin Should You Use Instead of wpDataTables?
The realistic alternatives are the native Gutenberg block, TablePress, and Ninja Tables, and each one trades away something wpDataTables offers.
None of the three connect to a live MySQL query out of the box.
| Option | Free Sort/Filter | External Data Import | Front-End Editing |
|---|---|---|---|
| Gutenberg Table block | No | No | No |
| TablePress | Yes | Excel, CSV, HTML, JSON | No, admin only |
| Ninja Tables | Yes | Yes, plus Google Sheets sync | Premium only |
| wpDataTables | Yes, on linked and up | Excel, CSV, JSON, XML, MySQL | Premium tiers only |
TablePress is the plugin most people already know, and it earns that reputation honestly. It runs on 700,000+ active installations according to WordPress.org (2026), built entirely on client-side rendering that loads the whole table into the browser at once.
wpDataTables’ own comparison notes that approach works fine for small, static tables but slows down as the dataset grows, since wpDataTables instead relies on server-side processing and lazy loading for large tables.
Ninja Tables takes a more visual, drag-and-drop approach, and WordPress.org lists it at 80,000+ active installations (2026). Its free tier includes column-level filters that TablePress reserves for a premium extension.
- Pick the Gutenberg block for a handful of rows that never change
- Pick TablePress or Ninja Tables for straightforward, admin-managed content
- Pick wpDataTables when the data lives in a database or needs to update on its own
Anyone still undecided can browse a fuller wpDataTables alternative comparison before committing to a license.
When Does a WordPress Data Table Not Work?
A WordPress data table breaks down in three specific situations: chart building on the wrong table type, Google Sheets connections on the wrong license tier, and installs on outdated hosting.
Each one is avoidable once you know where the line sits.
The chart-building steps covered earlier apply to linked, manual, and MySQL query tables, not all four table types.
wpDataTables’ own support team confirms a Simple table can’t be selected as a chart’s data source at all, since Simple tables aren’t built to feed the chart engine (wpDataTables Support, 2026). Picking Simple for a dataset that needs a chart means rebuilding it as a different type later.
Google Sheets access has a similar gap between tiers.
- Public Google Sheets connect on every plan, including Starter
- Private spreadsheets require the Google Sheets API, available starting on the Standard tier
- A Starter license trying to link a private sheet simply won’t find it
Anyone planning to visualize Google Sheets data that isn’t set to public should check the tier before building the table around it.
Hosting matters too. wpDataTables requires PHP 7.4 or newer to activate at all, according to its own plugin listing on WordPress.org (2026).
A site running an older PHP version won’t get a table, a chart, or an error explaining why, just a plugin that refuses to turn on. That’s usually a hosting issue rather than a wpDataTables one, and it’s worth checking before assuming plugin installation problems point to something else.
FAQ on Making A Data Table with WordPress
Can You Merge Cells in a WordPress Data Table?
Merging cells only works on a Simple table, the type built entirely inside the WordPress admin.
Linked, manual, and MySQL query tables read their data too dynamically for merged cells to render correctly, so that feature stays limited to the simplest table type.
Can You Export a WordPress Data Table to PDF or Excel?
Yes. wpDataTables includes built-in table tools for exporting data to Excel, CSV, and PDF, plus copy and print options.
These sit in the same toolbar as sorting and search, so no separate export plugin is needed.
Does a Large WordPress Data Table Slow Down Page Load?
Only if it renders every row at once. Pagination limits how many rows load per view.
Server-side processing on premium tiers fetches one page at a time, keeping large tables responsive without dumping the full dataset into the browser.
Can You Restrict Who Is Allowed to Edit a WordPress Data Table?
Front-end editing permissions are set per user role, so an admin can allow one role, like Editor or Subscriber, to update rows while everyone else only views the table.
Back-end editing stays limited to admin users by default.
Do You Need Coding Knowledge to Build a WordPress Data Table?
No coding is required for simple, linked, or manual tables, since the table wizard handles the structure.
A MySQL query table is the one exception, since writing or adapting a SQL query needs at least basic database knowledge.
Can One WordPress Data Table Be Reused Across Multiple Pages?
Yes. The same shortcode or Gutenberg block can be pasted onto as many pages as needed.
Placeholder variables let that single table display different filtered results depending on which page it’s placed on.
What Should You Decide First When Making a Data Table in WordPress?
The first decision in how to make a data table with WordPress is where the data already lives, not the plugin interface, since a WordPress data table‘s structure follows the data source.
Three decisions follow in a fixed order, and skipping ahead usually means rebuilding the table later.
- Confirm where the data lives, in a file, a database, or nowhere yet
- Match that source to one of the four table types
- Pick a license tier based on row count and required features
wpDataTables lists compatibility through WordPress 7.0 as its tested ceiling (WordPress.org, 2026), worth rechecking on a freshly upgraded site.
Committing to a higher tier for live database access trades yearly cost for capability most single-catalog sites never touch.
Once published, the next practical step is checking the table against modern accessible tables standards, since screen readers interpret sortable headers differently than a mouse click.




