Importing & Exporting Custom Tables
Where to import/export
- Open the Custom Tables feature in the app (not in Settings).
- Use Import to add tables from files; use Export to save your tables for sharing/backups.
- Unlocking note: on Google Play, Amazon, and the Apple App Store, Custom Tables requires an IAP; Itch.io and Microsoft Store include it with a higher‑priced purchase.
Quick rules (TL;DR)
- File encoding: UTF‑8 (CRLF or LF line endings are OK)
- Table types:
meaning-table
orevent-focus
- Range coverage: Your entries must fully cover 1 → N without gaps/overlaps
- Formats:
- CSV: requires
range_start, range_end, result
(range‑based only for now) - TXT: one entry per line (+ optional table_type line)
- PSV:
endpoint|result
with endpoints that produce 1..N ranges - JSON v3: full‑fidelity schema, including translations and links
- CSV: requires
- Weighted tables: Not supported yet. Use explicit ranges instead
CSV format (range‑based)
Required columns:
range_start
,range_end
,result
Optional columns (order doesn’t matter):
description
,tags
(semicolon‑separated),entryRollOn
,id
,table_description
,table_type
Notes
- Header names are case‑insensitive
table_type
is optional; if used, only the first data row should contain a value- Conflicting or invalid values are rejected with a clear error message
Samples
- Meaning Template (CSV): Download
- Meaning Example (CSV): Download
- Event Focus Template (CSV): Download
- Event Focus Example (CSV): Download
TXT format (one per line)
- One entry per line. Simple and fast for short lists.
- Optional
table_type: meaning-table
(orevent-focus
) line may appear on the first or last non‑empty line.
Samples
PSV format (pipe‑separated endpoints)
- Each line:
endpoint|result
- Endpoints must ascend; first range starts at 1; last endpoint becomes the table’s rangeEnd
- Optional table_type line may appear at the beginning or end
Samples
JSON (Unified Table v3)
- Full‑fidelity fields (translations,
tags
,data
,tableRollOn
,entryRollOn
) tableType
is part of JSON; valid values:meaning-table
orevent-focus
- IDs: table IDs are snake_case; category IDs are kebab‑case
Samples
- Meaning Template (JSON): Download
- Meaning Sample (JSON): Download
- Event Focus Template (JSON): Download
- Event Focus Sample (JSON): Download
Foundry VTT JSON (auto‑mapping)
Detected automatically when a JSON includes a results
array with entries that contain _id
, text
, and a range
array.
Mapping highlights
name
→displayName
description
→description
results[].text
→entries[].result
results[].range
→entries[].range
(e.g.,[min, max]
)- Unknowns preserved under
data.foundry
- Event Focus imports enforce
categoryId = "event-focus"
Samples
Validation & troubleshooting
- Range coverage: 1 → N with no gaps or overlaps
- Headers spelled correctly (case‑insensitive)
- No blank required fields (
result
, etc.) - If a file is invalid, the app shows an exact error and refuses to save, so your data stays safe
Next steps
- Get oriented and create your first tables: see “Getting Started with Custom Tables”
- Organize categories, icons, and links: see “Organizing Custom Tables”
- JSON field reference: see “Custom Table Schema” and “Categories Schema”