Fast, hardware-accelerated CSV visualization with intelligent data aggregation.
Spreadsheet Analyzer is a native desktop application for loading, exploring, and visualizing time-series CSV data. It handles datasets of any size by automatically aggregating data based on the current zoom level — tens of millions of samples render without lag.
Data Loading
- Open single files, multiple files, or entire folders at once
- Automatic detection of multiple timestamp formats
- Background loading with progress indicator
- Duplicate any loaded dataset for side-by-side comparison
Visualization
- Interactive plots powered by ImPlot
- Shared plot for up to 2 columns, automatic subplot layout for 3 or more
- Cursor annotations showing the exact y-value at the mouse position
- Global X-axis linking to synchronize time ranges across multiple datasets
- Automatic X-axis rescaling when switching between measurements with different time ranges
Performance
- Hardware-accelerated rendering via OpenGL and SDL3
- Intelligent data reduction — reduction factors from 1× up to 10,000,000× depending on zoom level
- LTO-optimized release builds
Usability
- Native file dialogs on all platforms
- Dark and light theme following the system preference
- Hi-DPI / display scaling aware
- Dockable windows
- Multi-select columns with
ShiftandCtrl - Configurable maximum displayed data points
Place screenshots here.
The first column of a CSV file is expected to contain a timestamp. The following formats are detected automatically:
| Format | Example |
|---|---|
YYYY/MM/DD HH:MM:SS |
2024/03/15 14:30:00 |
YYYY-MM-DD HH:MM:SS |
2024-03-15 14:30:00 |
YYYY-MM-DDTHH:MM:SS |
2024-03-15T14:30:00 (ISO 8601) |
DD.MM.YYYY HH:MM:SS |
15.03.2024 14:30:00 |
DD/MM/YYYY HH:MM:SS |
15/03/2024 14:30:00 |
MM/DD/YYYY HH:MM:SS |
03/15/2024 14:30:00 |
Numeric columns without a timestamp are also supported.
| Shortcut | Action |
|---|---|
Ctrl+O |
Open file(s) |
Ctrl+Shift+O |
Open folder |
Ctrl+Q |
Quit |
Shift+Click |
Select a range of columns |
Ctrl+Click |
Keep current selection |
Launch the application and open a CSV file via File → Open or drag-and-drop. You can also pass files directly on the command line:
spreadsheet_analyzer data.csv
spreadsheet_analyzer measurement1.csv measurement2.csv
spreadsheet_analyzer --verbose data.csvOptions
| Flag | Description |
|---|---|
FILE |
One or more CSV files to open on startup |
-v, --verbose |
Enable verbose output and show the debug menu |
-h, --help |
Print usage |
Requirements
- CMake ≥ 3.24
- C++23-capable compiler (GCC ≥ 13, Clang ≥ 17, MSVC 2022)
- OpenGL
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build buildFor a debug build with coverage instrumentation (Clang only):
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build buildLTO is enabled automatically for non-debug builds. To disable it:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DUSE_LTO=OFFmacOS produces a .app bundle. Windows builds include a manifest and version resource.
| Component | Library |
|---|---|
| GUI framework | Dear ImGui |
| Plotting | ImPlot |
| Windowing / rendering | SDL3 + OpenGL |
| Image loading | SDL_image |
| CSV parsing | csv-parser |
| Float parsing | fast_float |
| Logging | spdlog + fmt |
| File dialogs | nativefiledialog-extended |
| CLI parsing | cxxopts |
| Fonts | Roboto Sans, Roboto Mono, Font Awesome 6 |
See CHANGELOG.md.