Open, sort, query and split a huge CSV — without uploading it
OmniViewer opens a CSV right in your browser, at any size. Drop the file and
a streaming WebAssembly RFC 4180 parser reads every byte
across a pool of Web Workers, so within a moment you have the
exact row count and the whole file as an aligned, typed
table — not a truncated preview. From there you can
sort and filter across every row,
find and step through matches, resize columns, run
SQL against it, convert it to JSON, read
per‑column statistics, stream an
export to JSON/YAML/SQL, or split it into
many smaller files. There is no upload and no server: the page reads only the
bytes it needs, and it has been tested in‑browser with a
21 GB, 100‑million‑row file.
What you can do with a CSV
- The whole table: a column‑aligned, virtual‑scrolled grid over the entire file, with numbers, text and booleans typed and coloured
- Sort & filter: click a column to sort it, or filter rows by substring or regular expression — both scan the file itself, so they cover every row
- Find: count every match in the file and step through them in place, each one centred and highlighted
- Columns: drag to resize, double‑click to auto‑fit, and your widths come back the next time you open a file with the same header
- SQL: the file streams into an in‑browser SQLite database — write
SELECT…FROM data and query it, no upload
- Export & split: stream the file out as a JSON array, YAML, or a
.sql dump, or split one big CSV into many smaller files that each keep the header
- JSON: turn the rows into a JSON array of objects keyed by the header, syntax‑highlighted, ready to copy or download
- Stats: per‑column type mix, blank counts, distinct values and numeric min/max
- Read the raw view with line numbers, or drop to hex to inspect the exact bytes: commas or tabs,
"‑quoted fields, CRLF vs LF
- Keep everything local: the file never leaves your computer
A note on the CSV format
CSV — comma‑separated values — is the lowest common
denominator for tabular data: one record per line, fields separated by a
delimiter, with quoting for fields that contain the delimiter, quotes or
newlines. It is loosely described by RFC 4180, though
real‑world files vary in delimiter (comma, tab, semicolon), quoting and
encoding — which is exactly why the parser here tracks quote state
byte‑exactly across chunk boundaries, and why looking at the raw bytes
is still useful.
hugecsv.com now lives here
The dedicated big‑CSV workbench the same authors ran at
hugecsv.com — the WebAssembly
streaming parser, the full‑file sortable and filterable table, column
resizing, the streaming exporter and the splitter — is this page. It
moved here so one tool opens
every file format, with the deep CSV
tooling intact rather than on a separate site.
FAQ
Is my CSV uploaded anywhere?
No. OmniViewer is a static page with no server-side processing: your CSV is read directly by your browser and never leaves your computer. That is true of every tab, including the SQL engine and the exporter — the parsing all happens in Web Workers on your own machine.
What is a CSV file?
CSV (comma-separated values) is a plain-text format for tabular data: one record per line, with fields separated by a delimiter — usually a comma, sometimes a tab or semicolon — and quoting for fields that contain the delimiter, a quote or a newline. It is loosely standardised by RFC 4180.
How large a CSV can I open?
Effectively unlimited. The table has been tested in-browser with a 21 GB file of 100 million rows: a WebAssembly RFC 4180 parser streams every byte across a pool of Web Workers to get the exact row count and a sparse row-to-byte index, and the table then paints by reading only the bytes for the rows on screen. Sorting, filtering and finding stream the file too, so they cover every row rather than a loaded prefix.
Can I sort and filter the whole file, not just the first rows?
Yes. Click a column header to sort by it, or type in the filter box to keep only matching rows (substring or regular expression, one column or all of them). Both run a streaming scan over the file in a Web Worker and build an explicit list of surviving rows, so they see every record. Filtering is capped at 5 million matching rows and sorting at 2 million rows — past that the sort is refused rather than silently truncated, and filtering first is the way through.
Can I query my CSV with SQL?
Yes. The SQLITE tab streams the file into a real in-browser SQLite database and lets you write SELECT … FROM data with WHERE, GROUP BY, ORDER BY, joins and aggregates. It is offered for files up to about 1 GB, because the database is held in WebAssembly memory. Above that, export a streamed .sql dump instead and load it with sqlite3 out.db < dump.sql.
Can I split a big CSV into smaller files?
Yes. Open export ▾ on the table and choose how many files you want. The CSV is copied through byte for byte in 1 MB blocks — original quoting and line endings preserved — switching to the next output file only on a real record boundary, so a quoted field containing a newline is never cut, and every part carries the header row. With the File System Access API it writes straight into a folder you pick, so the size is bounded by your disk, not by memory.
How do I know what delimiter or encoding my CSV uses?
The delimiter is sniffed from the first line and shown in the info bar, and you can override it from the toolbar (comma, semicolon or tab). The hex view shows the exact bytes, so you can see whether lines end in CRLF or LF and whether there is a byte-order mark. OmniViewer detects text vs binary from the content, not the extension.
How does this relate to hugecsv.com?
It is the same tool. hugecsv.com was the standalone big-CSV workbench by the same authors; its engine — the WebAssembly streaming parser, the full-file sortable and filterable table, column resizing, the streaming exporter and the splitter — now runs here at omniviewer.org/csv, so one viewer opens every format without giving up the deep CSV tooling.