A fast, keyboard-driven spreadsheet with vim-style navigation and Excel-compatible formulas. No GUI needed.
=SHELL("gemini -p 'prompt'")
Execute shell commands directly in your spreadsheet cells
Everything you need for spreadsheet work, right in your terminal
Built with Rust for maximum performance. Instant startup, smooth scrolling, and responsive editing even with large datasets.
Navigate with arrow keys or vim bindings. Modal editing, visual selection, and command mode all feel natural.
Excel-compatible functions including SUM, AVG, IF, VLOOKUP, CONCATENATE, and more. Even execute shell commands with SHELL().
Open and save CSV, TSV, and Excel files (.xlsx, .xls). Seamlessly work with existing spreadsheet data.
Pipe data directly from other commands. Works perfectly in scripts and can be used as part of your data pipeline.
Colors, bold text, alignment options, and data type formatting. Dark and light themes with persistent settings.
A powerful spreadsheet experience right in your terminal
Run ls -Al | xl to instantly view directory listings in a spreadsheet format
Excel-compatible formulas with live evaluation
Easy on the eyes for late-night data work
Switch themes with a single keypress
Get up and running in seconds
One-line install that auto-detects your OS and architecture
$ curl -fsSL http://rustxl.com/install.sh | bash
> irm http://rustxl.com/install.ps1 | iex
> curl -fsSL http://rustxl.com/install.bat -o install.bat && install.bat
$ git clone https://github.com/only-using-ai/rustxl
$ cd rustxl
$ cargo build --release
$ cp target/release/xl /usr/local/bin/
$ cargo install --path .
Requires Rust 1.85+ (2024 edition)
Simple, intuitive, powerful
$ xl spreadsheet.csv
$ xl data.xlsx
$ xl report.tsv
$ xl
$ ls -la | xl
$ cat data.csv | xl
$ curl api.example.com | xl
# Open file, edit, press 's' to save
$ xl input.csv
# Save as new file in save dialog
Excel-compatible functions for all your calculations
=SUM(A1:A10)
Sum of values in range
=AVG(A1:A10)
Average of values
=MIN(A1:A10)
Minimum value
=MAX(A1:A10)
Maximum value
=COUNT(A1:A10)
Count numeric cells
=COUNTA(A1:A10)
Count non-empty cells
=ROUND(A1, 2)
Round to decimal places
=CORREL(A1:A10, B1:B10)
Correlation coefficient
=ABS(A1)
Absolute value
=INT(A1)
Integer part of number
=MOD(A1, B1)
Modulo (remainder)
=SQRT(A1)
Square root
=POWER(A1, 2)
Raise to power
=PRODUCT(A1:A10)
Product of values
=MEDIAN(A1:A10)
Median value
=IF(A1>10, "Yes", "No")
Conditional logic
=COUNTIF(A1:A10, ">5")
Count matching criteria
=SUMIF(A1:A10, ">5")
Sum matching criteria
=AVERAGEIF(A1:A10, ">5")
Average matching criteria
=AND(A1>5, B1<10)
Logical AND
=OR(A1>5, B1<10)
Logical OR
=NOT(A1>5)
Logical NOT
=IFERROR(A1/B1, "Error")
Return value if error
=CONCATENATE(A1, B1)
Join text values
=CONCAT(A1, " ", B1)
Join text (alias)
=LEFT(A1, 5)
First N characters
=RIGHT(A1, 5)
Last N characters
=MID(A1, 2, 5)
Substring from position
=LEN(A1)
Length of text
=TRIM(A1)
Remove leading/trailing spaces
=UPPER(A1)
Convert to uppercase
=LOWER(A1)
Convert to lowercase
=PROPER(A1)
Capitalize first letter of each word
=VLOOKUP(A1, B1:D10, 2)
Vertical lookup
=SHELL("gemini -p 'prompt'")
Execute shell command and display output
Formulas start with = and support arithmetic operators (+, -, *, /) with proper
precedence. Cell references use A1 notation.
Fast, intuitive controls for every operation
Format your cells for better readability
Plain text values
Numeric formatting
Dollar formatting
Percent formatting
Date formatting
Time formatting
Join developers who prefer the terminal for spreadsheet work.