https://github.com/thorstenfoltz/octa
Multi reader for parquet, avro, csv, jupyter notebook, json and more
https://github.com/thorstenfoltz/octa
csv editor excel jupyter-notebook markdown octa parquet pdf reader sas spss stata
Last synced: about 1 month ago
JSON representation
Multi reader for parquet, avro, csv, jupyter notebook, json and more
- Host: GitHub
- URL: https://github.com/thorstenfoltz/octa
- Owner: thorstenfoltz
- License: mit
- Created: 2026-04-04T14:45:25.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-05-03T18:17:47.000Z (about 2 months ago)
- Last Synced: 2026-05-03T20:08:24.973Z (about 2 months ago)
- Topics: csv, editor, excel, jupyter-notebook, markdown, octa, parquet, pdf, reader, sas, spss, stata
- Language: Rust
- Homepage:
- Size: 1.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Octa
An application for viewing data files. Octa opens files in a spreadsheet-like table view with sorting, filtering, and search options. Writing is supported but limited. Octa is primarily a reader.
## Supported Formats
| Format | Read | Write |
|---------------------|------|-------|
| Parquet | yes | yes |
| CSV / TSV | yes | yes |
| JSON / JSON Lines | yes | yes |
| Excel | yes | yes |
| Arrow IPC / Feather | yes | yes |
| Avro | yes | yes |
| ORC | yes | yes |
| HDF5 | yes | no |
| SQLite | yes | yes |
| DuckDB | yes | yes |
| SAS (.sas7bdat) | yes | no |
| SPSS (.sav, .zsav) | yes | yes |
| Stata (.dta) | yes | yes |
| R (.rds) | yes | no |
| DBF / dBase (.dbf) | yes | yes |
| XML | yes | yes |
| TOML | yes | yes |
| YAML | yes | yes |
| PDF | yes | yes |
| Jupyter Notebook | yes | yes |
| Markdown | yes | yes |
| Plain Text | yes | yes |
Unknown file extensions are opened as plain text.
## Features
### Table View
- Virtual table rendering with smooth scrolling for large datasets
- Lazy row loading for Parquet files (handles millions of rows)
- Inline cell editing with type-aware parsing
- Column resize and drag-and-drop reorder
- Ascending/descending sort by any column
- Cell, row, and column selection with clipboard copy/paste
- Search and filter across all columns in real time
### Multiple View Modes
- **Table View** -- structured spreadsheet display (default)
- **Raw Text View** -- source text with line numbers and optional column alignment
- **Markdown View** -- rendered CommonMark preview
- **Notebook View** -- rendered Jupyter notebook with code cells, markdown cells, and outputs
- **PDF View** -- page-by-page rendered output
- **SQL Query View** -- write a query against the current table (exposed as `data`) and see results beneath
### Editing
- Insert, delete, and move rows and columns
- Color marking for cells, rows, and columns with six color choices
- Unsaved-changes guards on close and file open
- Save in the original format or export to a different one via Save As
### Settings
- Configurable font size
- Light and dark theme with the option to set a default
### Other
- CSV delimiter auto-detection (comma, semicolon, pipe, tab) and manual selection
- Auto-update check from GitHub releases
- Cross-platform: Linux, macOS, and Windows
## Installation
### Linux
The simplest option is to **download a pre-built binary** from the
[releases page](https://github.com/thorstenfoltz/octa/releases) and run it
directly — no installation step is required:
```bash
chmod +x octa
./octa # run from anywhere
# or place it on your PATH, e.g. ~/.local/bin/octa
```
Use `install.sh` only if you want Octa to appear in your application
launcher with an icon and file associations, or if you want to build from
source. The script detects whether a pre-built `octa` binary is next to it
and uses it; otherwise it builds from source, which requires the Rust
toolchain (install from ).
```bash
# System-wide (installs to /usr/local)
sudo ./install.sh
# User-local (no sudo needed)
./install.sh ~/.local
```
Building from source additionally requires a C compiler and the native
libraries listed in `CLAUDE.md` (GTK, fontconfig, mupdf, etc.).
### Arch Linux
Available on the AUR as `octa` (build from source) and `octa-bin` (prebuilt binary).
```bash
paru -S octa
```
or
```bash
paru -S octa-bin
```
### Windows
The simplest option is to **download `octa.exe`** from the
[releases page](https://github.com/thorstenfoltz/octa/releases) and run it
directly — no installation needed. Place it wherever you like (e.g. your
Desktop or `C:\Tools\`) and double-click to launch.
Optionally, `install.bat` copies the binary into `Program Files\Octa`,
generates an `.ico` (if ImageMagick is on PATH), and creates a Start Menu
shortcut. Right-click and choose **Run as administrator**. It does *not*
modify your `PATH`; open Octa via the Start Menu shortcut or by running
`"C:\Program Files\Octa\octa.exe"` directly.
**Windows SmartScreen warning:** Octa is not code-signed, so on first
launch Windows shows *"Windows protected your PC"*. Click **More info**,
then **Run anyway**. Subsequent launches open without the prompt.
### macOS
The simplest option is to **download the macOS `.app` bundle** from the
[releases page](https://github.com/thorstenfoltz/octa/releases). The
release artifact targets Apple Silicon. Drop `Octa.app` into
`/Applications` (or anywhere else) and double-click to launch.
**First-launch unsigned-app warning:** Octa is not code-signed or
notarized, so macOS quarantines the app the first time you launch it.
You'll see *"Octa.app cannot be opened because the developer cannot be
verified"*. Two ways around it:
- Right-click the app icon in Finder, choose **Open**, then click **Open**
in the confirmation dialog. macOS remembers the choice for that copy
of the app.
- Or remove the quarantine attribute from a terminal:
```bash
xattr -d com.apple.quarantine /Applications/Octa.app
```
To build from source, install the Rust toolchain ()
and the native dependencies via Homebrew, then `cargo build --release`:
```bash
brew install mupdf-tools harfbuzz freetype jpeg openjpeg gtk+3
cargo build --release
```
The resulting binary lives at `target/release/octa`.
## Configuration
Settings are stored in:
- **Linux:** `$XDG_CONFIG_HOME/octa/settings.toml` (defaults to `~/.config/octa/settings.toml`)
- **macOS:** `~/Library/Application Support/Octa/settings.toml`
- **Windows:** `%APPDATA%\Octa\settings.toml`
## License
MIT