Tablumo user guide
Documented version: v2.295.0 · June 2026 · Generated from the in-app manual, so the guide and the app stay in step.
Tablumo also has this same handbook built into the app — open it from the Help menu or press ⌘K and search “User manual”. It is searchable and navigable by feature, area by area.
Getting started
Importing data
Tablumo works on tables of data you bring in from your own files. Everything happens on your computer — your data is read and analysed locally in the browser and is never uploaded to a server.
There are three ways to bring data in, and you can mix them freely — each file or paste becomes its own table you can switch between in the sidebar.
- Drag a file straight onto the window, or use the "Add data" / import control to pick a file from your computer.
- Paste a table directly: copy a range from a spreadsheet or a web page and paste it into the import area — Tablumo detects the columns and rows.
- Load one of the built-in sample datasets to explore the tool without your own file (see "Sample datasets").
- CSV (.csv) — Comma-separated text. The most common export format from other tools.
- TSV (.tsv) — Tab-separated text, handled the same way as CSV.
- Excel (.xlsx / .xls) — Workbooks open directly; pick the sheet you want to read.
- Pasted text — A table copied from a spreadsheet, document, or web page.
As a file loads, Tablumo reads the column names from the first row and works out whether each column holds numbers, dates, or text. Large files stream in, so a multi-million-row file becomes usable without waiting for the whole thing to load into a grid at once.
Before the table opens you get a chance to confirm or adjust each column’s type and display format — for example marking a "revenue" column as currency rather than a plain number. See "Confirming column types and formats" for that step.
You can have several tables open at once. They appear in the sidebar; click one to make it the active table. Bringing in a second file does not replace the first.
- Got the wrong file? Just import again — the new table is added alongside, and you can remove any table you no longer need (see "Removing a dataset").
- Columns look shifted or the header row is wrong? Re-import and adjust the type/format step, or fix individual columns later from the column header menu.
Sample datasets
If you want to explore Tablumo before bringing in your own file, the start screen offers three ready-made sample datasets. Each is a realistic business table with a mix of text, number, currency and date columns, so every feature — sorting, filtering, charts, dashboards — has something meaningful to work on. The data is generated on your device when you pick it: nothing is downloaded and nothing leaves your computer.
- Retail sales — About 600 orders across regions, categories, products and channels (Date, Region, Category, Product, Units, Revenue, Channel). A natural first chart is revenue by region.
- Marketing campaigns — About 480 campaign rows with spend, clicks and conversions by channel (Date, Channel, Campaign, Impressions, Clicks, Spend, Conversions, Revenue). Good for comparing return on ad spend.
- Support tickets — About 520 tickets with resolution time and satisfaction by priority (Date, Priority, Category, Status, Agent, ResolutionHours, Reopened, Satisfaction). Useful for spotting where help is slow.
- On the empty start screen, find the "No data yet? Start with a sample dataset" gallery below the import area.
- Click a card — it loads as a normal table you can sort, filter, and chart right away.
- Want another sample later? Open the command palette with ⌘K and choose Sample datasets to add one at any time.
- When you are ready, import your own file — you can keep the sample open alongside it or remove it.
Sample data behaves exactly like your own data: nothing is read-only and no feature is disabled, so anything you learn on a sample transfers directly to your files.
Column types and how figures are formatted
When a file loads, Tablumo reads each column and works out its type — number, date, or text — from the values themselves, then opens the table straight away. There is no separate confirm-the-types step to click through: the detection happens as the file imports, and a short toast names what landed and its shape so you can see it completed.
- Number — Plain numeric values — can be summed, averaged and given a money, percent or separator format.
- Currency — A number you have chosen to show with a currency symbol (for example USD), so a “revenue” field reads as $1,250 rather than 1250. Currency is a display format applied to a number column, not a separate detected type.
- Percent — A number shown with a % sign — again a display format, not a type of its own.
- Date — A date or timestamp, recognised so it can be sorted and rolled up by day, week, month, quarter or year.
- Text — Labels and categories — anything that is not a number or date.
The type a column is read as is inferred from its data and is not switched from a menu — there is no “treat this column as a date” control. What you do control, at any time, is how a column displays: open the column’s header menu in the grid to format a number column as currency, a percentage or with separators, or to roll a date column up to a coarser period. These are display choices only and never change the underlying values.
Getting the type right matters beyond appearance: a column read as a date can be bucketed into time periods in charts and the grid, a number can be summed and averaged in the totals footer, and a currency or percent format carries through consistently to tables, charts, tooltips and exports.
If a column you expect to be a number or a date comes in as text — usually because a few cells hold stray characters or an unusual layout — clean the source and re-import, since the type is read from the data rather than set by hand. For the full set of display formats and the date roll-up choices, see Number, currency and percent formats and Displaying dates by month, quarter or year.
The data grid
Reading the data grid
The data grid is the table view of the active dataset. It shows your rows and columns much like a spreadsheet, and it stays fast even on very large tables because only the rows in view are drawn at any moment — you can scroll through millions of rows smoothly.
The row count shown reflects what is currently in view: with no filters it is the full table, and as you apply filters it updates to the number of matching rows, so you always know how much data you are looking at.
- Scroll vertically to move through rows; the header row stays pinned in place at the top so you never lose track of which column is which. When a table is wider than the panel, scroll sideways too.
- Numbers, currency, percent and date columns are shown in the display format set for them, right-aligned where that aids reading.
- Click a column header to sort; click again to reverse — see "Sorting".
- Open a column’s header menu for that column’s actions — see "The column header menu".
You can set how wide each column is. Hover the right edge of a column header and a thin resize handle appears; drag it left or right to make the column narrower or wider, and the rest of the table reflows as you drag so you see the result immediately. Widths are clamped to a sensible range (roughly 48 to 640 pixels) so a column can never collapse to nothing or run away across the screen.
To size a column to its contents in one move, double-click that same right-edge handle: the column snaps to just wide enough to show its header and the values in view (auto-fit), with no manual dragging. This is the quickest way to reveal a column whose text is being cut off.
Column widths are saved with the analysis, alongside column order and which columns are hidden, so the layout you set up is exactly what you see the next time you open it.
Sorting
Sorting reorders the rows so the values you care about come first.
- Click a column header to sort by that column. A small arrow shows the direction, and the header tooltip spells out what the order means in plain words — "low to high" or "high to low" for numbers, "oldest first" or "newest first" for dates, "A → Z" or "Z → A" for text.
- Click the same header again to flip between ascending and descending; click a third time to clear that sort and return to the original order.
- To sort by more than one column — for example region first, then revenue within each region — hold Shift and click each header in turn. Each shift-click adds that column to the sort while keeping the earlier columns as the primary order, so ties are broken by the next column down.
- A small superscript number next to each sorted header (¹, ², ³ …) shows its place in the order, so you can see which column wins ties. The footer below the grid also names the full order in words, e.g. "sorted by Revenue (high to low), then Owner (A → Z)".
- Shift-click a header that is already in the sort to flip just that column’s direction without disturbing the others; shift-click it once more to remove only that column from the sort.
A plain click (without Shift) always starts over with a single sort column, so it is the quick way to drop a multi-column sort and sort by just one. Sorting only changes the order rows are shown in — it never changes or loses any data.
The column header menu
Every column carries its own menu that gathers the actions for that one column — sorting, filtering, formatting, renaming, hiding and more — in a single place, so you rarely have to hunt through the toolbar for a per-column action.
A plain click on a column header sorts by that column, so the menu has its own ways in. Open it whichever way suits you:
- The ⋯ button — Hover a column header and a small ⋯ (more) button appears towards its right edge; click it to open the menu right under the header. It carries exactly the same actions as a right-click.
- Right-click the header — Right-click (or Ctrl-click on a Mac) anywhere on a column header opens the menu at the pointer — the quickest route once it is in your fingers. The header’s tooltip reminds you: “Right-click for more (sort, filter, hide…)”.
- Long-press on touch — On a phone or tablet there is no right-click, so press and hold the header for a moment to open the same menu.
- From the keyboard — Tab to the ⋯ button and press Enter or Space to open the menu without a mouse.
The menu is headed by the column’s name, so you always know which column you are acting on. Below it sit the actions, and only the ones that make sense for that column’s type appear — a text column never offers number formatting, and a number column never offers value grouping.
- Copy the name — “Copy column name” puts the header text on the clipboard; on a table with more than one column, “Copy all column names” copies every visible header as a comma-separated list — ready to paste a SELECT list into the SQL console. See Copying from the grid.
- Sort — “Sort ascending” and “Sort descending” order the table by this column, and “Clear sort” returns it to its natural order. See Sorting rows for shift-click multi-column sorting.
- Filter — “Filter on this column…” (or “Edit filter…” when one is already set) opens a filter scoped to that column. See Filtering basics.
- Group — “Group by this column” collapses the grid to one row per value with totals; on a text column, “Group values…” merges several raw values into one tidy label. See Grouping and summarising and Grouping values together.
- Format — On a number column, “Format as currency…”, “Format as percent…” and “Number format…” change how the figures read without touching the values; on a date column, “Display date by…” rolls dates up to week, month, quarter or year. See Number, currency and percent formats.
- Rename — “Rename column…” gives the column a clearer display name that is then used everywhere — grid, filters, charts and exports — without changing the underlying data.
- Width — “Auto-fit column width” sizes the column to its content and “Reset column width” returns it to the default. See Resizing, reordering and hiding columns.
- Hide — “Hide column” tucks the column out of view without deleting anything; bring it back from the Columns button. See Resizing, reordering and hiding columns.
- Calculated columns — “ƒx New column…” starts a formula column, and “Edit formula…” appears on one you have already built. See Calculated columns.
Every action here works on the live view: it never rewrites your imported data, and renaming or reformatting a column flows through every chart, filter chip and export afterwards. If you are ever unsure where a per-column action lives, this menu is almost always the answer — right-click the header and read down the list.
Number, currency and percent formats
A number column can be shown as money, as a percentage, or as a plain number with separators, without re-importing the file. Open the column’s header menu and pick “Format as currency…”, “Format as percent…”, or “Number format…”; each opens a short submenu of choices, most labelled with a worked example so the result is obvious before you click.
These are display formats only: the underlying values are never changed, so sums, averages and filters still use the real numbers. The chosen format carries through everywhere the column appears — the grid, charts, tooltips and exports — and the three styles are mutually exclusive, so a column shows at most one of them at a time.
- Format as currency — Pick a currency by symbol, name and code (for example $ US Dollar (USD)), or choose “Code from a column…” to take each row’s currency from a text column that already holds codes like USD or EUR.
- Format as percent — Either multiply by 100 for a ratio (0.23 → 23%) or simply append the % sign for values already in percent (23 → 23%), at 0, 1 or 2 decimal places.
- Number format — Thousands separators (1,234.5), fixed decimals with no grouping (1234.50), or compact shorthand (1.2K, 3.4M) — at 0, 1 or 2 decimals where it applies.
- Each submenu starts with “Plain number” (or “Default”) so you can clear the format and return the column to its raw display.
- Once a format is set on one column and the table has more than one numeric column, an “Apply to all number columns” item pushes the same format onto every numeric column in one click.
- A “Reset formats on all number columns” item appears whenever any column carries a format, clearing them all at once.
Format one representative column the way you want, then use “Apply to all number columns” to make the whole table consistent in a single step — and “Reset formats on all number columns” to undo it just as quickly.
Managing columns
Wide tables are easier to read when you show only the columns you are working with, in the order that suits the task, at a width that fits their contents. Column management lets you arrange all three.
- Hide a column you don’t need right now from its header menu, and show it again later — the data is untouched.
- Reorder columns so related fields sit next to each other — grab a column header and drag it sideways onto another, then let go to drop your column into that spot (see below).
- Resize a column so nothing is cut off and no space is wasted (see below).
- Open the Columns button to tick exactly which columns appear — especially handy on very wide tables (see below).
- Your choices are part of the analysis, so they are kept when you save and reopen it.
The Columns button above the grid opens a picker that lists every column with a checkbox and a small type badge. Tick a column to show it, untick it to hide it — the grid updates as you go, and nothing is deleted. Once anything is hidden the button reads “Columns (N hidden)” so you always know some fields are tucked away, and a “show all” link inside the panel brings them all back at once. A “reset” link returns to the original column order with everything visible. The picker never lets you hide the last visible column, so you can’t empty the grid by accident.
- Search columns — On tables with more than eight columns a search box appears at the top of the picker. Type part of a name to jump to it, or type a type filter like “type:number”, “type:date”, “type:text” or “type:boolean” to list only columns of that kind.
- Type chips — When a table mixes several data types, a row of type chips (Number, Date, Text…) sits under the search box. Click one to show only columns of that type; click it again, or “all types”, to clear the filter.
- Show only these — When the picker is narrowed by a search or type chip, a “Show only these N” action hides every other column in one click, so you can focus the grid on just the matches. It’s fully reversible with “show all”.
- Hide these — The companion “Hide these N” action does the opposite — it hides the columns currently listed and keeps the rest — as long as at least one column would stay visible.
- Drag a header to reorder — Press on a column header — anywhere except its right edge — and drag sideways. The header you are carrying fades, and the column you hover over shows a coloured bar down its leading edge to mark where the drop will land. Release to drop your column into that place and the others slide over to make room. Hidden columns are skipped, and the new order is saved with the analysis.
- Drag the edge to resize — Hover the right edge of a column header until the pointer changes, then drag left or right. The column widens or narrows as you drag, so you can see the fit before you let go. (Dragging the edge resizes; dragging the body of the header reorders.)
- Double-click to auto-fit — Double-click that same right edge and the column snaps to just wide enough for its widest visible value — handy when a heading or a few long entries are being clipped.
Widths you set by hand stick to those columns and come back when you reopen the analysis, alongside which columns are shown and their order. To start over on a column, double-click its edge to let it auto-fit again.
Finding text across the table
Above the grid is a “Find in data…” box. Type into it and the table keeps only the rows that contain your text, with the matching text highlighted in the cells. It searches every column at once, so it is the fastest way to pull up a customer, an order number or any value when you do not yet know which column it lives in.
The find box is a filter like any other: the row count, the totals footer, your charts, your dashboards and anything you export all reflect what the search left on screen. Your data is never changed — clearing the box brings every row back.
- Several words — Type more than one word to keep only rows that contain all of them, in any columns — “west enterprise” finds rows mentioning both “west” and “enterprise”.
- "Quoted phrases" — Wrap words in double quotes to search for them together as one phrase — "new york" stays a single term instead of two separate words.
- -exclude a word — Put a minus in front of a word (or a -"quoted phrase") to drop the rows that contain it — “enterprise -west” keeps enterprise rows but hides the western ones.
- One column only — Use the scope dropdown beside the box to limit the find to a single column instead of every column — handy on wide tables. The box then reads “Find in <column>…”; clear the scope to search everything again.
- Match case (Aa) — The find is case-insensitive by default. Press the Aa button to require an exact case match, so “WEST” no longer matches “west”.
When you use more than one word or a -exclusion, each term appears as a small chip under the box. Click a chip to drop just that one term without retyping the rest. The × button clears the whole search at once.
The totals footer
Under the grid, every visible number column carries a totals footer that pins its Sum just beneath the rows, so a running total is always in view as you scroll and sort. Text and date columns have no footer total; only numeric columns do.
You are not limited to a sum. Right-click a footer cell (or press and hold it on a touch screen) to open a “Summarize <column> by” menu and switch that one column to a different aggregate. Each column is independent, so you can keep revenue as a Sum while showing the average order value beside it.
- Sum — The default — every value in view added together.
- Average — The mean of the values in view.
- Median, Mode — The middle value, and the most common value — both less swayed by a few extreme rows than the average.
- Min, Max — The smallest and largest values in view.
- 25th / 75th / 90th pct — Percentiles, for seeing where the bulk of the values sit and how long the tail runs.
- Std dev, Variance, Coeff. of variation — How spread out the values are around their average.
- Count distinct — How many different values the column holds — a count, not a total.
When a column shows anything other than a Sum, a small tag sits in front of the footer value — “avg”, “median”, “p90”, “distinct” and so on — so you can tell at a glance what each total means.
The footer totals are honest: each one is computed directly over all the rows currently in view, never added up from the cells on screen. So when a filter or a find narrows the table, the footer updates to describe that subset exactly — and clearing the filter restores the full total.
Copying values, rows and column names
You do not have to export a whole file just to grab one value. Right-click any cell (or press and hold it on a touch screen) and the menu that opens has copy actions at the bottom, alongside the filter actions. A short confirmation appears each time so you know the copy landed on your clipboard.
- Copy value — Copies just that one cell’s value — handy for pasting an order number, a customer name or an id somewhere else.
- Copy row as TSV — Copies the whole row as a tab-separated line with its column names, so it pastes straight into a spreadsheet as a tidy labelled row.
- Copy row as JSON — Copies the whole row as a self-describing { "column": value } object — ready to drop into code, a config file or an API payload.
Right-clicking a column header instead gives you “Copy column name”, and on a table with more than one column a “Copy all column names” that copies every visible header as a comma-separated list — exactly what you need to paste a SELECT list into the SQL console or a column set into a formula.
Row and column-name copies follow what the grid is actually showing: only the visible columns, in the order they appear. So hide or reorder columns first and the copied text matches the view — no stray columns you had tucked away.
Displaying dates by month, quarter or year
A date column often holds more detail than you want to read — one row per day, or a full timestamp down to the second. You can have the grid display those dates rolled up to a coarser period, so a “2026-03-14” reads simply as “March 2026” or “2026”. Right-click the date column’s header (or press and hold it on a touch screen) and choose “Display date by…”.
- Year — One row label per calendar year — the broadest view.
- Half-year — Splits the year in two: January–June, then July–December.
- Quarter — Four periods a year, three months each (Q1–Q4).
- Month — One label per calendar month — the most common choice.
- Week — One label per week, starting Monday.
- Day — One label per day, hiding the time of a timestamp.
- Actual date — Turns the roll-up off and shows the full, original date again.
Once a column is rolled up, its header shows a small badge — for example “· Month” — so you can see at a glance that the dates on screen are a display, not the raw values. The header menu label also changes to “Display by: Month…” to mark the active choice. Pick “Actual date” from the same menu to go back to the full dates.
This is a display setting only: the underlying dates never change. Filters, sorts, charts and exports all keep working from the real, full dates, so rolling a column up to months purely to make the grid easier to scan never quietly coarsens anything else. To actually group rows by a period — and total them — use a chart with a date on the X axis, or the totals footer.
Filtering
Filtering: the basics
Filtering narrows the table to the rows that match conditions you set, so every other view — the grid, charts, and counts — updates to that subset. Filters never change the underlying data; clearing them brings everything back.
Filters live in the filter panel on the right side of the window. Add a filter on any column, and combine several at once — the table shows the rows that satisfy all of them together.
Combined filters use AND by default, so a row has to match every one. You can change how two filters combine: the small connector button between a pair of filter chips flips that gap from AND to OR, letting you keep rows that match one condition or another. For anything more involved, the “Logic…” editor lets you type an expression over the numbered chips — for example 1 AND (2 OR 3) — to group the conditions exactly how you want. See “Filter chips” for the connector buttons and the custom logic editor.
- Open the filter panel and choose the column to filter on.
- Set the condition — the controls match the column type (see below).
- The grid and row count update immediately; add more filters to narrow further.
Every active filter also appears as a chip you can see and remove at a glance — see "Filter chips".
Filter types
When you add a filter, Tablumo chooses the control that fits the column — you never pick an operator from a menu first. A text column you can list gets a tick-list of its values; a free-text column too varied to list gets a contains box; a number column gets a range; a date column gets a date range; and a true/false column gets a tiny two-value list. So the filter you get already speaks the language of the data underneath it.
- Category tick-list — A text (or boolean) column with a manageable number of distinct values shows them as a checklist — tick the ones to keep. A search box appears once there are more than eight values, with an (all) toggle and an Invert button to flip what is ticked.
- Contains box — A free-text column with too many distinct values to list cleanly gives a single “contains…” box instead: type a word and it keeps every row whose cell contains it. This is the sidebar twin of the grid’s find box.
- Number range — A whole/decimal number column gives a minimum and a maximum — type either bound or drag the slider. Leave one end blank for an open-ended “at least” or “at most”. See “Number range filter” for the slider in detail.
- Date range — A date or date-time column gives a From and a To date, keeping the rows that fall between them. Either end can be left open.
- True / false — A boolean column shows just its two values (and a blanks row if any cell is empty), so you keep true, false, or either.
Every filter can be turned inside out. A tick-list carries an “is / is not” switch at its top: leave it on “is” to keep the ticked values, or flip it to “is not” to keep everything except them — the ticks you already made carry straight over. A contains box has the matching “contains / does not contain” switch. Inverting is honest about blanks: a row with an empty cell does not “contain” your word, so a “does not contain” keeps it rather than quietly dropping it.
Blank cells are handled explicitly so they are never lost by accident. In a tick-list, empty values appear as their own “(blank)” row you can tick or untick like any other; in a range or date filter the panel keeps the blanks visible as a choice rather than silently excluding them. And if you ever tick nothing at all — or type an empty contains box — a small note warns you that the filter currently matches no rows (or every row), so an empty view is always explained, never a mystery.
On a long tick-list, type in its search box and use “select matching” to tick every value your search found in one go — far quicker than hunting down each one. Whichever control a column gives you, the result is the same kind of removable chip above the grid (see “Filter chips”), and several filters still combine with AND or OR (see “Filtering: the basics”).
Number range filter
When you filter a numeric column — an amount, a price, a count — the filter shows a range control: a two-handle slider above a pair of min and max boxes. You can set the range either way, and the two always stay in step, so drag for a quick sweep or type when you need an exact figure.
- Drag the left handle to raise the lower bound and the right handle to lower the upper bound; the filled bar between them shows what you are keeping. While you hold a handle a small bubble floats above it with the live value (shown as currency when the column is money), so you can see where you are landing.
- Or type a figure into the “min” and “max” boxes. The boxes hint at the smallest and largest values actually in the data, so you know the span you are working within. Leaving a box empty keeps that side open-ended — a min on its own means “this much or more”, a max on its own means “up to this much”.
- A short caption under the control reports the window you have chosen and how much of the column’s span it covers (for example “$10k–$50k · 40% of the range”), so a narrow slice is obvious at a glance.
- Pull a handle to the edge — Dragging a handle all the way to the data’s own minimum or maximum clears that bound back to “any”, so the filter never silently pins itself to the exact edge of the data — one side simply opens up again.
- Keyboard nudge — With a handle focused, the arrow keys move it one step at a time for precise adjustments without the mouse.
- Impossible range — If you type a min that is above the max, a small notice warns that nothing can match, so an empty result is never a mystery — just widen one bound.
- From a histogram sweep — A range dragged out on a histogram lands here as a filter whose upper bound is excluded (shown as “– <”). Typing a new max turns it into an ordinary inclusive bound.
To find outliers fast, type just one bound — for example a min on a deal-size column — and leave the other empty to keep every row above that figure, however large.
Filter chips
Every filter you apply is shown as a small chip in a bar above the view, so the conditions narrowing the table are always in sight rather than buried in the sidebar. One glance answers “why does the data look like this?”. The bar stays visible in every view, which makes it especially useful when the filter panel itself is hidden. At the end of the bar a live “N of M rows” count tells you how much of the table the filters are keeping, and it updates the instant any chip changes.
Each chip names the column and the condition it applies, shown in a compact form — hover a chip and its tooltip leads with the exact, fully spelled-out condition (for example “Amount ≥ €50,000”), so precise bounds are one hover away. Nothing about your data is altered: chips only describe the filters in front of you, and removing one always brings its rows straight back.
- Click a chip to edit it — Clicking a chip’s label opens the filter sidebar focused on that filter, so adjusting a bound or a value list never means hunting for the right control.
- ✕ to remove one filter — The × on a chip removes just that filter; the table widens back out immediately and the row count catches up.
- Clear all — When more than one filter is active a “Clear all” button sits at the end of the bar to drop every filter at once and return to the full table.
- Row count — The “N of M rows” pill is the honest tally of how many rows survive the current filters out of the whole table — it is the same count the rest of the app works from.
Right-click a chip (or press and hold it on a touch screen) for more than removal. The menu opens under the chip’s exact label and lets you see precisely what a filter is doing before you trust it — including the rows it is hiding.
- View kept rows — Opens the same drill-down panel a chart click uses, showing the rows this filter keeps. The count is shown inline — “View kept rows (12,431)” — so the number is answered before you even click.
- View removed rows — The mirror image: the rows this filter is hiding, again with the count inline. When a chip belongs to an OR branch and adds rows rather than restricting them, this reads “View rows only this filter adds” instead — the wording always matches what the chip actually does.
- Edit in sidebar… — The same as clicking the chip — jumps to the filter’s controls in the sidebar.
- Remove filter — Drops this one filter, like its ✕.
- Remove all N <column> filters — Appears only when a single column has grown two or more chips (say a values pick plus a range). It clears them all in one step instead of dismissing each ✕ in turn.
By default filters combine with AND — a row must satisfy all of them. When you have two or more chips, the small word between each pair (“AND”) is its own button: click it to flip just that one connector to “OR”, and click again to flip it back. This lets you build mixed logic chip by chip — keep the first two joined by AND while the third is joined by OR. AND binds tighter than OR, exactly as in SQL, so when the bar mixes the two, parenthesis glyphs wrap each AND group to show the grouping rather than leave it implied. The row count re-tallies with every flip.
For shapes the per-gap buttons can’t spell out — an OR nested inside an AND, or deeper grouping — a “Logic…” button (it shows as soon as there are two chips) opens a custom-logic editor. There the chips are numbered and you type an expression over those numbers, such as “1 AND (2 OR 3)”. You can click a numbered filter, or the AND / OR / ( / ) buttons, to insert tokens without typing, and a ⌫ button removes the token before the cursor. A live preview reads “Matches N of M rows” as you build, and Apply stays disabled until the expression is valid, so a broken one can never reach the view. While custom logic is on, every chip wears its number and the expression sits in a small pill at the end of the bar — click the pill to edit it again, or its ✕ to drop the custom logic and return to the plain AND/OR connectors.
Reach for “View removed rows” whenever a filter feels too aggressive — it shows you exactly what is being hidden, so you can confirm a chip is dropping only what you meant it to before you build a chart on top of the narrowed table.
Saving a set of filters to reuse
When you have built up a set of filters you expect to come back to — say a region, a stage and a minimum deal size — you can save the whole stack under a name and bring it back later with a single click, instead of rebuilding it each time. A saved set is called a preset, and the controls for it sit at the bottom of the filter panel.
- With the filters you want in place, click “Save current as preset”, type a short name, and press Enter. The preset appears as a small chip just above the button.
- To bring a saved view back, click its chip. Your current filters are replaced by the saved ones and the table narrows to match; a short note confirms which preset was applied.
- To remove a preset you no longer need, click the × on its chip. Saved presets are listed newest first, so the ones you make most recently stay close to hand.
- Save again to update — Saving with the same name as an existing preset overwrites it in place rather than making a duplicate — so refining a saved view is just a matter of adjusting the filters and saving under the same name.
- Works across tables — Presets are remembered for you generally, not tied to one file, so a view you build on one dataset can be applied to another. Any filters whose column is not in the table you have open are simply skipped, and the note names them (for example “skipped Region (not in this table)”), so you always know exactly what did and did not apply — never a broken filter, never a silent one.
- Mixed AND / OR is kept — If your filter stack mixes “match all” and “match any” conditions, that logic is captured in the preset and restored when you apply it, so the saved view behaves just as it did when you saved it.
- Stored on this device — Presets live in your browser on this computer, alongside the rest of your session — they are not written into your data file and not sent anywhere. Clearing the browser’s storage for the app clears them too.
Give presets names you will recognise at a glance — “Open enterprise deals” reads better on a chip than “filter 3”. A preset only stores the filter conditions, so applying one never changes, adds or removes any of your data.
Filtering or excluding a value straight from the grid
You do not have to open the filter panel to narrow the table to (or away from) a value you can already see. Right-click any cell in the data grid and the menu offers to filter on whatever is in that cell, so the fastest way to build a filter is often to point straight at an example of what you want.
- Right-click a cell holding the value you are interested in. Near the top of the menu you will see “Filter to this value” and “Exclude this value”.
- Choose “Filter to this value” to narrow the whole table to rows that match that cell. A removable filter chip appears above the view and in the filter sidebar, exactly as if you had built it by hand.
- Choose “Exclude this value” to drop every row that matches instead, leaving the rest. Right-click another cell and exclude again to keep peeling values away one at a time.
Whichever you pick, the result is an ordinary global filter: it shows as a chip you can edit or remove with its ✕, and every chart, dashboard tile and export narrows to match. Nothing is hidden behind a menu you have to remember — the condition is always visible once it is in place.
- Filter to this value replaces — Keeping a value sets the filter on that column to just that one value, replacing any filter you already had on the same column — so it is a clean “show me only this”, not an addition to whatever was there before.
- Exclude this value accumulates — Excluding builds a “not these” list on the column: keep right-clicking and excluding and each value joins the list, so you can carve away several at once. If the column already has a “keep only” list, excluding simply removes that value from it instead.
- Blank cells too — Right-clicking an empty cell offers to keep only the rows with no value in that column, or to exclude them — a one-click way to focus on, or get rid of, the gaps in a column.
- Dates read as periods — When a date column is displayed by month, quarter or year, the menu reads “Filter to this period” and “Exclude this period” and acts on the whole bucket (for example all of “Jun 2026”), matching what the cell actually shows rather than a single hidden timestamp.
This is the same kind of filter you get from the filter panel, so the two mix freely — start one from a cell, then open its chip in the sidebar to widen it into a range or add more values. To go the other way and inspect rather than filter, right-click a chart element to drill into its rows instead.
Exploring your data
Drilling into the rows behind a value
A chart, a group total, or a filter all summarise many rows into one figure. Drilling down opens the actual rows behind that figure in a table, so you can read the individual records that produced it.
You can drill from several places, and each one opens the same kind of rows table:
- A chart element — Click a bar, slice, or point in the Chart view to see the rows it represents.
- A group summary row — In a grouped table, right-click a group’s summary row to open the rows that roll up into it.
- A filter chip — Right-click an active filter chip to see the rows that condition is keeping.
The rows table names what you drilled into (for example, “Stage: Won”) and shows the exact matching count. It is sortable, and you can arrange or hide its columns independently of the main grid — each chart and each dashboard page remembers its own drill-down layout.
Drilling never changes your data or your filters; close the table and everything is exactly as it was.
Reading the rows one at a time
When you drill into the rows behind a value, the window opens as a table — every matching row across the page. For a row with many columns, reading one record across a wide table is awkward, so the window also offers a record view that lays a single row out vertically, every field down the page.
Two buttons at the top right of the rows window switch between the two layouts:
- Table — Every matching row in a sortable grid — the default, best for scanning and comparing rows.
- Record — One row at a time as a field-and-value card, best for reading a single record in full.
In the record card, each field reads exactly as it does in the grid: currency, percent and number formats, renamed column labels, and hidden columns all carry over, and an empty cell shows as null. Move between rows with the ‹ and › arrows; the counter reads “Record N of M”, and the number itself is editable — type a record number and press Enter to jump straight to it (a number below the first or beyond the last simply lands on the nearest end, so you can never overshoot). The card pages through the first 500 matching rows, and when a selection matches more than that the counter notes the cap. If the row has any empty (null) fields, a small “N of M fields empty” note sits beside the counter; click it to hide those empty fields and collapse a sparse record down to just the fields that carry data, and click again to bring them back.
You can also page through records straight from the keyboard, without reaching for the arrows: the left and right arrow keys step one record at a time, Page Up and Page Down jump ten, and Home and End go to the first and last record. The keys do nothing while you are typing in the “Find a field” box, so searching and paging never collide.
A “Find a field” box filters the card to the fields whose name or value matches what you type — useful for jumping straight to one column in a very wide record. As you type, a small count beside the box reads “N of M fields”, so you can see at a glance how far the search narrowed the record, and the matching text is highlighted right inside each field’s name and value so you can see exactly what your search caught.
- Copy — The Copy button at the top of the card copies the whole record as one label-and-value line per field — ready to paste into a spreadsheet. Once the “Find a field” box or the hide-empty toggle has narrowed the list, it copies just the fields you can see and says how many — “Copy 3” — so you never silently copy rows scrolled out of view. It shows a brief check when copied.
- Copy as JSON — The JSON button beside Copy grabs the same fields as a tidy JSON object — one key per field, empty fields as null — for pasting into a ticket, a chat message, or code. It honours the same field filter as Copy, so a narrowed card copies just the shown fields.
- Copy as a Markdown table — The MD button copies the same fields as a two-column Markdown table (Field | Value) — ready to paste into a ticket, a pull-request description, a wiki or any chat that renders Markdown. It honours the same field filter as Copy, and pipes or line breaks inside a value are handled automatically so the table never breaks.
- Copy all records (All) — The All button copies every loaded record at once as a single wide Markdown table — the column names across the top, one row per record — so you can drop the whole matching set straight into a PR, a doc or a wiki. Unlike the other copy buttons it always spans every visible column (a search that narrows a single card is per-row, so it can’t apply to a whole table); pipes and line breaks inside values are escaped so the grid never breaks.
- Copy a single field — Each field row has its own copy button that grabs just that value — an id, email or code — without selecting text; it shows a brief check when copied.
When a selection can become ordinary filter chips, a button in the window header turns it into chips every view follows — so a row you found in the record card can become a saved, editable filter in one click.
Selecting and marking in charts
Marking is how you pick out values by pointing at the chart itself: click a bar, slice or point and that value is marked. On a dashboard, marking is also the cross-filter — every other tile narrows to the rows you marked, and the marked values gather as removable chips above the board, so the current selection is always spelled out in words (see “Cross-filtering a dashboard”).
- Click — Marks just the value you clicked on that column, clearing any earlier mark on the same column but leaving marks on other columns untouched. Click the one marked value again to unmark it.
- Shift, Ctrl or Cmd-click — Adds the value to the marked set instead of replacing it, so you can build up several at once; this way of clicking an already-marked value removes it again — the same multi-select feel as PowerPoint.
- Drag a box — On a chart with an axis to sweep, drag a rectangle to mark every element inside it in one gesture. A fresh box starts a new selection on that column — it replaces the previous sweep rather than adding to it, like a rubber band.
- Click empty space — Click a blank part of the plot to clear the marks and return to the full, unmarked view.
On a stacked or grouped chart a single element carries two values at once — its category and its series — so clicking it marks both together (for example Region = EMEA and Quarter = Q2), and the analysis narrows on that pair rather than on either value alone.
Box-select needs an axis to sweep across, so it works on bar, line, area, scatter and histogram charts: a sweep over a bar or line marks every category in the range, a sweep on a histogram marks a numeric range of bins, and a box on a scatter marks an X-by-Y region (which can then be turned into ordinary filter chips — see “Turning a selection into a filter”). The single-value and shape-based charts — pie, treemap, funnel, waterfall, radial bar, bullet, gauge, Sankey, heatmaps and the 3-D scatter — have no axis to sweep, so on those you mark by clicking a single element. A heatmap cell marks its row and column together, while gauges, Sankey diagrams and the 3-D scatter are read-only summaries with nothing to mark.
On a dashboard the tile you marked from does not collapse to the clicked bar — it keeps the whole chart on show and simply highlights the marked elements, so you can still see the rest of the column and add more to the selection. It is the other tiles that narrow to the marked rows.
Marking several values on one column keeps them all — they read as “any of these” — while marking on a second column narrows further still, since the marks across columns must all hold at once. So click across two charts when you want to drill into a specific combination.
Right-clicking a bar, slice or point
Every clickable element in a chart stands for a value and the rows behind it. Right-click one (or press and hold it on a touch screen) and a small menu opens, headed by the value you pointed at, gathering the actions you would otherwise reach in several places into the spot you are already looking. The menu appears only on an actual element — right-click an empty part of the chart and you keep the browser’s own menu, so the menu always makes sense for where you clicked.
- Filter to this value — Narrow the whole analysis to that value — the same global filter the grid’s cell menu writes, so a removable chip appears in the sidebar and every other chart, the grid and dashboards follow. On a grouped chart, where an element carries both an X value and a series, this reads “Filter to these values” and keeps both.
- Exclude this value — Drop every row that matches instead, leaving the rest — the sibling of Filter to. On a grouped chart you get one exclude item per part of the element.
- View these rows — Open the individual records behind that element in a drill-down table, without changing your filters.
- Export chart as PNG — Save the whole chart as an image to drop into a document or slide — the same export as the toolbar’s PNG button.
A few chart types adapt the menu to what an element means there. On a histogram, a bar is a numeric range rather than a single value, so the menu is headed by the range and offers View these rows and Export — there is no single value to filter to. A heatmap cell carries two values at once (its row and its column), so it behaves like a grouped element. And when the value is a bucketed date — a label like “Jun 2026” from a month, quarter or year grouping — Filter to and Exclude cover exactly that period (for example, “Close Date ∉ Jun 2026”).
Scatter and 3-D scatter charts have no point menu — they stay box-select only, since a single dot rarely means one filterable value. Gauges and Sankey diagrams are read-only summaries, so they have no per-element menu either. Everywhere else, left-click marks an element and right-click acts on it.
Turning a chart selection into a filter
Marking a chart (clicking or box-selecting) is momentary — it highlights what you picked and lights up the matching rows everywhere, but it clears the instant you deselect. When a selection you drew on a scatter or histogram is worth keeping, you can promote it into an ordinary filter in one click, so the whole analysis — data grid, charts, dashboards and exports — narrows to it and stays there until you remove it.
- On a scatter chart, drag a box around the points you care about. The drill dialog opens showing the rows inside the box.
- Click “Filter to this box” at the top of that dialog. The box becomes ordinary filter chips — one “X between” chip and one “Y between” chip, each holding the box’s bounds (inclusive on both sides, exactly the rows the dialog showed).
- On a histogram, drag across a run of bins instead (or click a single bar). The drill dialog’s button reads “Filter to this range”, and the swept bins become one range chip covering exactly the same rows.
What you get back are plain filter chips, no different from one you built by hand: each shows above the view, sits in the filter sidebar where you can edit its bounds, and can be removed with its ✕. Because they are global filters, every other chart, the data grid, every dashboard tile and any export now reflect the same selection — the picture you drew on one chart becomes the lens the rest of the analysis looks through.
- Two axes, two chips — A scatter box turns into a separate range chip per axis (X and Y), so you can loosen one bound without touching the other.
- Same column on both axes — When X and Y plot the same column, the box collapses to a single chip covering where the two ranges overlap.
- A new box wins — Drawing another box, or sweeping a different range, replaces the existing chip on that column rather than stacking a second one — your other filters are left exactly as they were.
A 3D scatter has no “Filter to this box”: a selection drawn in three dimensions has no single flat meaning to filter on, so rotating and zooming are explore-only there. For a filter you can keep, draw the box on an ordinary 2-D scatter or sweep a histogram.
Cross-filtering a dashboard
On a dashboard, the tiles are linked. Clicking a bar, slice, or point on one tile filters every other tile on the page to that selection, so you can ask “what does the rest of the data look like for this group?” with a single click.
- Click an element on any tile to select it — the same click, shift, and drag rules as marking apply.
- Every other tile updates to show only the matching rows; the tile you clicked highlights your selection instead of filtering itself away.
- Add selections from more than one tile to combine conditions across columns.
Active selections appear as removable chips, so the conditions linking the tiles are always visible. Remove a chip to drop that selection, or clear them to return the whole page to its full view. Use “View rows” on a tile to drill into the records behind the current selection.
Removing a tile drops any selections that came from it, so the dashboard never holds a filter you can no longer see the source of.
Global, page and tile filters
Filters apply at three levels that stack. Global filters — the filter sidebar and chips — apply to every view, chart and dashboard tile for the whole dataset. Page filters apply to just one dashboard page, narrowing every tile on that page on top of the global filters. Tile filters go narrower still: they apply to a single tile, on top of the global and page filters, leaving every other tile on the page untouched. So you can keep one page showing the whole business, one page scoped to a single region, and a lone tile on that page showing just one product line — each without disturbing the others.
The levels combine with AND: a row appears in a tile only if it passes the global filters, then that page’s filters, then that tile’s own filters. Each level can only narrow further than the one above it — none of them ever widens the view.
For any single tile the order is always the same, from widest to narrowest:
- 1 · Global filters — The filter sidebar and chips. Apply to every view, chart and dashboard tile for the whole dataset.
- 2 · Page filters — Attached to one dashboard page. Narrow every tile on that page, on top of the global filters.
- 3 · Tile filters — Attached to a single tile. Narrow just that tile, on top of the global and page filters.
- 4 · Cross-filter selection — A momentary selection from clicking a chart element. Layers on top of all three as a further, temporary AND, and clears the moment you deselect — it is never saved.
Each layer can only tighten the one above it, so the effective rows for a tile are global AND page AND tile AND any current cross-filter selection. The first three are deliberate, persistent filters you configure; the fourth is transient marking. Because the order never changes and every layer is shown — global chips in the sidebar, page chips under the tabs, the tile’s own filter flag in its header, and the selection chips from cross-filtering — you can always read exactly why a tile shows the numbers it does.
- On a dashboard, click “Page filters” in the page toolbar to open the filter editor for the current page.
- Add filters exactly as you would in the global sidebar — pick a column, then choose values, a number range, or a date range.
- Close the editor. Every tile on the page now reflects the page filters on top of the global ones.
- The active page filters show as chips under the page tabs, each marked “Page”, so it is always clear why this page reads differently from another. Click a chip’s ✕ to remove just that page filter, or “Clear page filters” to remove them all — the global filters stay untouched.
- To filter just one tile, open that tile’s ⚙ settings and click “Tile filters”. Add filters the same way; the button shows how many are active. Only that tile changes — its neighbours on the page keep the page-level view.
- A tile that carries its own filters shows a small filter flag with a count in its header, so a chart or KPI reading differently from its neighbours is explainable at a glance. Click the flag to jump straight to that tile’s filter editor to view or change them.
Page filters are saved with the page and tile filters are saved with the tile: switching pages, reopening the analysis, duplicating a page and duplicating a tile all keep them. A duplicated page copies its page filters, and a duplicated tile copies its tile filters, so each copy lands scoped the same way.
These configured filters are distinct from cross-filtering. A page or tile filter is a deliberate, persistent setting you configure and that stays until you remove it; cross-filtering is the momentary selection you make by clicking a chart element, which layers on top of all of them and clears when you deselect. The labelled page chips and the per-tile filter flag in the tile header keep the levels easy to tell apart.
Pivot tables
Grouping rows into a summary
A grouped summary turns the row-by-row grid into one row per group: pick a column to group by and Tablumo collapses every record that shares a value into a single line carrying an aggregate measure — a count of rows by default, or the sum, average, minimum, maximum or another statistic of a numeric column. It answers “what is the total (or average, or count) for each category?” without leaving the data view.
- Right-click any column header in the grid and choose “Group by this column”. The grid switches to one row per distinct value of that column.
- A group bar appears above the summary. Use the Measure dropdown to choose what each group shows — Count of rows, or Sum / Average / Min / Max / Median (and more) of a numeric column.
- Add more columns with “Add column” to nest the grouping (for example Region, then Stage); each grouping column shows as a removable chip — its ✕ stops grouping by it.
- Click “Back to all rows” to leave the summary and show the individual records again.
Each measure column has a small caret in its header that re-summarises that column in place — cycling Sum → Average → Min → Max → Count → Count distinct — so you can re-express a total as an average without rebuilding the group. Changing the measure resets a sort that was set on that column, since the numbers it ordered have changed. Click a column header to sort the summary; a grand-total row at the foot aggregates over every row in view.
The summary stays connected to the underlying records. Click a summary row to filter the whole dataset to that group — a removable filter chip appears above the grid, so the narrowing is always visible and one ✕ undoes it. Click the ▸ chevron on a single-level group to expand the actual rows inside it inline, without leaving the grid. Right-click a row and choose “View these rows” to open the records behind one group in a drill-down panel.
- % of total — Shows each additive measure cell as its share of that column’s total instead of the raw number, so you read the mix rather than the magnitude.
- Data bars — Draws a bar behind each numeric cell sized to its value, so magnitudes within a column read at a glance.
- Color scale — Tints each numeric cell by where its value falls in the column’s range (faint = low, strong = high). An optional Diverging mode splits the scale at a neutral pivot — zero or the range midpoint — and tints the two sides in different hues.
- Highlight rule — Turns cells green / amber / red by an absolute Green-at and Red-at cutoff you type, like the colours on a KPI tile. Both ends are needed before any cell colours.
- Export CSV — Writes every group in the summary to a CSV file — not just the rows currently on screen.
Data bars, Color scale and Highlight rule are mutually exclusive cell fills — turning one on switches the others off, so a cell never carries two conflicting shadings. The grouping is non-destructive: the underlying table is untouched, and “Back to all rows” always restores the full grid.
Cross-tabs and Show-values-as
Once a summary is grouped by two columns, a Rows / Pivot toggle appears in the group bar. Rows keeps the nested summary; Pivot flips it into a cross-tab — the first grouped column runs down the rows, the second runs across the columns, and the chosen measure sits in each cell. It is the fastest way to read two categories against each other, for example revenue by Region down the side and Quarter across the top.
- Group the data by two columns (see Grouping rows into a summary).
- In the group bar, switch the Rows / Pivot toggle to Pivot.
- Read the grid: row values down the left, column values across the top, the measure in each cell, with a Total band down the right and along the bottom.
- Click any cell to filter the page to exactly that row × column combination, the same way clicking a chart element does.
The totals are honest. The Total column for each row, the Total row for each column, and the grand total in the corner are each computed directly over all the rows they cover — never added up from the cells on screen. So even when the view is trimmed, the totals still describe the whole. A cross-tab shows up to the top 100 row values and top 30 column values by the measure; when it trims, a note above the grid says so.
A “Show” control re-expresses the cells without changing the underlying numbers. It is offered only for additive measures (Sum and Count) — a percentage of an Average would be meaningless, so for other measures the control hides and the cells stay as raw values.
- Values — The raw aggregate in each cell — the default.
- % of grand total — Each cell as its share of the grand total, so the whole grid sums to 100%.
- % of row total — Each cell as its share of its own row, making the Total column read 100%.
- % of column total — Each cell as its share of its own column, making the Total row read 100%.
- Running total — The cumulative total across the columns, left to right; the Total column keeps the honest row total.
- Change vs previous — Each cell as its absolute change from the column to its left (gains shown with a +).
- % change vs previous — Each cell as its percentage change from the column to its left — a quick period-over-period read.
A Heatmap toggle shades each body cell by the value it is showing (faint = low, strong = high), so the shape of the grid stands out; the Total band stays plain because it sits on a different scale. Currency, percentage and plain-number formats carry through from each measure’s display settings, and a cell on screen may be compact or a percentage — hover any cell and the tooltip names the row × column and gives the exact raw value.
Switch “Show” back to Values at any time to read the underlying numbers, and remember the Total band always carries the honest aggregate even when the body is showing percentages or running totals. Nothing in the cross-tab alters the data.
Charts
Choosing a chart and its smart defaults
The Chart view turns a table into a single, interactive visualization. Pick a chart type and the fields to plot, and Tablumo runs one aggregation query against the full dataset and draws the result. Every control sits in one place beside the chart, so you change the picture by changing the inputs — there is no separate “edit” mode to enter or leave.
You do not start from a blank chart. When you open the view Tablumo picks sensible starting points for you — a category to group by, a measure to summarise, and a chart type that suits them — so you usually see a finished chart immediately and then adjust it. If a better grouping column is available than the one chosen, a small hint offers to swap to it.
- Choose a chart type from the Chart type list. Bar is the default; types that need a particular shape of data (for example Scatter needs a numeric measure) are greyed out until the data supports them.
- Set X (group by) — the category, or a date column — that splits the data into bars, slices or points.
- Set Y (measure) and the Aggregation (Sum, Average, Count, and so on) that rolls each group up to a single number.
- Optionally add a Split by breakdown, limit how many Groups are shown, and switch on labels, sorting or reference lines.
When the X column holds dates, Tablumo rolls the dates up into readable buckets instead of plotting every individual day, and a Date bucket control lets you choose the unit — Year, Half-year, Quarter, Month, Week or Day (Month by default). Time-based charts always read left-to-right in chronological order, so the value-based sorting options below do not apply to them.
Because a chart can only show so many bars or slices clearly, the Groups control caps how many categories are drawn: All (the default) or the top 10, 20, 50 or 100 by value. When more categories exist than are shown, a short note under the chart says so, so a “top” view is never mistaken for the whole picture.
- Chart type — The visualization: Bar, Line, Area, Pie, Rose, Treemap, Funnel, Waterfall, Radial bar, Gauge, Sankey, Scatter, Bubble, 3D scatter, Histogram, Box plot or Heatmap. Types that need specific data (a measure, a second category, three measures for 3D) are disabled until the table provides it.
- X (group by) — The column whose values become the categories — bars, slices, points or the bottom axis. A date column here is rolled up into time buckets.
- Date bucket — Appears when X is a date: the roll-up unit — Year, Half-year, Quarter, Month, Week or Day. Months by default.
- Y (measure) — The numeric column being summarised. With Count or Count distinct you are counting rows rather than summing a column, so a measure is not required.
- Aggregation — How each group is reduced to one value: Sum, Average, Min, Max, Count, Count distinct, Median, Mode, Std dev, Variance, Coeff. of variation, or the 25th / 75th / 90th percentile.
- Split by — An optional second category that breaks each group into multiple series or segments — for example revenue by month, split by region. Leave it as None for a single series.
- Groups — How many categories to draw: All, or the top 10 / 20 / 50 / 100 by value. A note appears when more exist than are shown.
- Values — Prints the numeric value as a label on each bar, point or slice.
- Sort smallest first / alphabetically — Reorders the categories by value (ascending) or by name. Ignored on date-bucketed charts, which always stay chronological.
- Horizontal — Lays bars out left-to-right instead of bottom-to-top — useful when category names are long.
- Grouped / Stack as % — For a split bar or area chart: draw the segments side by side (Grouped) or stack each category to fill 100% so you compare shares rather than totals (Stack as %).
- Logarithmic value axis — Switches the value axis to a log scale so very large and very small values stay readable together.
- Consistent colors per value — Pins each category to a stable colour (on pie and rose) so the same value keeps its hue across charts.
- Reference lines — Adds Average, Median, Min or Max guide lines, a standard-deviation band, or your own Goal value and band, drawn over the plotted values.
A few chart types take their own inputs in place of a measure aggregation. Scatter and Bubble plot raw points by two (or, for Bubble, a size-by) numeric columns and can show a trend line; the 3D scatter adds a third axis; a Histogram bins one numeric column to show its distribution; a Box plot summarises a numeric column’s spread; a Heatmap colours a grid of two categories by a measure; and a Sankey traces flows from one category to another. The controls beside the chart change to match whichever type is selected, so you only ever see the options that apply.
The chart stays live: click a bar, point or slice to drill into the rows behind it or to mark a selection, and add the chart to a dashboard to cross-filter it against other tiles. Everything you set here travels with the chart when it becomes a dashboard tile.
Start from the defaults and change one thing at a time — swap the measure, then the aggregation, then add a Split by. Because every change re-queries the full dataset instantly, exploring is fast and nothing you do is destructive: the underlying table is never altered.
Key findings
Below a category chart, Tablumo writes up to three short findings that state in words what the chart shows — which group leads, how concentrated the values are, and how far ahead the leader stands. They appear under a “Key findings” heading marked with a lightbulb, and you can click that heading to collapse or re-open the list.
Every finding is calculated straight from the same numbers the chart just drew, so it can never disagree with the bars or slices in front of you. Nothing is sent anywhere and no AI is involved — the findings are plain arithmetic on the plotted groups, computed on your computer.
Findings show on the category-and-measure chart types where “which group is biggest” is a meaningful question: bar, pie, rose, treemap, funnel, radial bar and bullet. Charts that plot distributions or raw points — such as scatter, histogram and box plot — do not show them, because there is no single group to rank.
- Leader — Names the biggest group and its value. When the measure adds up to a whole (a Sum or Count), it also gives that group’s share of the total — and flags when one group alone is more than half of everything.
- Concentration — Says how few groups make up the bulk — for example “the top 3 of 12 make up 81% of the total”. It appears only when a genuine minority of the groups carries most of the weight.
- Spread — Reports the leader as a multiple of the typical (median) group — for example “3.4× the typical region” — so you can see at a glance whether the top is a runaway or just slightly ahead.
- Balanced — Replaces the others when every group is within a few percent of the largest: a single note that the values are evenly balanced with no clear standout, instead of a misleading “leads at…”.
Share and concentration findings only make sense when the parts add up to a whole, so they appear only for additive measures — Sum and Count — and only when no value is negative. On an Average, Min or Max, where a “percent of the total” would be meaningless, those two findings are left out and you still get the unit-safe leader and spread findings.
Use the findings as a starting read, then change the chart to test them: add a Split by to see whether the leader holds across segments, or switch the aggregation from Sum to Average to check whether the biggest group is simply the busiest. The findings update with every change.
Bar charts
A bar chart draws one bar per category, with the bar’s length set by the aggregated measure. It is the default chart and the one to reach for when you are comparing a single number — a total, an average, a count — across a handful or a few dozen categories. The longer the bar, the bigger the value, which makes differences between categories easy to read at a glance.
With no breakdown there is one bar per category. Turn on Horizontal to lay the bars out left-to-right instead of bottom-to-top, which keeps long category names readable. Value labels print each bar’s number on the bar, and the sort controls reorder the bars by value (smallest first) or alphabetically — except on date-bucketed bars, which always stay in time order.
Adding a Split by breakdown turns each bar into several coloured segments, one per breakdown value, and how those segments are arranged is the bar chart’s key choice:
- Stacked (default) — The segments pile into one bar, so each bar’s full length is the category total and the coloured pieces show what makes it up. Best when the total matters as much as the parts.
- Grouped — The segments sit side by side as separate bars within each category, so you compare the individual breakdown values directly rather than reading them out of a stack.
- Stack as % — Each bar is stretched to fill 100%, so every segment shows its share of its category rather than an absolute amount. This compares the composition — the mix — of each category even when the totals differ wildly. The value axis switches to percentages.
Reference lines work with the arrangement: on a stacked bar chart the Average, Median, Min, Max, standard-deviation band and your own Goal line are measured against the per-category stack totals — what the eye is comparing — while on a grouped bar chart they measure the individual bars. They are switched off under Stack as %, where every bar is 100% by definition and an absolute line would mean nothing.
If a stacked bar chart is hard to read because one segment dominates, switch to Grouped to compare the smaller values, or to Stack as % to compare the mix. The same data answers a different question under each.
Line charts
A line chart connects the value at each category with a continuous line, which draws the eye to the shape of the change from one point to the next. It is the natural choice for a measure that moves across an ordered sequence — above all a date or time column, where the line traces a trend, a seasonal rise and fall, or a sudden jump.
When the X column holds dates, Tablumo rolls them up into Year, Half-year, Quarter, Month, Week or Day buckets and plots them strictly left-to-right in time order, so the line always reads chronologically. A small marker sits at each plotted point. Where a category has no value the line leaves a gap rather than guessing across the hole, so a missing month shows as a break instead of a misleading straight segment.
A Split by breakdown draws one line per breakdown value, each in its own colour, so you can compare several series on the same axis — revenue by month for each region, say. Unlike bars and areas, lines never stack: every line keeps its own absolute value, so the Grouped and Stack as % arrangements do not apply here. Reference and Goal lines are measured against all the plotted points across every series.
Use a line chart when the order of the categories carries meaning — a timeline, or any sequence you read from one end to the other. For unordered categories where you only compare sizes, a bar chart is usually clearer.
Area charts
An area chart is a line chart with the space beneath the line filled in. The fill shifts the emphasis from the line’s path to the volume underneath it, which suits a measure where the accumulated magnitude matters — a running level, a quantity over time — more than the exact point-to-point movement. With a single series it behaves just like a line chart, including the date roll-up, the chronological order and the gaps left where a value is missing.
Where the area chart differs is under a Split by breakdown: the bands stack on top of one another, so the outline of the whole shape reads as the per-category total while each coloured band shows one series’ contribution to it. This makes a stacked area the clearest way to show a part-to-whole that evolves across a sequence — how the makeup of a total shifts month by month.
Turn on Stack as % to stretch the bands so they fill 100% at every point, turning the chart into an evolving share view: the total is flattened out and what you read is how each series’ proportion of the whole grows or shrinks over the sequence. Because stacked areas already pile together, the side-by-side Grouped arrangement does not apply. Reference and Goal lines measure the stacked totals, and are switched off in the 100% view.
Reach for a stacked area when you care about both the overall total and its changing composition over time. If individual series cross over each other and the overlap gets hard to read, a multi-line chart often separates them more clearly.
Reference lines, goals and bands
On a bar, line or area chart you can lay extra lines and shaded zones over the plotted values to give them something to be measured against — how each bar compares to the average, whether a month cleared its target, which points fall inside an acceptable range. Open the Reference lines menu from the chart’s control bar; its button reads None until something is switched on, then summarises what is active (for example “Avg, Goal”).
The top of the menu offers four statistical lines, computed from the values the chart is already showing — the aggregated bars or points, not the underlying rows — so a line always matches what your eye is comparing it to and costs no extra query. Switch on as many as you like:
- Average — The mean of the plotted values, drawn as a dashed line labelled with its value (“Avg 1.23M”, or in your measure’s currency when it shows as money).
- Median — The middle plotted value — useful when a few large bars pull the average away from where most of the data sits.
- Minimum — A line at the smallest plotted value, marking the floor of the range.
- Maximum — A line at the largest plotted value, marking the ceiling of the range.
With any of these on, hovering a bar or point adds a line to the tooltip showing how far it sits from each active reference — “vs Avg €1.5M: +12%” — so you read the comparison as a number instead of eyeballing the dashed line.
Below the statistics is a ±SD band: one click shades the zone one standard deviation either side of the average, and a small selector switches it between ±1, ±2 and ±3 standard deviations to widen the spread. It brackets the Average line, so most bars falling inside the band means a tight, consistent spread and a bar outside it stands out as unusual. The band needs at least two values and a real spread — a flat set draws nothing.
A Goal line is a fixed target you type in rather than a statistic from the data — your quota, a benchmark, a budget. Type a plain number or the same shorthand the rest of Tablumo accepts (“50k”, “1.2m”, commas allowed), and the goal is drawn as a solid line — distinct from the dashed statistics — with a bold label. If the goal sits above the tallest bar, the value axis grows to fit it so the line is never silently clipped off the top of the chart. The goal also feeds the tooltip deltas (“vs Goal: −8%”), and is the same target the bullet chart and KPI tiles read for their progress bars and performance bands.
Band from / Band to shades a target zone between two typed values — an acceptable range like 40k–60k — as a faint region labelled with its bounds. Both ends are needed to draw it; enter them in either order (“60k” then “40k” reads the same zone), and an equal pair draws nothing. Use it to see at a glance which bars land inside the range and which fall short or overshoot.
Reference lines, the spread band and the target zone apply to bar, line and area charts, and are measured against whatever those charts plot — per-category totals on a stacked chart, the individual bars when grouped, all points across every series on a multi-line chart. They are switched off under Stack as %, where every bar is 100% by definition and an absolute line would mean nothing. Whatever you set is saved with a dashboard tile, so a board comes back with its targets and bands intact.
Average plus a ±1 SD band is a quick way to spot outliers: anything reaching past the shaded zone is more than a standard deviation from typical. Add a Goal line on top to see, in the same glance, both what is normal and what you were aiming for.
Scatter charts
A scatter chart draws one dot for each row, placed by two numeric columns — one on the X axis, one on the Y. Where bar, line and area charts aggregate rows into categories, a scatter shows the rows themselves, which makes it the chart for seeing how two measures move together: whether higher values of one go with higher values of the other, where the cloud is dense, and which points sit out on their own.
Pick the two measures with the X and Y pickers. Both must be numeric — a scatter has no category axis to roll dates or text into.
- Color by — Tint the dots by a column so each value gets its own colour and its own legend entry — turning one cloud into several you can compare. Up to twelve distinct values are coloured; any beyond that roll together into an “(other)” group so the legend stays readable.
- Max points — A cap on how many rows are drawn. When a dataset has more rows than the cap, Tablumo plots a random sample of that size (and says so beside the chart) so a few hundred thousand points never freeze the view; raise the cap to draw more.
- Trend line — Fit a least-squares regression line through the points and label it with its R² and a plain-language strength — Strong, Moderate or Weak — so you can tell a real relationship from a faint one. With Color by on, each colour group gets its own fitted line; the rolled-up “(other)” bucket is left unfitted.
Drag a box across the plot to select the points inside it — the marked rows light up here and across every other view, the same marking you get from any chart. Each axis (and, on a bubble chart, the size measure) keeps its own number or currency format.
On a dashboard, once you have a box drawn on a scatter tile, right-click the tile header and choose “Show boxed rows as a table” to spin just those points into their own table tile beside the chart — handy for reading off exactly which rows form a cluster or sit out as outliers. The new tile lists the boxed rows in full, so you can sort, copy or export them like any other table. The action only appears while a box is active; clear the box and it goes away, since without a selection it would simply duplicate adding a plain table.
A trend line’s R² says how tightly the points hug the line, not that one column causes the other. Treat a strong fit as a lead to look into, not a conclusion.
Bubble charts
A bubble chart is a scatter chart that carries a third number: alongside the X and Y measures, a Size by measure sets how big each dot is drawn. That lets one chart show three quantities at once — position for two of them, area for the third — which is useful when the size of each row is part of the story, such as plotting margin against growth with revenue as the bubble.
Choose the third measure with the Size by picker. The size is encoded by area, not radius: a bubble with twice the value covers twice the area, which is the honest way to read magnitude by eye. Sizes are scaled to a readable range so the smallest bubble stays visible and the largest never swamps the plot, and the tooltip adds a line for the size measure so you can read its exact value.
Everything else works exactly as on a plain scatter: Color by groups the bubbles, Max points caps and samples the rows, a Trend line fits the X–Y relationship, and a box drag marks the bubbles inside it.
Bubbles read best with a few dozen points. With a dense cloud the circles overlap and the size differences get hard to judge — drop the Size by measure to fall back to a plain scatter, or filter to fewer rows first.
Pie and rose charts
A pie chart splits a circle into one slice per category, each slice’s angle set by that category’s share of the total. It answers a single question well: what fraction of the whole does each category make up. It works best for a handful of categories whose parts add up to something meaningful — for many categories or for comparing exact sizes, a bar chart is clearer.
The rose chart (also called a nightingale) is a variant in the same chart picker: every petal takes the same angle, and instead the petal’s radius — how far it reaches out from the centre — encodes the measure. Because equal angles are easier to compare than slivers of a pie, a rose is often easier to rank, and its tooltip shows each petal’s value together with its share of the total.
- Values — The shared value-labels toggle prints each slice’s number and percentage on the chart. (On small dashboard tiles the labels are dropped so they don’t crowd the slices.)
- Consistent colors — Pin each category to a fixed colour so the same value reads the same hue across charts and after filtering, rather than following the order-dependent palette.
Clicking a slice marks that category and cross-filters the rest of your analysis, exactly like clicking a bar.
If the slices are nearly equal, or there are more than about six of them, the eye struggles to rank a pie. Switch to a rose for easier ranking, or to a bar chart when the exact comparison matters.
Histograms
A histogram takes one numeric column, divides its range into adjacent bins, and draws a bar for each showing how many rows fall in that range. It is the chart for the shape of a single column — where values cluster, how wide they spread, whether the bulk sits low with a long tail high, and whether there is more than one hump. The bars touch, the way a histogram’s do, to signal that the axis is a continuous range rather than separate categories.
Pick the column to bin, then choose how many bins you want — roughly 10, 20, 30 or 50, with 20 the default. Tablumo rounds the bin edges to “nice” numbers so ranges read like “0 – 250” instead of “13.7 – 27.4”, which means the actual number of bins can land a little above or below your target. Whole-number columns never get fractional bins, and an integer column narrow enough for single-value bins labels each bar with its value rather than a range.
The Y axis counts rows. Hovering a bar shows its range, its row count, that bin’s share of the rows in view, and a running “up to here” percentile so you can read where any value sits in the distribution. The X-axis caption adds a plain-language read of the overall shape — right-skewed, left-skewed, roughly symmetric, or a note when the data has two clear peaks — so the gist is there before you hover.
Bin count changes the story: too few bins hide a second peak, too many turn the shape into noise. Step through the bin choices and watch whether a feature survives — a real cluster persists, an artefact comes and goes.
Box plots
A box plot draws one box per category to summarize how a numeric column is distributed within each group. Where a histogram shows the full shape of one column, a box plot compresses each group into a compact five-number summary — minimum, lower quartile, median, upper quartile, maximum — so you can line up many groups side by side and compare their middles and spreads at a glance.
Pick the numeric column to summarize and the category column that defines the groups. Each box runs from the lower quartile (Q1) to the upper quartile (Q3) — the middle half of that group’s values — with a line at the median. The whiskers reach out to the true smallest and largest value in the group: Tablumo plots the real minimum and maximum rather than hiding far-out points behind a cutoff, so nothing is quietly dropped. The summary is computed over every row in view, not a sample.
Hovering a box reads out its maximum, upper quartile, median, lower quartile and minimum, along with how many values went into that group, so you can tell a box built from thousands of rows from one resting on a handful. The value axis sizes itself to the boxes rather than forcing zero in, and honours the column’s number, currency or percent format. Drag a box across the plot to mark the rows inside it, the same selection you get from any chart.
A box is only as trustworthy as the count behind it — a group with a handful of values can show a wide or lopsided box by chance. Check the value count in the tooltip before reading much into a single group’s shape.
Treemaps
A treemap shows a measure split across categories as rectangles, each tile’s area set by that category’s value. It answers the same question as a pie — how the whole breaks down — but stays readable with far more categories: where a pie above a dozen wedges turns into a blur, a treemap packs dozens of proportional tiles into the same space, the largest filling the most area.
Pick the category column that defines the tiles and the measure that sets their size. Each tile is labelled with its category and value, and the layout is a single flat level — every rectangle is a category in its own right, with no nested drilling. Because area can only represent magnitude, categories with a zero or negative value have no tile to draw and are left out, keeping the proportions honest. The tooltip shows each tile’s exact value and its share of the total.
- Consistent colors — Pin each category to a fixed colour so the same value keeps its hue across charts and after filtering or re-sorting, instead of following the order-dependent palette.
Clicking a tile marks that category and cross-filters the rest of your analysis, exactly like clicking a bar or a pie slice. Under a dashboard cross-filter the unselected tiles dim so the marked one stands out.
Treemaps are for proportions, not precise comparison — the eye judges area loosely, so two tiles of similar size are hard to rank. When the exact order matters, a bar chart reads more precisely.
Funnel charts
A funnel chart stacks one stage per category, each stage’s width set by its measure, largest at the top and narrowing downward. It is the natural view for a stage-to-stage drop-off — sign-ups to trials to paid, or any ranked breakdown you read top to bottom — where the shrinking width makes the loss at each step visible.
Pick the category column that defines the stages and the measure that sets their width; the stages sort automatically so the largest sits on top and the funnel tapers down. Each stage is labelled with its name and value on the band itself, and the tooltip adds its share of the total. Because a stage’s width represents magnitude, categories with a zero or negative value have no band and are dropped.
- Consistent colors — Pin each stage to a fixed colour so a category keeps its hue after stages are filtered out or the ranking re-sorts, instead of following the order-dependent palette.
Clicking a stage marks that category and cross-filters the rest of your analysis, like clicking a bar. Under a dashboard cross-filter the unselected stages dim so the marked one stands out.
A funnel implies an ordered sequence where each stage is a subset of the one above. For categories that are simply different sizes rather than steps of a process, a bar chart is the more honest read.
Waterfall charts
A waterfall chart shows how a running total is built up step by step. Each bar floats from where the total stood before that step to where it stands after, so the chart reads like a staircase: you can see how each category lifts or drags the cumulative figure rather than just its size on its own. It is the view for a contribution breakdown — how parts add up to a whole — or a period-over-period build-up.
Pick the category column that defines the steps and the measure that each step contributes; the steps are read left to right in order, with the total carried across from one to the next. A step that raises the running total is drawn green, a step that lowers it red, so a build-up and an erosion are distinguishable at a glance. The tooltip shows the step’s own signed value and the running total after it; the value labels and tooltip honour a currency format. Steps with no value can’t move the total and are dropped.
Clicking a step marks that category and cross-filters the rest of your analysis, exactly like clicking a plain bar — the transparent segment that lifts each bar into place is never itself clickable. Under a dashboard cross-filter the unselected steps dim so the marked one stands out.
A waterfall tells a story in order, so the sequence of steps matters — arrange the categories the way you want the total to build, since each step starts where the previous one left off.
Radial bar charts
A radial bar chart is an ordinary bar chart wrapped onto a circle: one bar per category radiates from the centre, and each bar’s length — its reach outward — is set by the measure. It is a striking, space-even way to compare many ranked categories, such as which regions or products stack up against each other, and it stays legible where a long horizontal list of bars would scroll off the tile.
Pick the category column for the wedges and the measure that sets their length. Each wedge takes its own colour from the palette, like a pie or treemap. A category with no value keeps its slot on the ring but draws no wedge — a blank, not a zero — and a negative value draws inward from the baseline as the radius axis scales to fit. The tooltip shows the exact value and its share of the total.
- Consistent colors — Pin each category to a fixed colour so it keeps its hue after wedges are filtered out or the ranking re-sorts, instead of following the order-dependent palette.
Clicking a wedge marks that category and cross-filters the rest of your analysis, and right-clicking opens the same Filter to / Exclude / View rows menu as a plain bar. Under a dashboard cross-filter the unselected wedges dim so the marked one stands out.
The eye compares straight bar lengths more accurately than arcs at different radii, so reach for a radial bar when you have more categories than a flat bar chart can show comfortably and the shape is worth the small loss of precision; otherwise a plain bar chart reads more exactly.
Gauge charts
A gauge shows one number on a dial — the graphical sibling of the Number (KPI) tile. Unlike every other chart it has no category breakdown: it takes a single aggregate, such as the sum of an amount, and fills the arc toward a maximum so you can read at a glance how close the value sits to that ceiling.
The arc fills toward a maximum that gives the reading its meaning. If you set a goal on the chart, that goal becomes the maximum, so the fill reads as progress toward it. With no goal, the maximum is the unfiltered grand total — so on a dashboard, as cross-filters narrow the data, the arc reads “this slice of the whole”. The big centred number counts up to the value, and both it and the tooltip format money when the measure is currency; the tooltip also gives the percentage of the maximum.
There is no needle — the filled arc itself is the reading — and nothing to click, because a single value has nothing to drill into.
Set a goal when you want the dial to read as progress toward a target; leave it unset when you want the gauge to show a running share of the total as filters narrow the data.
Bullet charts
A bullet chart is a value-versus-target comparison: one thin horizontal bar per category, each measured against a shared target marker and a set of qualitative background bands. It is the data-dense sibling of the gauge — where the gauge shows one scalar on a dial, the bullet stacks many categories so you can scan which ones clear the target.
Pick the category column and the measure; the bars read top to bottom like a table. The target comes from the same Goal value the reference lines use. When you set a positive goal, three honest bands shade each track — poor below half the target, satisfactory from half to four-fifths, good at four-fifths and above — and a dark tick marks the target itself, with the tooltip adding each bar’s percentage of target. With no goal the bars still render as a clean horizontal bar and the panel asks for a goal to unlock the target and bands. The bands and tick are never invented from the data, so the chart can’t imply a target nobody set. A category with no value draws no bar.
Set the Goal under the reference-line controls to turn a plain horizontal bar into a true bullet chart with its target tick and performance bands.
Sankey diagrams
A Sankey diagram shows how a measure flows between two categorical columns. Every value of the first column lines up on the left, every value of the second on the right, and a ribbon joins each pair — its width set by the total of the rows that connect them. It is the natural view for “where does this go to that”: sales from Region to Product, tickets from Channel to Priority, any two-way breakdown you want to read as movement rather than a table.
Pick the source column, the target column, and the measure. The same label appearing in both columns is kept separate on each side, so a flow always reads left to right and never loops back on itself. Each node takes a colour from the palette, and every ribbon fades from its source colour to its target colour so you can trace it across. Hover a node or a ribbon to spotlight the flows it touches and dim the rest; the tooltip names the pair and its exact value, formatting money when the measure is currency. Flows that come out zero or negative are left off, since a ribbon has no negative width.
A Sankey is a read-only view: hovering a node or ribbon shows its value, but clicking does not cross-filter, because a single flow spans two columns and has no one value to drill into.
Heatmaps
A heatmap crosses two category columns into a grid and colours each cell by the measure. It is the compact way to spot where a number runs hot or cold across two dimensions at once — sales by Region and Month, counts by Day and Hour — without reading a wall of figures.
Pick a column for the horizontal axis, a column for the vertical axis, and the measure to colour by — and choose what that measure aggregates (sum, average, count of rows and the rest) just as on any other chart. Rows rank largest-first from the top, so the busiest combinations sit where the eye lands.
- Top N columns — Keep only the busiest X groups — the ones with the highest totals — as columns, so a high-cardinality axis stays readable instead of squeezing dozens of thin columns onto the tile. Lower it to focus on the leaders; raise it to bring in more of the long tail.
The colour runs along a single hue, from a faint tint up to the full accent, so darker simply means more — and a continuous scale sits under the grid rather than a categorical legend to decode. You can drag its handles to clamp the ramp to a sub-range when most cells cluster together and you want to pull the differences apart. A pair with no matching rows is left blank rather than shaded as a zero, because missing data is not the same as none. Small grids print each cell’s value inside it in a contrast-picked colour; larger grids keep the cells clean and put the exact figure in the tooltip. The scale, the cell labels and the tooltip all follow the measure’s chosen format, whether that is currency, a percentage or a plain number.
The axis caption does some of the reading for you: it names the hottest cell (“hottest: West × March (€1.2M)”) and, as a counterpoint, the coolest, so the two ends of the ramp are spelled out without a hover. When the grid has gaps it also notes how many — “6 of 40 cells empty” — a coverage glance that is separate from intensity. These cues drop away on a tie for the top or bottom and on a compact dashboard tile, where the axis name is hidden anyway.
Hovering a cell names both categories and the exact value, and adds a share-of-peak line — that cell as a percentage of the hottest one — so you read relative intensity as a number rather than judging two shades by eye.
Clicking a cell drills into the intersection of its two categories: it marks the rows that match that X value AND that Y value together, and cross-filters the rest of your analysis, the same two-part predicate a split-bar segment uses. There is no box-select on a heatmap — a rectangle dragged over the grid is ambiguous between sweeping columns and sweeping rows — so a single cell click is the way in.
If one axis has many values, set Top N to the dozen or so busiest columns first — the matrix stays legible, and the hottest/coolest caption still points you to the standout cells in what remains.
3D scatter plots
A 3D scatter plots three numeric measures at once inside a cube you can spin. Each point sits at its X, Y and Z values, so a relationship that needs a third axis to see — and would be flattened on a flat chart — stays visible. Drag to rotate the cube and scroll to zoom in and out.
Choose a measure for each of the three axes. Add a colour-by column to split the points into coloured groups with a scrollable legend, and add a size measure to turn each point into a sphere whose volume reflects that value — the 3D version of a bubble chart. Every axis keeps its own format, so you can mix currency, percentages and plain numbers across X, Y and Z. To stay smooth the view draws from a sample of your rows rather than every single point. The tooltip on a point lists all three axis values, plus the size value when one is set.
A 3D scatter is a read-only view: rotating and zooming explore the cube, but there is no box-select or click-to-drill, because a selection drawn in three dimensions has no single flat meaning to filter on.
Dashboards
Building a dashboard
A dashboard gathers several views of the same table onto one page, so you can see headline numbers, a couple of charts and a supporting table together. Each table you have open keeps its own dashboard, and every tile on it stays linked: clicking one tile cross-filters the rest of the page (see “Cross-filtering a dashboard”).
A table can hold several named pages, shown as tabs above the board — for example one page for revenue and another for pipeline. Use the tabs to add and switch between pages; double-click a tab to rename it. Each page keeps its own tiles and arrangement, so switching tabs never disturbs another page.
- Add tiles from the dashboard toolbar: “+ Add chart” drops in a chart, “+ Add number” a single big-figure KPI, “+ Add summary” a grouped pivot-style table, “+ Add table” the underlying rows, and “+ Note” a small text annotation tile.
- Drag a tile by its grip to move it; new tiles land below everything already on the board, two charts (or four KPIs) to a row.
- Resize a tile by dragging its bottom-right corner — the other tiles reflow to make room, and each tile has a sensible minimum size so it never collapses.
- Add a new page with “+ New page” when one board gets crowded, and double-click its tab to give it a name.
You can also send a chart straight to the dashboard from the ⌘K command palette — handy when you have just built a view you want to keep alongside others.
Working with tiles
Every tile carries its own controls in its header, so you can shape each one without leaving the board.
- Rename — Double-click the title, or use the pencil button, to give the tile a clearer name. Press Enter to save or Escape to cancel; leave it blank to fall back to the automatic title.
- Configure — The gear button opens an inline editor on the tile to change the chart type, the category to group by, the measure, an optional colour split, a bubble size measure, and the sort order — the same choices as the chart builder, applied in place.
- Enlarge — The expand button opens the tile near-fullscreen for a closer look; it stays fully interactive, and everything you do there keeps the small tile behind it in sync. Close the overlay to return to the board.
- Duplicate — From the tile’s ⋯ menu, copy the tile so you can vary the copy — for example the same chart split a different way.
- View rows — From the ⋯ menu, open the records behind the tile’s current selection as a table.
- Export chart as PNG — From the ⋯ menu, save the chart tile as an image to drop into a document or slide.
- Remove — From the ⋯ menu, take the tile off the page. Any cross-filter selection that came from it is dropped at the same time, so the board never holds a filter you can no longer see the source of.
Reconfiguring a tile changes only that tile. To compare two cuts of the same data side by side, duplicate a tile and reconfigure the copy.
Text / note tiles
A text (note) tile sits on a dashboard alongside your charts but holds no data of its own. Use it to caption a board, write a heading over a group of charts, explain what a reader is looking at, jot a short to-do, or link out to the source. Because it carries no data, a note tile never queries the table and never cross-filters — clicking it does nothing to the other tiles, and the other tiles never change what it shows.
- On the dashboard toolbar, click “+ Add note”. A blank note lands below everything already on the board and opens straight in edit mode, so you can start typing immediately. (You can also run “Add note to dashboard” from the ⌘K command palette.)
- Type your text in the box. Markdown is supported: a “# Heading”, **bold** and *italic*, `code`, bulleted lists, and [links](https://example.com).
- Click the check (✓) button — or press Esc — to finish editing and see the formatted note. Click the pencil button any time to go back and change it; your text is saved on every keystroke.
- Drag the note by its grip to position it, and resize it from the bottom-right corner like any other tile.
- Rename — Double-click the tile’s title, or pick Rename from the ⋯ menu, to label the note (for example “Q3 summary”). Leave it blank to fall back to “Note”.
- Edit ⇄ view — The pencil button switches to editing; the check button switches back to the rendered note. It is a one-click toggle either way, so there is never a dead end.
- Duplicate — From the ⋯ menu, clone the note onto the same board — handy for a repeated caption style.
- Enlarge — The expand button opens the note near-fullscreen; close the overlay to return to the board.
- Remove note — From the ⋯ menu, take the note off the page.
A note tile is the easiest way to turn a crowded board into something a colleague can read on their own: a one-line title above each cluster of charts goes a long way, and an empty note left over an arrangement can act as a simple spacer or divider.
Calculations
Calculated columns (ƒx)
A calculated column is a new column worked out from the columns you already have — an amount per unit, a profit margin, a category derived from a rule. Once added it behaves like any other column: you can sort it, filter it, chart it, group by it, and include it when you export.
Open the ƒx panel from the column palette (“New calculated column”) or the ƒx control on the table. Give the column a name, write a formula, and watch the live preview confirm the result before you add it.
- Type a name for the new column — it must be different from your existing columns.
- Write the formula in the expression box. Click a column chip to drop that column’s name in at the cursor, or pick one of the ready-made examples built from your own columns to start from.
- Watch the live preview: as you type, the formula is checked against your data and shows the result type, or a plain message if something is wrong.
- Click Add to create the column. It appears in the grid straight away and joins the column list everywhere else.
Formulas use SQL expressions evaluated over each row, so the full range of arithmetic, text, date, and conditional functions is available — for example multiplying two columns, ROUND(...) to a number of decimals, CONCAT(...) to join text, or CASE WHEN ... THEN ... ELSE ... END to assign a value by a rule. Wrap any column name that contains spaces in double quotes.
- Describe it in plain language — Type what you want in words (e.g. “amount in EUR when the currency is USD, at rate 0.92”) and have the formula written for you. The generated formula is shown and checked by the live preview — nothing is applied until you click Add. This appears only when the AI assistant is turned on in settings.
- Column chips — Each existing column is a chip; clicking one inserts its name (correctly quoted) at the cursor.
- Currency conversion template — Convert a numeric column with an exchange rate you enter — pick the column, the target currency, and the rate, and the formula is filled in for you.
- Store as a plain number — Keep the formula but store the result as an ordinary number rather than a currency-formatted value.
- Example formulas — When the box is empty, a few suggestions built from your actual columns let you start with one click.
Calculated columns are listed at the bottom of the ƒx panel. Use “Edit formula” to change a column’s name or expression — saving replaces its values — or remove a calculated column you no longer need. Editing or removing one never touches your imported data.
The live preview means you never have to guess: if the formula is valid you see its result type before adding, and if it is not you see exactly what to fix.
Grouping values into buckets
When a text column holds several spellings or labels that really mean the same thing — “West Germany” and “Germany”, or a dozen city names you want rolled up by region — you can combine them into named buckets. The result is a new column, so the original values stay exactly as they were.
Open “Group values…” from a text column’s header menu. The dialog lists that column’s distinct values with how many rows each one covers, so you can see what you are working with before you start.
- Tick the values that belong together. Use the search box to narrow a long list of values.
- Type a name for the bucket (for example “Germany”) and add the group. The chosen values move under that name.
- Repeat for the next bucket; a value already in a group leaves the list, so each value lands in one bucket only.
- Decide what happens to everything you didn’t group, name the new column, and add it. It appears in the grid straight away.
- Keep their original value — Values you didn’t put in a bucket pass through unchanged, so the new column is a tidied version of the old one.
- Label them “Other” — Everything ungrouped is collapsed into a single “Other” bucket, which is handy for an “a few big categories plus Other” chart.
- The (null) entry — Empty cells show as their own (null) entry you can place in a bucket like any other value; left alone they stay empty in the new column.
A grouped column is an ordinary calculated column, so it behaves like the rest of your data: sort it, filter it, group by it, chart it, and include it when you export. It is listed with your other calculated columns, where “Edit formula…” lets you adjust it and removing it never touches the column you built it from.
Grouping is the quickest way to turn a messy categorical column into a clean handful of categories for a chart — bucket the long tail into “Other” and the important groups stand out.
Data quality
The data-quality scorecard
The data-quality scorecard is a one-pass health check of a table: it measures every column at once — how complete it is, how many distinct values it holds, and what is worth cleaning up — and lays the results out so the columns that need attention rise to the top. It runs the measurement directly with DuckDB in a single scan, so it stays fast even on tables with millions of rows.
Open it from the command palette: press ⌘K (Ctrl+K on Windows), type “data quality”, and choose Data quality. If more than one table is loaded, a picker at the top lets you switch which table the scorecard is profiling.
Across the top, a summary tells you how many columns need attention out of the total — or that none do. Below it, each column gets a row showing its name and type, a completeness bar (how much of the bar is filled is the share of non-empty values), its number of distinct values, a 0–100 score, and a set of plain-English flags describing anything notable about it.
- Completeness bar — How full the column is: the filled portion is the share of rows that hold a value. Missing values (and, for text columns, blank or whitespace-only strings) leave the bar short.
- Distinct values — How many different values the column holds. One distinct value means the column is constant; a distinct count equal to the row count means every value is unique.
- Score — A 0–100 rating of the column’s completeness and health, colour-coded: green from 90, blue from 70, amber from 40, and red below it. Only missing and blank values dock the score — informational flags such as skew or outliers never lower it.
- Flags — Short chips that call out what is notable: “…% missing”, blank strings, “Single value” for a constant column, “All unique” for a key candidate, “Good for grouping” for a tidy low-cardinality dimension, plus honesty flags like right/left-skewed, extreme values, a wide value range, a percentage column, and the calendar span of a date column. Hover a flag for the fuller explanation.
- Most concerning / Table order — A toggle for the row order. “Most concerning” floats the weakest columns to the top so you see what to fix first; “Table order” lists them in the original column order of the table.
The flags are advice, not commands. A “…% missing” or blank-strings flag points at something to clean; “All unique” marks a column that would make a good key; “Good for grouping” suggests a natural dimension to chart or pivot by. The skew, extreme-value, wide-range, percentage and span flags are orientation — they describe the shape of the data without treating it as a defect, which is why they never lower the score.
Use the scorecard before you build a chart: a column flagged “Good for grouping” is an easy axis to start from, while one flagged with extreme values or heavy skew is a hint to add a range filter first so a few outliers don’t dominate the picture.
Combining tables
Combining tables
Combining tables brings columns from a second table into the one you are working in, matching the rows on a shared field — an ID, an email, a region code. It is the equivalent of a spreadsheet lookup: for each row in your starting table, the matching row from the other table is found and its columns are added alongside. Your original tables are never changed; combining produces a new table.
Open it from the command palette: press ⌘K (Ctrl+K on Windows), type “combine” (or “join”, “merge”, “lookup”), and choose Combine tables. It is available once at least two tables are loaded.
- Choose the table to start from, and the table to bring columns in from. The combined table keeps every row of the table you start from (subject to the rows-to-keep choice below).
- Check the matching field(s). Tablumo suggests a pair automatically — it looks for fields whose names and types line up, then samples their values to confirm they overlap — and you can change either side if it guessed wrong.
- Decide which rows to keep and which columns to bring in (both have sensible defaults, so you can usually leave them).
- Read the honest match counts and the row preview, give the result a name, and choose Create combined table.
Rows are matched on one or more shared fields. To match on a combination — say customer and month together — choose “Add another matching field”; a row then only matches when it agrees on every field you have added. If the two fields you pick hold different kinds of values (for example text against numbers) Tablumo tells you they can’t be matched, so you pick a compatible pair instead.
- Start from / Bring in columns from — The two tables being combined. “Start from” is the base — its rows and columns are kept; “Bring in columns from” is the source of the new columns. A table can’t be combined with itself.
- Match rows where … = … — The matching fields — one field from each table that should hold the same value to link a pair of rows. Tablumo pre-fills a suggested pair; change either dropdown to override it.
- Add another matching field — Match on a combination of fields. Every added pair must agree for two rows to match. Each column can be used in only one pair.
- Rows to keep — Either “All rows” — keep every row of the starting table, leaving the new columns empty where there was no match (a left join, the default) — or “Only rows with a match”, which drops starting rows that found no match (an inner join).
- Columns to bring in — Chips for each column the second table would add. All are kept by default; click a chip to leave one out, or use Select all / Clear. The matching fields themselves are not duplicated.
- Name — The name of the combined table. A name based on the two source tables is filled in for you; edit it to whatever you like.
Before anything is created, Tablumo shows honest numbers so there are no surprises: how many of your starting rows find a match, the exact size of the result (rows × columns, and how many columns are being brought in), and a short preview of the first rows with the new columns highlighted. If a matching field repeats in the second table, some starting rows match several rows and the result grows; when that happens a multiplier (for example “3× larger”) warns you that the combined table fans out, so you can pick a more unique field if that was not intended.
The result is a regular table. Once created it behaves exactly like an imported file — you can sort, filter, chart, add it to a dashboard, and save it — and it persists across reloads with the rest of your session.
A combined table also remembers how it was built. If one of the original tables later changes, right-click the combined table in the sidebar and choose Refresh combined table to re-run the same match in place: the table keeps its name, so any filters, charts and dashboards built on it stay attached. A line under that menu item is honest about what the refresh will do — that the originals have changed since it was combined, or, if a source table is no longer loaded or a matching field has gone, why a refresh can’t run yet.
Start with “All rows” if you want to see which starting rows had no match — they keep empty new columns, which makes the gaps easy to spot and filter on. Switch to “Only rows with a match” once you want just the rows that joined cleanly.
Managing datasets
Renaming a dataset
A dataset loads with the name of the file it came from, which is not always the name you want to read in the sidebar, on chart titles, or in an export. You can give it a clearer label at any time. The rename is purely cosmetic: it changes the name shown around the app, but the dataset’s underlying identity stays the same, so SQL queries, calculated columns and combined tables that refer to it keep working without a change. Your original file on your computer is never touched.
- Right-click the dataset in the sidebar and choose Rename.
- The name turns into a small editing box with the current name selected, ready to overwrite.
- Type the new name and press Enter to apply it, or Esc to cancel. Clicking away also applies what you typed.
The new label then appears everywhere the dataset’s name shows — its sidebar row, the automatic titles on charts built from it, and the file name when you export it. Because only the label changes, anything already built on the dataset carries straight over under its new name.
- Blank or unchanged — Clearing the box or leaving the name as it was keeps the old name — a rename never wipes a dataset’s label by accident.
- A name already in use — If another loaded dataset already has that name, the old name is kept so two datasets never share a label (the check ignores upper- and lower-case).
- Esc — Cancels the edit and leaves the name exactly as it was.
Renaming changes only what you see, not how the data is stored, so a query in the SQL console still refers to the dataset by its original table name. If you also track daily versions of a dataset, the label is what the timeline groups by — a consistent name keeps a series tidy.
Deleting a dataset
Deleting a dataset removes it from the current analysis — its tab, its rows, and anything that reads from it. It does not touch the original file on your computer: only the copy loaded into this session goes away, and you have a few seconds to undo afterward if it was a mistake.
There are two ways to start. Hover (or click) a dataset in the sidebar and use the × on its row, or right-click the dataset and choose Delete dataset. Either way a confirmation appears first — nothing is removed until you confirm it.
- Click the × on the dataset’s sidebar row, or right-click it and choose Delete dataset.
- Read the confirmation. Under “What this affects” it lists exactly what depends on this dataset — or tells you nothing else does.
- Choose Cancel to keep the dataset (the safe default), or Delete dataset to remove it.
- If you change your mind, use Undo in the bar that appears for a few seconds after deleting.
Before you confirm, the dialog is honest about the knock-on effects so nothing breaks silently. When other things are built on the dataset it lists them by name: dashboard pages (and how many tiles) that will be removed, combined tables made from it (these keep the data they already hold but can no longer be refreshed from it), calculated columns on it that will go, and saved filters on it that will be cleared. When nothing depends on it, the dialog simply says so, so you can delete with confidence.
- × on the dataset row — The small × at the right of a dataset in the sidebar. It opens the same delete confirmation as the menu item.
- Delete dataset (right-click) — The context-menu entry on a dataset, marked as a destructive action. It opens the confirmation rather than deleting straight away.
- What this affects — The impact preview inside the confirmation. It names the dashboards, combined tables, calculated columns and filters that depend on the dataset, or states that nothing else does.
- Cancel — Closes the dialog and changes nothing. It is the focused, default choice, so pressing Enter or Esc keeps the dataset.
- Delete dataset (confirm) — The destructive button that removes the dataset. The undo bar appears immediately afterward.
- Undo — Appears in a bar for a few seconds after deleting and restores the dataset exactly as it was. Once the bar disappears, the removal is final for this session.
A combined table you built earlier keeps working after you delete one of its sources — it holds the rows it was created with. What it loses is the ability to refresh from the deleted source: its “Refresh combined table” menu item explains that the source it needs is no longer loaded. Re-import that dataset if you want refreshes to work again.
Because deleting only affects this session and never the file on disk, you can safely remove a dataset to declutter and re-import it later. Read the “What this affects” list first when a dataset has dashboards or combined tables built on it, so you know what will need rebuilding.
Versions & comparison
Tracking versions of a table
When you import a file that has the same columns as a table you already have open — today’s export of data you imported yesterday, this month’s sales on top of last month’s — Tablumo notices and asks whether the two belong together. Instead of piling up unrelated tables, you can keep the new file as a dated version of the same data, or merge its rows straight in.
The match is on columns, not contents: the new file must have the same set of column names, each holding the same kind of data (a column that is whole numbers in one file and decimals in the other still counts as the same). Column order does not matter. If a column was added or removed the prompt does not appear, because the shapes no longer line up — you can still compare drifted tables explicitly from Compare tables.
The prompt offers three choices:
- Yes, group them — Keeps the new file as its own table but files it under the original as a dated version. Both tables stay completely normal — filter, chart, export and everything else works on each — and the sidebar groups them so the history is in one place.
- Append rows — Stacks the new file’s rows onto the end of the existing table and drops the just-imported one, leaving a single growing table. Columns are matched by name (a column in a different position still lines up) and every row is kept — nothing is silently de-duplicated. The button’s tooltip shows the resulting size before you click.
- Keep separate — Dismisses the prompt and leaves the imported file as an ordinary, independent table.
Grouped versions appear nested under their base table in the sidebar, each labelled with the date it represents. The base row gets a chevron: collapse it to tuck the versions away behind a small “N versions” badge, expand it to bring the dated timeline back. A version that has just arrived is always shown, never hidden inside a collapsed group.
Each version carries a date. Tablumo works it out from the file name first (a name like “sales_2026-06-11.csv” is dated June 11), then the file’s last-modified time, then the import time as a last resort — and the prompt tells you which it used, so a wrong guess is visible before you accept. The date stays editable: right-click a version and choose Change date. Versions are always kept in date order, so “previous version” means the one before it by date.
A daily-export habit grows a series forever, so you can cap it. Right-click the base table and choose Versions to keep to set how many of the newest versions to hold on to. When a new version arrives and the series runs over, the oldest are closed automatically; the dialog lists exactly which versions would be closed, with their row counts and sizes, before anything happens. The original base table is never trimmed.
Closing a version closes it for this session only — it is never the same as deleting. The source file on your computer is untouched, and re-importing it brings the version back. Closing the base table dissolves the whole group: its versions simply return to the top level as ordinary tables.
Comparing and trending versions
Once you have two versions of the same data, two tools answer the questions that matter: what changed between them, and how one number has moved over time.
Compare two tables shows exactly what changed. Open it from the command palette (⌘K / Ctrl+K → Compare tables) once at least two tables are loaded, or right-click a version and choose Compare with previous version (a base table offers Compare two newest versions). Pick the earlier and the newer table and confirm the key column that identifies a row in both — Tablumo suggests one whose values are unique in each table, and you can change it. Before anything is created you see honest, full-data numbers: how many rows were added, removed, changed and unchanged, which columns changed the most, and the net change on each numeric column.
- Open Compare tables from ⌘K, or right-click a version and choose Compare with previous version.
- Choose the earlier version and the newer version.
- Confirm the column that identifies a row in both tables (the suggested one is marked).
- Read the added / removed / changed / unchanged counts and the per-column changes.
- Name the result and choose Create differences table.
The result is a regular table holding the differences, so you can filter, chart, drill into and export it like any other. Your two original tables are never modified. When the two tables share no columns there is nothing to compare; when they are identical on every shared column Tablumo says so and creates nothing. Within a version series, the key column you confirmed is remembered, so the next comparison in that series is ready in a couple of clicks. A series of three or more versions also offers Compare with… to pick any other version, not just the one directly before.
Trend across versions turns a whole series into a time machine. Right-click the base table and choose Trend across versions, then pick a number to track — the row count, or the Sum, Average, Minimum, Maximum or Count of a numeric column. The result is a regular table with one row per version (its date and the chosen number), oldest first, which the chart smart-defaults turn into a line over the snapshot dates. Pipeline value by day, deal count over time, average order size across releases — all from data you already have.
- Earlier / Newer version — The two tables to compare. Right-clicking a version pre-fills the pair for you.
- Rows are identified by — The key column that matches a row across both tables. Tablumo suggests a column whose values are unique in each; you can pick another.
- Added · removed · changed · unchanged — The exact full-data counts, shown before you create anything, alongside the most-changed columns and the net change per numeric column.
- Create differences table — Materialises the differences as a normal table you can filter, chart and export. The originals are untouched.
- Track (in Trend across versions) — Row count, or the Sum / Average / Minimum / Maximum / Count of a numeric column, computed exactly for each version.
- Create trend table — Builds a one-row-per-version table, oldest first, ready to chart as a line over the version dates.
Both tools read every row exactly — no sampling — and never change your originals; they only create a new table from the result. If the suggested key column flags a problem (for example its values are not unique), pick a column that uniquely identifies each row so added, removed and changed are counted correctly.
Limiting how many versions to keep
A daily or monthly export habit grows a version series forever, so you can cap it. Right-click the base table and choose Versions to keep to set how many of the newest versions to hold on to — once a limit is set, older versions close automatically as new ones arrive, and the dialog shows you exactly which versions a limit would close before you commit to it.
- Type how many of the newest versions to keep into the “Keep the last … versions” box. Leaving it empty means no limit — the box reads “all” and every version is kept.
- Read the preview list. The original table sits on top, marked “(original — always kept)”, with the dated versions below it newest first. Any version the limit would close right now is struck through and tagged “will close now”, so nothing happens by surprise.
- Check the figures: a summary line reports how many saved versions the data already carries and the date of the oldest, and a series-total line below the list adds up the rows — and the disk size when every version’s size is known — across the original plus all its versions.
- Press Save. The button spells out the consequence — “Save” when nothing closes, or “Save and close 2 versions” when the limit trims the series — so you always know what the click does.
- Keep the last N versions — A whole number of at least 1, set by typing or with the arrow keys. This counts dated versions only; the original base table is never part of the count and is never trimmed.
- No limit — Clearing the box (or pressing the “No limit” link) keeps every version — the placeholder shows “all”. Setting a limit and clearing it again are both reversible at any time.
- Per-version size — Each row shows that version’s exact row count, plus the size of its original source file when that is known. Sizes are shown honestly and never guessed, so a version imported before sizes were recorded simply shows its row count alone.
- Impossible value — Anything that is not a whole number of at least 1 is refused with a short notice, and Save stays disabled until you fix it or empty the box — the limit can never be set to something meaningless.
- Automatic trimming — With a limit in place, the oldest versions close on their own whenever a new one arrives and the series runs over. The version you have just accepted is never the one closed — the series simply runs one over until the next arrival.
Closing a version is never the same as deleting it: it closes for this session only, the source file on your computer is untouched, and re-importing the file brings the version back. See Tracking versions of a table for how a series is built in the first place.
Saving your work
Saving and reopening analyses
Tablumo saves your work for you as you go. Everything is kept locally on this computer — the files you imported and the state of your workspace — so when you close the tab and come back later, the app reopens where you left off. Nothing is uploaded to a server.
What is restored on reopen: the tables you had loaded (re-read from your own files, in the same order), the view you were on, and your filters, sorts, dashboard pages, calculated columns and column settings. This automatic working session is always on and needs no action from you.
On top of that autosaved working session, you can save the current workspace as a named analysis. Naming an analysis lets you keep several different pieces of work and switch between them — each named analysis is fully self-contained, keeping its own copy of the source data together with its filters, charts and dashboards. Because the copy is independent, closing a table or starting fresh never disturbs an analysis you have already saved.
- Analysis name — The top bar shows the name of the analysis you have open, or “Unsaved analysis” in italics when the current workspace has not been named yet.
- Unsaved-changes dot — A small dot appears next to the name when the workspace has changed since you last saved, so you can tell at a glance whether your latest edits are stored.
- Save button — Re-saves the current analysis under its name in one click. If the workspace has no name yet, it opens the Analyses panel so you can name it first.
- Open button — Opens the Analyses panel, where your saved analyses live.
The Analyses panel is your library. Open it from the Analyses button in the sidebar or the open button in the top bar. To save, type a name and choose Save analysis: a new name creates a new entry, and an existing name (matched regardless of capitalisation) updates that analysis in place.
- Type a name for the current workspace and choose Save analysis to add it to the library.
- Click a saved analysis to open it — Tablumo replaces the current workspace with that analysis’s own files and state and reloads, rebuilding it exactly.
- Use the row actions to rename an analysis, duplicate it as a copy, or delete it.
- Deleted something by mistake? Use the Undo action that appears to put it straight back.
For larger libraries you can organise analyses into folders. Create a folder, then drag analyses onto it to file them away; nest folders as deep as you like and move between them using the breadcrumb at the top. Deleting a folder never deletes what is inside it — the analyses and any subfolders move up to the parent folder instead, and Undo brings the folder back.
If a table’s data cannot be included when you save — for example a table with no stored copy left on this device — Tablumo still saves the analysis and tells you which tables were left out, so you can re-import them and save again rather than discovering the gap later.
Analysis files (.tablumo)
Saved analyses live in this browser on this computer. To move one to another machine, hand it to someone else, or keep a backup, export it as a Tablumo analysis file — a single .tablumo file that contains everything: the analysis’s state and its source data together.
- In the Analyses panel, use the export action on the analysis you want to take with you — a .tablumo file is saved to your downloads.
- On the other computer (or later as a restore), use the import action in the Analyses toolbar and pick the .tablumo file.
- The imported analysis is added to your library as a new entry, inside the folder you are currently viewing.
Importing is always additive: it never overwrites an existing analysis. If the name is already taken, the imported one comes in as “Name (imported)” so nothing is replaced by surprise. Files exported by older versions (with the previous .lens extension) open too.
Because the data travels inside the file, a .tablumo file for a large table can itself be large — but it means opening it anywhere rebuilds the same tables, filters, charts and dashboards with no separate data files to hunt down. If a file is incomplete or damaged, Tablumo tells you in plain language instead of importing part of a dataset.
Exporting
Exporting data, charts and summaries
Anything you build in Tablumo can leave the app as a file on your device. A table goes out as a CSV or an Excel workbook, a chart goes out as a PNG image you can drop into slides or a document, and a grouped summary or a SQL query result exports the same way a table does. Every export reflects the current view: the rows you have filtered to, in the sort order you set, with the columns as they appear.
- To export a table, open the ⋯ menu next to its name in the left sidebar.
- Choose “Export as CSV” for a plain comma-separated file, or “Export as Excel (.xlsx)” for a workbook that opens directly in Excel, Numbers or Google Sheets.
- The file downloads through your browser to wherever your downloads go. Its name is built from the dataset name and today’s date, with “filtered” added when filters are active — for example “Sales_Q1_filtered_2026-06-15.csv”.
CSV and Excel exports carry the filtered rows in your current sort order, so the file matches the grid in front of you rather than the whole untouched dataset. Clear your filters first if you want every row. The two formats hold the same rows; CSV is the most portable and opens anywhere, while the Excel workbook keeps a single named sheet ready to use.
To save a chart as a picture, use the small “PNG” button on the chart’s toolbar, or right-click the chart and choose “Export chart as PNG”. The image captures the chart exactly as drawn — its title, axes, colours and the theme you are using — at a high resolution that stays crisp when you scale it up in a slide or a report. The background is solid rather than transparent so the picture looks right on any page. (3D scatter plots are the one exception and have no PNG button.)
- A grouped summary exports to CSV from the summary view, so you can hand off the aggregated numbers — totals, averages and counts by category — without the underlying rows.
- In the SQL console, “Export CSV” downloads every row your query returned, even when the on-screen preview shows only the first slice of a large result.
- To move a whole analysis — its data, filters, charts and dashboards — to another machine, export a .tablumo file instead; that is covered under Saving your work.
Exports happen entirely on your device, so even a large table never leaves your computer to produce the file. Because the export mirrors the current view, a quick way to share just the slice that matters is to filter and sort the way you want, then export — the recipient gets exactly that subset.
The SQL console
The SQL console
The SQL console lets you query the tables you have loaded directly, in DuckDB SQL, and see the rows back. It is the same engine that runs every chart, filter and table underneath, so anything you can express in SQL is available — joins across tables, window functions, grouping, sub-queries — without leaving the app.
Open it from the command palette: press ⌘K (Ctrl+K on Windows), type “SQL” or “query”, and choose SQL console. It is available once at least one table is loaded.
- Pick what to query from the schema reference on the left — it lists every loaded table and its columns with their types. Click a table or column name to insert it, correctly quoted, at the cursor in the editor.
- Type your query in the editor. Run it with the Run button or by pressing ⌘/Ctrl + Enter.
- Read the results in the table below, with the row count, column count and how long the query took shown alongside.
- Take the result further: download every matching row as CSV, or save it as a new table you can chart and filter.
The console is strictly read-only: it accepts statements that only look at data — SELECT, WITH, FROM, TABLE, VALUES, DESCRIBE, SHOW, SUMMARIZE, PRAGMA and EXPLAIN — and refuses anything that would change or remove it, such as UPDATE, DELETE, DROP or CREATE. If you type a blocked statement, an inline hint tells you before you can run it, so your imported data is never altered by a query.
- Schema reference — The panel on the left lists every loaded table and its columns and types. Click a name to drop it, quoted, into the editor at the cursor — handy for columns whose names contain spaces.
- Run — Runs the query in the editor. ⌘/Ctrl + Enter does the same from the keyboard. The button is disabled while a blocked statement is in the editor or a query is already running.
- Recent — Reopens a query you ran earlier in this session — click one from the list to drop it back into the editor and adjust it.
- Export CSV — Downloads every row the query returns as a CSV file — the full result, not just the rows shown on screen.
- Save as table — Materialises the full result as a new in-session table you can then sort, filter, chart and group like any other. Give it a name that does not clash with an existing table; the new table is created and the console jumps to it.
The on-screen preview shows the first 1,000 rows so a large result stays responsive; when a result is capped, a note appears telling you so. Add a LIMIT or a WHERE clause to narrow it, or use Export CSV to take every matching row.
A table you save from the console lives for the session — re-save it as a file (or export its rows) if you want to keep it after a reload.
Large files & performance
Large files and the disk-backed engine
Tablumo reads and analyses your data with an analytics engine that runs inside the browser, on your own computer. To work with files far larger than would fit in memory, the engine can page table data to private on-device storage as it loads, so the size of a file is no longer capped by how much memory the browser has. Everyday files stay entirely in memory for instant interaction; only genuinely large ones use the disk path.
There are two storage modes, and the sidebar always shows which one is in use, with a tooltip explaining what it means. You do not choose between them — Tablumo picks the best available automatically.
- Disk-backed engine — The normal mode in a current Chrome, Edge or Firefox with a single Tablumo tab open. Imported tables page to private on-device browser storage instead of being held entirely in memory, so large files no longer hit the old size ceiling, and big tables survive a reload straight from that storage. A working-memory limit (about 1.5 GB) keeps any single operation from exhausting the browser; nothing leaves your machine.
- In-memory engine — The fallback when the disk path is unavailable — an older browser without the private-storage feature, or another Tablumo tab already holding the storage lock. Everything works exactly the same, but data lives in memory, so very large files may not fit. Closing other Tablumo tabs and reloading, or using a current browser, switches disk paging back on.
Where a table lives is decided by its size. Files up to about 150 MB stay fully in memory, because routing small everyday files through disk storage would only slow their import down. Files above that threshold page to on-device storage in the disk-backed engine, where their size is bounded by free disk space rather than memory.
Surviving a reload follows the same line. A smaller table is kept for automatic session restore, so reopening Tablumo brings it straight back. A large table on the disk-backed engine lives in the on-device store itself, so it too returns after a reload with nothing to re-load. A large table that has no persistent home — when the in-memory fallback is in use, or for an Excel workbook, whose sheets always open in memory — cannot be kept, and Tablumo tells you plainly that it will need re-importing after a reload rather than letting you find out later.
- While a large file imports, the status line shows the file name and its size, with a running timer, and a note that reading and type-checking every row can take a while. Tablumo becomes fully interactive the moment it is in.
- If a table cannot be kept for session restore, a clear message says so and tells you to re-import after a reload — so nothing silently disappears.
- If on a later visit an on-device table can no longer be found (because the browser cleared its site data, or you opened a different browser profile), Tablumo names exactly which tables to re-import and confirms nothing else was affected.
Occasionally a single operation — fully sorting a table far larger than working memory, for example — needs more room than the engine allows. When that happens the operation stops safely with a plain-language message, the rest of your work is untouched, and a smaller extract (fewer rows or columns) will go through. Tablumo never lets one heavy operation crash the tab and lose everything else.
The on-device store can, under genuine disk pressure, be cleared by the browser; the sidebar tooltip tells you whether this storage is protected. Either way, keep the original files to hand so you can always re-import. For the largest files, a current Chrome, Edge or Firefox with just one Tablumo tab gives you the disk-backed engine and the highest ceiling.
Privacy & local-first
Your data stays on your device
Tablumo is local-first: the data you load is read and analysed in your browser, on your own computer, and is never uploaded to a server. There is no account to create, no sign-in, and nothing is synced to the cloud. You can open the app, work through an entire analysis, and close it again without your rows ever leaving the device.
When you open a CSV or Excel file, the browser reads the file directly from your machine and hands it to the analytics engine built into the page. Everything you then do — sorting and filtering the grid, building charts, pivot cross-tabs, joins, calculated columns and SQL queries — runs against that data locally. The figures you see are computed on your device, not fetched from anywhere.
Your saved work is stored on the same device too. Autosave keeps the file you imported and your current layout in the browser’s own storage, and named analyses are saved there as well, so reopening Tablumo restores your tables, views, filters and dashboards without anything being sent away. A .tablumo file you export is an ordinary file on your disk that you choose where to put. See Saving your work for the details.
- The rows and cell values in your data are never uploaded — they are read and analysed only on your device.
- There is no account, login or profile, so there is nothing tying your analyses to an online identity.
- No usage tracking, advertising or analytics scripts run in the app to watch what you do with your data.
- Saved analyses and autosaved sessions live in this browser on this device, not on a server you cannot see.
A few features can reach the network, and only ever when you choose to use them. Each is listed here so you always know what, if anything, leaves the device:
- The AI assistant — Turned off to begin with; while it is off, nothing about your data is ever sent. If you turn it on and ask something, your browser sends a compact context — column names, types, counts, ranges and the few sample rows you allow — to Anthropic, and the “What gets sent” preview shows you exactly that before you send anything. See “The optional AI assistant”.
- Sending feedback — The optional feedback form sends only what you write. If you pick “about what I’m seeing now”, it also attaches a summary of the current screen — the table name, its column names and types, and your active filters and sorts — never the cell values — and you can preview exactly what is attached before it is sent. A plain idea sends just your message.
- Checking for a newer version — The app occasionally reads a small version file from where it is hosted so it can let you know when an update is available. This carries no information about you or your data, and if you are offline it simply does nothing.
Because everything is local, your analyses are tied to the browser on the device where you created them. Clearing that browser’s site data removes the autosaved session and saved analyses, so use Save and then export a .tablumo file to keep a backup or to move an analysis to another machine. The .tablumo file contains your data, so treat it with the same care you would the original file.
Working with confidential or regulated data? Because Tablumo processes everything on your device and uploads nothing, you can explore sensitive data without it leaving your control. Leaving the AI assistant turned off keeps the whole analysis fully on the device.
The AI assistant
The optional AI assistant
Tablumo includes an optional AI assistant that lets you work in plain language — ask a question about the table in front of you, describe a dashboard you want, or say how to filter the view, and have it done for you. It is entirely opt-in: the assistant is turned off to begin with, and while it is off none of its features appear and nothing about your data is ever sent anywhere.
The assistant never invents numbers. The model only ever decides what to compute or build; every figure you then see is calculated from your data by the same engine that runs the rest of the app, on your own computer. A question answered in the chat carries a “Computed:” line spelling out exactly what was run, so you can always check the working against the data.
To switch it on, open the command palette with ⌘K (Ctrl+K on Windows and Linux), type “AI”, and choose AI assistant to open its settings.
- Tick “Enable the AI assistant” to turn the feature on. Until you do, this settings panel is the only place the assistant exists.
- Paste your Anthropic API key — it begins “sk-ant-…”. The key is held in this browser only, masked after you enter it, with a show/hide control so you can check it.
- Choose a model: Claude Opus 4.8 for best quality, or Claude Sonnet 4.6 for faster, lower-cost answers.
- Set how many sample rows may travel with each request — from 0 (column information only) up to 50. The “What gets sent” preview shows the exact payload for your current table before you send anything.
Your API key is stored only in this browser and is never written into a saved analysis or a .tablumo file, so sharing or moving an analysis never carries your key with it. Requests go straight from your browser to Anthropic, and each one includes only a compact data context — column names, types, counts, ranges and the few sample rows you allow — never the whole dataset. The settings panel also keeps a running tally of tokens used and an estimated cost for this browser, which you can reset at any time, alongside a link to your Anthropic console for the authoritative bill.
- Ask your data — A chat panel in the bottom-right corner, scoped to the table you are viewing. Ask a question in words — “which region has the best win rate?” — and get an answer computed from your data, with a “Computed:” line showing what ran. Any answer can be added straight to a dashboard as a tile.
- Change the view — From the same chat, say what to change — “filter everything to EMEA”, “add a win-rate KPI”, “new page comparing regions”, “go to page 2”. The change is applied locally and shown with a “✓ Applied” line and a one-click Undo that restores exactly what was there before.
- Build a dashboard — Describe the dashboard you want in a sentence, or let the assistant ask you a handful of multiple-choice questions and build from your answers. You see a preview of the planned tiles before anything is added, the new pages are added alongside your existing work, and a single Undo removes them.
- Filter in plain language — Type a filter in words and have it turned into ordinary filter chips — the same removable chips you would set by hand, so you can see and adjust exactly what was applied.
- Describe a calculated column — When adding a calculated column, describe the formula you want in plain language and have it written for you; the live preview checks it before you click Add. This option appears only while the assistant is on.
Because the assistant only ever proposes filters, tiles and column formulas that the app then validates and computes itself, anything it does becomes ordinary Tablumo state: filter chips you can remove, dashboard pages you can edit, columns you can delete. There is nothing to take on trust beyond what you can already see, adjust and undo.
Prefer not to use AI at all? Simply leave the assistant turned off. Every other part of Tablumo — including the automatic Key findings — works without it and sends nothing over the network.
Shortcuts & the command palette
The command palette (⌘K)
The command palette is a single search box that reaches every part of Tablumo. Instead of hunting through panels and menus, you press one key, type a word, and run what you want — switch views, open a table, jump to a dashboard page, start a filter on a column, export, open the SQL console, change the theme, and more.
- Press ⌘K (Ctrl+K on Windows and Linux) anywhere in the app to open the palette. You can also reach it from the Help hub.
- Start typing what you want to do — for example “chart”, “export”, “sql”, or part of a table or column name. The list narrows to the best matches as you type.
- Move the highlight with the ↑ and ↓ arrow keys, then press Enter to run the highlighted command. You can also click any row.
- Press Esc to close the palette without doing anything — nothing is changed until you pick a command.
Results are grouped so related commands stay together, and the groups that appear depend on what you have open. With no table loaded yet you still get the always-available actions — load a sample dataset, open your saved analyses, the user manual — so the palette is useful from the very first screen.
- Views — Go straight to the Data grid, Charts or Dashboard for the current table. The view you are already on is marked “current”.
- Tables — Switch between the tables you have loaded — each one is listed by name, so you do not have to reach for the sidebar.
- Dashboard pages — Open any page of the active table’s dashboard by name.
- Actions — Run a task: add a chart, table, summary or note to the dashboard, create a calculated column, export CSV or Excel, open the SQL console or the data-quality scorecard, show or hide the filter panel, clear all filters, combine or compare tables, switch theme, and more.
- Columns — Pick a column to start a filter on it — the filter panel opens with that column ready. Columns show the same distinct-value badge (for example “Stage (7)”) you see in the chart and filter pickers.
Search matches more than the visible label: it understands common synonyms, so typing “join” finds Combine tables, “diff” finds Compare tables, “download” finds the export commands, and “query” finds the SQL console. Exact-name typing wins, but a partial or fuzzy match still surfaces the right command, so you rarely need to remember the precise wording.
The palette is the fastest way to do almost anything in Tablumo. When you are not sure where a feature lives, press ⌘K and describe it — the right command is usually one or two letters away.
Light, dark and auto theme
Tablumo comes in a light theme and a dark theme, and you switch between them with the theme control at the bottom of the sidebar. The button names the current setting next to an icon — a moon for Dark mode, a sun for Light mode, a monitor for Auto theme — and each click steps to the next one in a short cycle: Dark, then Light, then Auto, and back to Dark.
- Dark mode — The dark theme, locked on whatever your device is set to — good for low-light rooms and the default look of the app.
- Light mode — The light theme, locked on — a white background that suits bright rooms, projecting to a screen, or printing a chart into a document.
- Auto theme — Follows your device’s own light-or-dark setting and changes with it. If your system flips to dark in the evening, Tablumo re-paints to match straight away, with no reload and nothing to click.
On your first visit Tablumo follows your device preference automatically. Once you pick a theme yourself, that choice is remembered and wins the next time you open the app and across reloads — it is kept in the browser on that device. Auto is remembered too, so you can always hand the decision back to your system. The button’s tooltip always says where you are and what one more click will do; on Auto it also names the theme it is showing right now, so “Auto” is never a mystery.
The theme is also reachable from the command palette: press ⌘K (Ctrl+K on Windows and Linux) and type “theme”, then run the switch-theme command (it reads “Switch to light mode” or “Switch to dark mode”, naming where one click takes you). It steps through the same cycle as the sidebar button, so you can change the look without leaving the keyboard.
Switching the theme re-colours the whole app at once, charts included: axis labels, gridlines and the multi-series palette all change to match, and a chart you export as a PNG captures the theme you are using at the time. Only the colours change — your data, filters, charts and dashboards stay exactly as they were.
If you move between daytime and night, leave the control on Auto and forget about it: Tablumo stays light while your system is light and turns dark when your system dims, with nothing to toggle by hand.
Keyboard shortcuts
Tablumo keeps its global shortcuts small and easy to remember. The same keys work everywhere in the app; on a Mac they use the ⌘ key, and on Windows and Linux they use Ctrl. You can see this list any time inside the Help hub, under Keyboard shortcuts.
- ⌘K / Ctrl+K — Open the command palette — search every action, view, table and column. See “The command palette (⌘K)”.
- ? — Open the Help hub from anywhere. Pressing “?” works as long as you are not typing in a text box, so it never gets in the way of editing a value or a formula.
- Esc — Close whatever is open on top — the command palette, an open dialog, or a guided walkthrough — and return to your work.
A few keys are specific to where you are working. In the SQL console, ⌘ + Enter (Ctrl + Enter on Windows and Linux) runs the query in the editor without reaching for the Run button. Inside a filter or rename box, Enter applies your change and Esc cancels it.
If you only learn one shortcut, make it ⌘K. From there you can reach every other action by name, so it doubles as a way to discover what the rest of the app can do.
On phone and tablet
Using Tablumo on a phone or tablet
Tablumo runs entirely inside your browser, so it opens on any device with a modern one — a laptop, a tablet, or a phone — with nothing to install and no separate mobile app to download. It is the same app everywhere; on a smaller screen the layout scales to fit and you drive it by touch instead of with a mouse.
The dense, multi-panel views are most comfortable on a desktop or laptop, and a tablet in landscape gives you plenty of room to read a grid, page through charts and cross-filter a dashboard. On a phone everything still works, but the screen is narrow, so it suits reviewing an analysis you built earlier and reading your dashboards more than assembling a complex one from scratch.
- Tap anywhere you would click on a desktop: tap a bar or slice to drill into the rows behind it, tap a filter chip to edit or clear it, tap a column header for its menu, and tap the ⋯ buttons to reach the same actions.
- Wide content scrolls sideways. The data grid and large charts can be wider than a phone, so swipe left and right to see the rest — the grid keeps its header row in place as you scroll.
- Pinch to zoom in on a chart or a packed grid when you want a closer look at the labels, then pinch back out to see the whole picture.
- The Help hub and this user manual stack their navigation above the content on a narrow screen, so the table of contents and search sit at the top and the section you pick reads as a single column.
- The sample-dataset gallery shows one card per row on a phone, two on a small tablet and three on a wide screen, so the cards stay readable at every size.
Loading your own data works the same way as on a computer: choose a sample dataset to explore straight away, or open your device’s file picker to pick a CSV or Excel file stored on the phone or tablet, or in a cloud drive it can reach. As always, the file is read on the device and your data never leaves it.
Tablumo follows your device’s light or dark setting automatically, switching its theme to match, and you can override it from the theme control if you prefer the other one. Your saved analyses live in the browser on that device — the same autosave and reopening described under Saving your work — and you can export or open a .tablumo file through the device’s file picker to move an analysis between devices.
Dashboard tiles can be dragged and resized by touch, but arranging a layout is fiddly on a small screen. The easiest workflow is to build and lay out a dashboard on a larger screen, then open it on your phone or tablet to view it and cross-filter on the go.
Sending feedback
Sending feedback and ideas
If something could be better, or there is a feature you wish Tablumo had, you can say so without leaving the app. Open the feedback form from the Feedback button at the bottom of the sidebar — the lightbulb icon — or from the command palette: press ⌘K (Ctrl+K on Windows and Linux), type “feedback”, and run Send feedback. Both open the same small form.
The form starts by asking what kind of feedback this is, so it can be filed in the right place:
- About what I’m seeing now — For a comment on the view in front of you — a chart that should behave differently, a filter that is awkward, a number that looks off. It attaches a short summary of the current screen so the suggestion lands exactly where you mean it.
- New feature idea — For a fresh capability that is not tied to the current screen. Nothing about the view is attached — just write the idea.
Type your message in the box and choose Submit. When it goes through, a short confirmation appears and the form closes on its own a moment later.
When you pick “about what I’m seeing now”, the attached summary describes the screen, not its contents: the active table’s name, its column names and types, your active filters and sorts, and how many rows currently match — never the values in any cell. You can see exactly what will be sent before you send it: choose “Show attached context” to expand the full summary, and “Hide” to collapse it again. A “new feature idea” attaches none of this and sends only the words you write.
What people ask for shapes the order things get built, so if a missing feature is blocking you, this is the most direct way to nudge it up the list. Being specific about what you were trying to do helps more than a one-word request.
Current limitations
Current limitations
Tablumo does a lot, but it does not do everything, and it is better to know the edges in advance than to run into them mid-analysis. The list below is honest about what is not built yet today and, where one exists, the simple way around it. Nothing here stops you analysing your data — charts, filters, summaries and exports all work over every row — these are the specific corners that are still open.
One point worth being clear on first: the data grid shows the first 100 rows as a scrollable, sortable, filterable preview. That preview is a window onto the table, not the whole of it — every chart, filter, pivot, summary and export is computed across all of your rows, however many there are. So a number you see in a chart or a total is over the full dataset even though the grid itself only lists the first hundred.
- Charts — A few chart types live only in the single-chart Chart view and cannot be placed on a dashboard yet: heatmaps, box plots and 3D scatter. Radar charts and geographic maps are not built. Gauge, Sankey and 3D scatter charts are read-only — you cannot click them to drill or cross-filter (bar, line, pie, scatter, bubble, treemap and others do). Charts export as PNG images, not SVG.
- Selecting in charts — You select by category or by a dragged range, not as individual rows that then follow into your other views. To turn a scatter or histogram selection into a filter the rest of the analysis respects, use "Filter to this box" / "Filter to this range".
- Filters — Filters apply to the whole analysis — there is no separate per-page or per-tile filter scope yet (that is on the way). A value checklist switches to a "contains" text search once a column has more than 60 distinct values. Number ranges have a drag slider; date ranges are typed only for now.
- Dashboards — Dashboard page tabs cannot be reordered yet, and the single-chart Chart view does not react to selections you make on a dashboard.
- Column types — Tablumo detects each column’s type automatically and there is no manual type-override menu yet. If a column is read the wrong way, the workaround is a calculated column that converts it explicitly.
- Calculated columns — Formulas work row by row (each new value is computed from that same row). Running totals and other across-row measures are not available as calculated columns, and a formula belongs to the one table it is added to.
- Comparing versions — A comparison is a one-time snapshot of what differs between two tables; it does not refresh or re-compare on its own, and it matches rows on a single key column (combined keys are not supported yet).
- Combining tables — Refreshing a combined table is manual on purpose, so a dashboard never changes under you unasked (an amber dot hints when a source has changed shape). You combine two tables at a time — combine again to chain in a third — and the join keeps matching rows or left-side rows (no right or full joins).
- The AI assistant — The optional assistant needs your own Anthropic API key, and it is off until you turn it on. By chat it can add and edit charts and tiles but cannot yet remove or move tiles or rename pages. It never invents numbers — every figure it shows is computed by the engine over your real data.
- Very large files — Table size is limited by your disk rather than memory, so large files load and survive reloads. A single very heavy operation — one enormous sort or join — is still capped at roughly 1.5 GB of working memory and stops with a plain-language message rather than crashing. Excel sheets are held in memory, so a very large workbook has a lower ceiling than a CSV of the same size.
- Excel import — Every non-empty sheet in a workbook is imported (there is no sheet-picker, which keeps import a single drag with no dialog). The .ods format is not accepted yet, and a very large workbook may pause briefly while it is read.
- Where your work is stored — Saved analyses live in the browser on the device you made them on, so clearing that browser’s site data clears them. To keep a copy or move an analysis to another machine, export a .tablumo file and open it there.
Most of these are features that are queued rather than ruled out. If one of them is blocking you, the Feedback option in the menu is the fastest way to nudge it up the list — what people ask for shapes the order things get built.