A lightweight desktop CSV viewer built for large datasets.
Open, explore, and sort files with millions of rows — without breaking a sweat.
Columnar is a native desktop application for opening and exploring CSV and TSV files of any size. Most spreadsheet tools struggle or crash with files over a few hundred megabytes. Columnar handles hundreds of millions of rows by indexing the file on open and reading rows on demand — memory usage stays low regardless of file size.
It is intentionally minimal. No cloud sync, no formulas, no editing. Just a fast, clean viewer you can drop any dataset into.
Get the latest installer for your operating system from the Releases page.
| Platform | File |
|---|---|
| Windows | Columnar_x.x.x_x64-setup.exe or Columnar_x.x.x_x64.msi |
| macOS (Apple Silicon) | Columnar_x.x.x_aarch64.dmg |
| Linux | Columnar_x.x.x_amd64.deb or Columnar_x.x.x_amd64.AppImage |
Windows note: You may see a SmartScreen warning on first launch because the app is currently unsigned. Click "More info" → "Run anyway" to proceed. This is expected for unsigned open-source applications.
macOS note: If macOS blocks the app on first launch, right-click the
.appand choose "Open" to bypass Gatekeeper.
- Opens CSV and TSV files of any size — tested up to 28 million rows and 14 GB
- Virtual scroll — only the visible rows are rendered, keeping the UI fast at all row counts
- Lazy row loading — rows are read from disk on demand, not loaded into memory all at once
- Progress indicator during file indexing so you always know what's happening
- Click any column header to sort ascending, click again to sort descending
- Full-text search across all cells with highlighted matches and match count
- Parallel search and sort using all available CPU cores via Rayon
- Double-click any column header to open a stats panel
- Shows type (Numeric or String), count, unique count, null count, min, max, mean, median, standard deviation, and sample values
- Go to any row instantly via the Go to Row dialog (
Ctrl+G) - Keyboard navigation with arrow keys, Page Up/Down, Home, End
- Column resize by dragging the header edge
- Drag and drop a file onto the window to open it
- Native menu bar with File → Open File and File → Recent Files
- Recent files persist between sessions (last 10 files)
- Clear recent files from the menu
| Action | Shortcut |
|---|---|
| Open file | Ctrl+O |
| Search | Ctrl+F |
| Go to row | Ctrl+G |
| Close modal / clear search | Escape |
| Navigate rows | ↑ ↓ Page Up Page Down |
| Jump to top / bottom | Home / End |
| Column stats | Double-click header |
| Sort column | Click header |
Most CSV viewers parse the entire file into memory on open. For a 14 GB file that means 14+ GB of RAM consumed before you can see a single row.
Columnar uses a different approach:
- Index pass — on open, a single pass through the file records the byte offset of every row. For 28 million rows this index is about 225 MB and takes 20–30 seconds on a large file. The window stays responsive throughout and shows live progress.
- On-demand parsing —
get_pagetakes the byte offsets for the requested rows, seeks directly to those positions in the memory-mapped file, and parses just those rows. 80 rows at a time, imperceptible latency. - Parallel sort and search — sort and search do a single parallel pass extracting only what they need, using Rayon across all CPU cores.
Peak memory usage is roughly: row_count × 8 bytes for the index, plus displayed_rows × row_size for the visible page. For a 28M-row file that is well under 1 GB regardless of file size.
| Layer | Technology |
|---|---|
| App framework | Tauri v2 |
| Backend | Rust — csv, memmap2, rayon, parking_lot |
| Frontend | Vanilla HTML, CSS, JavaScript — no framework, no bundler |
| Fonts | Syne (UI) + JetBrains Mono (data) |
| Build / release | GitHub Actions |
Linux:
sudo apt-get install libwebkit2gtk-4.1-dev libgtk-3-dev \
libayatana-appindicator3-dev librsvg2-dev patchelfmacOS: Xcode Command Line Tools
xcode-select --installWindows: Microsoft C++ Build Tools and WebView2
git clone https://github.com/amitkroutthedev/Columnar.git
cd Columnar
npm install
npm run tauri devnpm run tauri buildInstallers will be in src-tauri/target/release/bundle/.
| Format | Extension | Notes |
|---|---|---|
| Comma-separated | .csv |
Standard RFC 4180, quoted fields supported |
| Tab-separated | .tsv |
Auto-detected from extension |
Quoted newlines inside fields are handled correctly. UTF-8 BOM is stripped automatically if present.
- Read-only — Columnar is a viewer. Editing cells is not supported.
- No column filtering — filtering by column value is not yet implemented.
- Sort speed on very large files — sorting a 14 GB file requires a full parallel pass and takes 5–15 seconds depending on hardware. A progress indicator for sort is planned.
- Single file at a time — only one file can be open per window.
- No Excel support —
.xlsxfiles are not supported. Convert to CSV first.
- Sort progress indicator
- Column value filtering
- Freeze / pin columns
- Export filtered/sorted subset as CSV
- Multiple tabs
- Dark / light theme toggle
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
git clone https://github.com/amitkroutthedev/Columnar.git
cd Columnar
npm install
npm run tauri devFor bug reports, include your OS, file size, row count, and the exact error or behavior you saw.
BSD-3-Clause — see LICENSE for details.