Tables and rows
Updated 2026-08-13
Two hundred weapons, each with damage and a picture. Written as two hundred separate pages, that is two hundred chances to format a number differently.
A table is the alternative: keep the facts once, in rows and columns, and let pages read from it.
What a table is
A table has columns, the facts you keep, and rows, one per thing. Each column has a type: text, number, date, yes/no, picture, or JSON for a nested list.
Add a table
- Open your wiki and click Manage.
- Go to Media, then the Data tab.
- Click New table and upload a CSV or JSON file, or paste the data in.
- Check the detected column types, fix any it got wrong, and give them readable names.
- Save.
Spend a minute on the column names. You will see them in every inspector, picker and condition from now on, and “Health” reads better than “hp_val” every time.
Re-uploading later replaces the rows and keeps the columns, which is how a table stays in step with a game patch without anything else needing an edit.
Connect a page to a row
A page becomes data-driven by being bound to one row. The page keeps its own address and its own writing; the row supplies the facts.
- Open the page in the editor.
- Open the Binding panel.
- Choose the table, then the row this page is about.
- Click Bind to row.
From then on, blocks that read a column draw this row’s values, and the editor shows them while you work rather than after you publish.
A page for every row
Binding one page at a time is fine for a handful. For a whole table, generate them:
- Go to Media to Data and open the table.
- Click Generate pages.
- Choose the address they live under.
enemies/gives youenemies/grunt,enemies/assassin, and so on.
Each generated page is bound to its row automatically. They start empty, which is the moment to give them all one design at once. See One layout for every entry.
When the columns change
A re-upload can rename or drop a column. Blocks reading the old name do not error, they render empty, which is the worst way to find out.
So the table has a drift screen listing every block still pointing at a column that no longer exists, across your pages and the shared layout.
Check it after any re-upload that was not a straight data refresh. Five minutes there beats a reader telling you a stat block has been blank for a month.
Correct a single value
Sooner or later one row is wrong. You do not have to edit the file and re-upload: a bound page’s editor has a Row data panel that edits that row’s values directly.
Those edits are overrides. They sit on top of the uploaded data, so a re-upload replaces the source and your corrections are applied again on top.
Everything that reads the row sees the corrected value: pages, lists, the editor’s preview.






