Some information is simply clearer in rows and columns: delivery charges by area, a size chart, which service includes what, or class times across the week. Written out as paragraphs it turns into a puzzle. Many owners have the figures in a spreadsheet already and just want them on a page without retyping everything.
WordPress can do this on its own. To add a table in WordPress you use the Table block, which handles header rows, captions, striped styling and pasting from a spreadsheet. It also has limits, and a phone screen is where they show. Here is the full process, and the point at which a plugin becomes worth it.
First, check a table is the right tool
A table is for data that has two directions: each row is a thing, each column is a property of that thing. “Area, delivery charge, delivery days” is a table. A list of your services with a paragraph about each is not, and it reads better as headings and text.
Tables are also not a layout tool. If you want two blocks of content side by side, use columns instead, as explained in our post on building side-by-side layouts with columns. A table used for layout confuses screen readers and breaks badly on phones.
How to add a table in WordPress
- Open the page and place your cursor where the table should appear.
- Insert a Table block, either from the inserter (our block editor guide for site owners shows where it is) or by typing /table into an empty line.
- The block asks for a column count and a row count. Enter the numbers you need for now (you can add more later) and click Create Table.
- Click into the first cell and type, then click into each of the others in turn.
- Save your draft and look at it in Preview, including at mobile width.
Cells accept text, bold and italic, and links. They do not accept other blocks, so you cannot put an image or a button inside a cell with the core Table block.
Adding rows, removing columns and other edits
Click into any cell, then open the Edit table button on the block’s toolbar. It offers:
- Insert row before, Insert row after, Delete row
- Insert column before, Insert column after, Delete column
Each action works relative to the cell your cursor is in, so click into the right row or column first. The toolbar also has a column alignment button for left, centre or right alignment of the column you are in. Numbers and prices are easier to compare when they are right-aligned.
The core block has no way to merge cells and no way to sort rows. If you need either, see the plugin section below.
Turn on a header row and a caption
Select the Table block and look at the sidebar. In the settings you will find toggles for Header section and Footer section.
- Header section adds a top row marked as column headings. Most themes show it in bold, and screen readers use it to announce which column a value belongs to. Turn it on for almost every table.
- Footer section adds a final row for totals or notes. Most tables do not need one.
- Fixed width table cells makes every column the same width, regardless of what is in it. Useful for a neat grid of short values, less so when one column holds long text.
A caption is a short line under the table explaining what it shows, such as “Delivery charges from 1 April, including tax”. Add it with the Add caption button on the block toolbar. It helps everyone, and especially people using screen readers. Our accessibility checklist for business websites covers tables alongside the other common checks.
Pasting a table from Excel or Google Sheets
This saves a lot of typing.
- In your spreadsheet, select the cells you want, including the heading row, and copy them.
- In the WordPress editor, click into an empty paragraph block and paste.
- WordPress normally converts the pasted cells into a Table block automatically. Turn on Header section afterwards if your first row is headings, because the paste usually brings it in as an ordinary row.
What does not survive well: cell colours and fonts from the spreadsheet, formulas (you get the result, not the formula), and sometimes merged cells. Check every row after pasting. If a paste gives you plain text instead of a table, try copying from a different browser or app, as the result depends a little on where the cells came from.
Remember that the pasted table is a copy. When the spreadsheet changes, the page does not. If the figures change often, either keep one person responsible for updating both, or use a plugin that imports the file.
Tables on phones
A table with four or five columns does not fit on a phone screen. With the Table block, most themes let the table scroll sideways inside its own area, so the page itself does not stretch. That works, but many visitors do not realise they can swipe, and they miss the right-hand columns.
Ways to make it easier:
- Keep it narrow. Three columns fit far better than six. Move rarely-needed details into a note under the table.
- Put the most important column first, right after the row label, so the key value is visible without scrolling.
- Keep cell text short. “Mon–Fri” rather than “Monday to Friday”.
- Split one wide table into two smaller ones if they answer different questions.
- Add a short line above it such as “Swipe the table to see all columns” when it has to stay wide.
Check the page on a real phone, not just the editor’s mobile preview.
Styling the table
Under the block’s Styles you can usually choose Default or Stripes. Stripes shades alternate rows, which helps the eye follow a row across a wide table. Many themes also let you set text and background colours and a border on the table. Keep it simple: a clear header, light stripes and readable text size matter more than colour. How tables look overall comes from your theme, so they may look different after a theme change.
When a table plugin earns its place
The Table block covers most small business needs. A dedicated table plugin, such as TablePress, is worth considering when you need:
- sorting, searching or pagination for a long table
- to import from a spreadsheet file and update it by importing again
- the same table on several pages, managed in one place
- merged cells or more complex layouts than the core block supports
Weigh it like any other plugin, though: each one is something more to update and keep an eye on, which is part of the routine our guide to managing a WordPress website sets out.
If what you want is a set of price boxes with features and a button under each, that is a different job. Our post on building a pricing section covers the options for that.
Frequently asked questions
Can I put an image or a button inside a table cell?
Not with the core Table block. Its cells hold text, links and simple formatting only. If you need images or buttons in a grid, a Columns or Grid layout usually works better, and some table plugins allow images in cells if the data really needs to stay in a table.
Will Google read the information in my table?
The Table block outputs a normal HTML table, which search engines can read like any other text on the page. A table pasted as an image cannot be read the same way, so always use a real table. Clear headings and a caption also make the content easier to understand.
How do I change a table’s column widths?
The core Table block does not have a width control for each column. Columns size themselves to their content, or become equal when Fixed width table cells is turned on. For exact widths you need a table plugin or a little custom CSS added through your theme.
Can I upload a CSV file directly into a table?
Not with the core block. You can open the CSV in a spreadsheet app, copy the cells and paste them into the editor, which usually creates a table. Table plugins such as TablePress can import CSV and spreadsheet files directly and update the table when you import a new version.
A long price list or timetable that changes every month is worth setting up carefully once. Our WordPress support service can build it with you and agree how future updates will be made.
Next in this series: WordPress Block Patterns and Synced Patterns Explained