Table View¶
The Table view is Octa's default for almost every format: Parquet, CSV, SQLite, Excel, you name it. It's a spreadsheet-like virtual renderer that streams large files smoothly and supports inline editing, multi-cell selection, sorting, filtering, and clipboard operations.

Navigation¶
- Arrow keys move the selected cell.
- Scroll wheel scrolls vertically. Shift+Scroll wheel scrolls horizontally.
- Ctrl+Shift+Up / Down jumps the selection to the first / last row of the column.
- Ctrl+Shift+Left / Right jumps to the first / last column.
- Ctrl+G (
GoToCell) focuses the navigation field in the status bar. TypeR5:C3to jump to a cell,R5to jump to a row,C3for a column, or a column name (e.g.created_at) to jump to that column's first cell.
Selection¶
- Click a cell to select just that cell.
- Ctrl+click a cell to toggle it in a disjoint multi-cell selection. The first toggle promotes whatever cell was already selected into the set, so a single click + a few Ctrl+clicks builds an arbitrary cell selection without dragging.
- Click a row number (grey column on the left) to select the entire row. Ctrl+click adds rows to the selection; Shift+click picks a contiguous range.
- Click a column header to select the entire column. The same Ctrl / Shift modifiers extend / range-select columns.
- Ctrl+A selects all rows (when no text editor is focused).
- Ctrl+Up / Down (and Ctrl+Left / Right) extend the selection by one row/column from the current anchor.
- Ctrl+PgUp / Ctrl+PgDn scroll the table by one viewport and advance the selected cell by the same number of rows (spreadsheet-style page navigation).
The active selection drives clipboard operations: Ctrl+C copies whatever is selected (single cell, multi-row block, multi-column block, or a free multi-cell selection) as tab-separated values.
Sorting¶
Click a column header to sort by that column ascending. Click again for descending. Click a third time to clear the sort.
The sort indicator (▲ / ▼) appears next to the column name. Sorting is applied to the filtered view, so searching first and then sorting works as you'd expect.
Resizing columns¶
- Drag the right edge of a column header to resize it. Minimum width is 60 px; no upper limit.
- Double-click the seam between two column headers to auto-fit the left column to its widest visible value (header included).
- Ctrl+Shift+W (remappable) fits every column to its content.
Best-fit measures up to 5,000 sample rows so it stays snappy on multi-million-row tables.
Reordering columns¶
Drag a column header sideways to reorder. The cursor changes to a hand when you're over a draggable region; a drop indicator shows where the column will land.
To rename a column, double-click its header. Right-click a header for the data-type submenu (Int64 / Float64 / Utf8 / etc.), which re-types the column in place, with values that can't convert becoming nulls.
Editing cells¶
Double-click a cell to enter edit mode. The current text is selected so you can type to replace, or click to position the cursor. Confirm with Tab / Enter; cancel with Escape. Values parse based on the column's declared type:
- Numeric columns reject non-numeric input.
- Date columns parse ISO-8601 and most common dialects (see Date Inference).
- Binary columns parse according to the active display mode (Binary / Hex / Text); see Settings → Table View → Binary display mode.
For a non-trivial number of edits, see the dedicated Editing page which covers row/column structural operations, undo / redo, and the edit overlay.
Number display (separators and rounding)¶
Numeric columns (Int*, Float*) render with thousand separators
by default, e.g. 1,234,567.89. This is a display-only convenience:
saved and exported files, the CLI, and the MCP server always carry the
raw values. Turn it off, or switch between English (1,234.56) and
European (1.234,56) grouping, under
Settings -> Table View
(Thousand separators and Number style).
For a per-column rounding format, right-click a numeric column header and pick Number format... (also available as Edit -> Number format... for the selected column). The dialog applies changes live as you edit (no Apply step), and is movable and resizable. Choose:
- Decimals - type a number, or leave empty for
Auto(natural precision). A positive count fixes the digits after the decimal point and pads with trailing zeros (so2.5shows as2.50at two decimals). A negative count rounds before the decimal point, e.g.-2rounds to the nearest 100. - Rounding -
Normal(round half away from zero),Up(toward positive infinity), orDown(toward negative infinity).
Number formats are display-only and per tab (session-only). When you Save a tab that has a rounding format, Octa asks whether the file should carry the rounded values or the full-precision originals - see Saving.
Lazy row loading (large files)¶
For streaming formats (Parquet, CSV, TSV), Octa loads the first 5,000,000 rows at open and keeps loading the rest in the background as you scroll. The status bar shows a busy spinner during background load.
The 5 M default is the initial-load row cap, configurable under Settings → Performance → Initial-load row cap. Raising it improves first-paint completeness on giant files at the cost of more memory; lowering it makes the initial open faster. Tick the Unlimited checkbox next to the input to load every row up front (recommended only when you have RAM to spare).
Parquet files with very many row groups (> 32,767) fall back to a DuckDB-backed reader automatically, so they open without manual recompaction.
Files smaller than the cap load entirely on first open, with no streaming.
Read-only mode¶
F8 (ToggleReadOnly) toggles
a session-only read-only mode that disables every editing path
(cell edits, structural changes, marks, undo/redo,
raw text editor). Useful when you're
poking around a file you don't want to accidentally modify. The
status bar shows a [Read-only] pill when active.
A one-shot notice explains the mode the first time you toggle it; suppress with Settings → File-Specific → Read-only mode notice.
Right-click context menu¶
Right-click anywhere on the table for context-aware actions:
- On a cell: Copy, Mark, Parse in new tab, Insert / Delete row / column, etc.
- On a row number: Copy row, Mark row, Delete row, Insert row, Move row.
- On a column header: Copy column, Mark column, Rename, Change Type, Delete column, Move column, Hide column, Copy column name(s), Filter values..., Value frequency..., and Number format... (numeric columns only).
Selection stats¶
Selecting more than one cell adds a pill to the right side of the status bar summarising the selection:
- For numeric selections: Count, Sum, Avg, Min, Max.
- For mixed or non-numeric selections: just Count.
The selection sources fall through in the same order Ctrl+C uses: multi-cell (Ctrl+Arrow) first, then row selections, then column selections. A single-cell selection keeps the existing Cell / Type info pill instead.
Hide and show columns¶
Right-click any column header and pick Hide column to drop it from the view. Hidden columns are still part of the underlying table on disk: both Save and Save As write them out unchanged. Pull them back via Edit → Show hidden columns (the menu entry is greyed when nothing is hidden).
Hidden state is per tab and session-only, so closing the tab or reopening the file clears the hidden set. Use it as a viewport-management tool, not a schema modification.
Copy column name(s)¶
Right-click any column header and pick Copy column name(s) to
copy the header text to the clipboard. If you have multiple
columns selected (Ctrl-click their headers) and right-click one of
them, all selected names are joined with newlines. Useful for
constructing SQL SELECT lists or scripts from the columns Octa
sees.
Pinned tabs¶
Right-click any file-backed tab in the tab strip and pick Pin tab. Pinned tabs:
- Show a 📌 prefix in the tab label.
- Hide the small × close button.
- Refuse to close on Ctrl+W or the unsaved-changes prompt. You have to unpin them first (same right-click menu).
Persistence across restarts¶
Pinned tab paths are saved to
settings.toml's pinned_tabs
field and reopened on next launch. Files that no longer exist on
disk are silently dropped from the list. Scratch tabs (no source
path) cannot be pinned; the menu entry is greyed out for them.
Unsaved changes in pinned tabs are NOT auto-saved
Pinning does not change save semantics. Closing the application or closing the tab with unsaved changes still runs the standard Save / Don't Save / Cancel dialog. The pinned tab reopens on next launch with whatever is on disk. Any unsaved edits from the previous session are lost if you didn't save them. Save with Ctrl+S (or Save As) before quitting.
See also¶
- Search & Filter narrows the table to rows that match a pattern.
- Editing covers structural row/column operations plus undo semantics.
- Colour Marking highlights cells, rows, and columns.
- Saving writes back to disk, with format-specific notes for databases.