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.

  1. Drag a file straight onto the window, or use the "Add data" / import control to pick a file from your computer.
  2. 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.
  3. Load one of the built-in sample datasets to explore the tool without your own file (see "Sample datasets").

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.

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.

  1. On the empty start screen, find the "No data yet? Start with a sample dataset" gallery below the import area.
  2. Click a card — it loads as a normal table you can sort, filter, and chart right away.
  3. Want another sample later? Open the command palette with ⌘K and choose Sample datasets to add one at any time.
  4. 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.

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.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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)".
  5. 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 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.

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 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.

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.

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.

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.

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.

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.

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…”.

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.

  1. Open the filter panel and choose the column to filter on.
  2. Set the condition — the controls match the column type (see below).
  3. 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.

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.

  1. 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.
  2. 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”.
  3. 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.

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.

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.

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.

  1. 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.
  2. 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.
  3. 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.

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.

  1. 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”.
  2. 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.
  3. 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.

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:

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:

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.

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”).

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.

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.

  1. On a scatter chart, drag a box around the points you care about. The drill dialog opens showing the rows inside the box.
  2. 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).
  3. 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.

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.

  1. Click an element on any tile to select it — the same click, shift, and drag rules as marking apply.
  2. Every other tile updates to show only the matching rows; the tile you clicked highlights your selection instead of filtering itself away.
  3. 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:

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.

  1. On a dashboard, click “Page filters” in the page toolbar to open the filter editor for the current page.
  2. Add filters exactly as you would in the global sidebar — pick a column, then choose values, a number range, or a date range.
  3. Close the editor. Every tile on the page now reflects the page filters on top of the global ones.
  4. 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.
  5. 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.
  6. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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.

  1. Group the data by two columns (see Grouping rows into a summary).
  2. In the group bar, switch the Rows / Pivot toggle to Pivot.
  3. 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.
  4. 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.

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.

  1. 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.
  2. Set X (group by) — the category, or a date column — that splits the data into bars, slices or points.
  3. Set Y (measure) and the Aggregation (Sum, Average, Count, and so on) that rolls each group up to a single number.
  4. 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.

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.

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:

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:

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.

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.

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.

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.

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.

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.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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.

  1. 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.)
  2. Type your text in the box. Markdown is supported: a “# Heading”, **bold** and *italic*, `code`, bulleted lists, and [links](https://example.com).
  3. 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.
  4. Drag the note by its grip to position it, and resize it from the bottom-right corner like any other tile.

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.

  1. Type a name for the new column — it must be different from your existing columns.
  2. 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.
  3. 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.
  4. 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.

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.

  1. Tick the values that belong together. Use the search box to narrow a long list of values.
  2. Type a name for the bucket (for example “Germany”) and add the group. The chosen values move under that name.
  3. Repeat for the next bucket; a value already in a group leaves the list, so each value lands in one bucket only.
  4. Decide what happens to everything you didn’t group, name the new column, and add it. It appears in the grid straight away.

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.

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.

  1. 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).
  2. 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.
  3. Decide which rows to keep and which columns to bring in (both have sensible defaults, so you can usually leave them).
  4. 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.

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.

  1. Right-click the dataset in the sidebar and choose Rename.
  2. The name turns into a small editing box with the current name selected, ready to overwrite.
  3. 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.

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.

  1. Click the × on the dataset’s sidebar row, or right-click it and choose Delete dataset.
  2. Read the confirmation. Under “What this affects” it lists exactly what depends on this dataset — or tells you nothing else does.
  3. Choose Cancel to keep the dataset (the safe default), or Delete dataset to remove it.
  4. 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.

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:

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.

  1. Open Compare tables from ⌘K, or right-click a version and choose Compare with previous version.
  2. Choose the earlier version and the newer version.
  3. Confirm the column that identifies a row in both tables (the suggested one is marked).
  4. Read the added / removed / changed / unchanged counts and the per-column changes.
  5. 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.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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.

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.

  1. Type a name for the current workspace and choose Save analysis to add it to the library.
  2. 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.
  3. Use the row actions to rename an analysis, duplicate it as a copy, or delete it.
  4. 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.

  1. 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.
  2. On the other computer (or later as a restore), use the import action in the Analyses toolbar and pick the .tablumo file.
  3. 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.

  1. To export a table, open the ⋯ menu next to its name in the left sidebar.
  2. 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.
  3. 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.)

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.

  1. 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.
  2. Type your query in the editor. Run it with the Run button or by pressing ⌘/Ctrl + Enter.
  3. Read the results in the table below, with the row count, column count and how long the query took shown alongside.
  4. 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.

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.

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.

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.

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:

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.

  1. Tick “Enable the AI assistant” to turn the feature on. Until you do, this settings panel is the only place the assistant exists.
  2. 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.
  3. Choose a model: Claude Opus 4.8 for best quality, or Claude Sonnet 4.6 for faster, lower-cost answers.
  4. 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.

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.

  1. 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.
  2. 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.
  3. Move the highlight with the ↑ and ↓ arrow keys, then press Enter to run the highlighted command. You can also click any row.
  4. 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.

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.

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.

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.

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:

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.

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.