CSView 2
A fast CSV viewer for files that don’t fit in spreadsheets
CSView opens and indexes multi‑gigabyte CSV files in seconds on macOS. It is built specifically for viewing and inspecting huge datasets safely and efficiently, without editing, rewriting, or transforming your data.
View filtering
Filter the current view by cell value
Open CSV in alternative apps
[User request] Add a button to the toolbar which opens the current CSV in an alternative app registered for the .csv file type.
Column sorting
When right-clicking on a column header, give the option to sort ascending/descending
Read Excel files
Open Excel sheets and display in read-only view.
Make headings more prominent
Headings are rendered in the same style as cells and not easy to distinguish from the body of the grid
Expand rows containing JSON values
When a cell contains a serialised JSON object, it can be difficult to visually parse what's in the field.
If CSView detects JSON content, it could allow rows to be expanded to support rendering either a pretty-printed JSON value or a more structured sub-table.
Improved cell escape character handling
There are two limitations in the current escape character handling:
1. The character is assumed to be the same as the quote character 2. Malformed cells with a quote in the middle will trigger the rest of the file to parse incorrectly
Proposed change is to replace the escape handling with a more robust mechanism that takes into account the two scenarios above.
Command-scroll to zoom with mouse
Trackpad pinch gesture and command =/- keys are already configured for zooming the view.
For mouse users, command-scroll would be the natural way to control this.
Extended appearance options
- Overrides for system light/dark theme
- Font name and size
UTF-16 csv character encoding
Currently the CSV parser expects single-byte encodings like ASCII or UTF-8, and doesn't support UTF-16. This makes files with this encoding unreadable.
File format detection
Based on a sample of the file, detect the file format automatically (encoding, delimiters, etc).
Improved tabbed mode
[User request]
While it's possible to show multiple documents in tabs, opening a new file always creates a new window and they need to be manually combined.
If the tab bar is visible, it would make sense that opening a new document opens a new tab, possibly with a separate command to open a document in a new window or tab as required.
Notes:
- ⌘T currently opens the font picker. It should open a new tab.
- It should be possible to open an empty window or tab with no file selected. The empty document shows the recent files list and a button to open the file picker.
- This empty window should be the default when the app is opened.
Remember file format
If the file format is customised, record the custom file format against a hash of the first row of the file.
Include an option to disable this record, and to clear the cache if requested.
Detect file changes
Detect if the underlying file has changed and re-index. Since we need to parse the file on the fly, any changes to the underlying file are likely to corrupt the parsing.
JSONL support
The current JSON support allows a column containing JSON to be expanded to show the structure of each JSON cell.
JSONL could be interpreted as a single column file containing JSON data, providing a quick way to preview JSONL files.
Further support for decomposing the JSON structure into columns might need additional synthetic column creation, but the basic view is already supported by customising the CSV delimiter to something other than comma.
Override default file format
Add an application setting to disable file format detection (when implemented) and override with a customised file format configuration.
Case-insensitive find and filter
Find and filter currently match case exactly. Add an option to ignore case, so searching for "london" also finds "London" and "LONDON".
Find and filter within one column
Limit a find or filter to a single column, e.g. show only rows where the country column is NZ, instead of matching the term in every column.
Jump to row and column
Go straight to a cell by its coordinates. As in CSView 1, clicking the row/column item in the status bar, or pressing a keyboard shortcut, opens a picker where you enter the row and column to jump to.
Dockable inspectors
- Side panel views for inspecting the current cell or row.
- List and customise column order.
- Column stats view
Cross-platform CSV model
Implement the CSV indexing, filtering and sorting model in a platform-neutral language (e.g. Rust) allowing it to be shared with Windows and Linux native versions of CSView, and potentially other applications.
Windows-native CSView 2.x build
Port CSView 2.x to Windows
CSView 2.x for Linux
Port CSView 2.x to Linux (GTK+?)
Read compressed CSVs
Directly open compressed CSVs and make them viewable.
Regular expression find and filter
Search and filter using regular expressions, for patterns a plain text search cannot express (e.g. codes of a given shape, or values matching one of several alternatives).
Contains / starts with / ends with / equals matching
Choose where the search term must appear in a cell: anywhere (as today), at the start, at the end, or as the whole value. Matching a whole value is the common case for IDs and codes.
Full preview of very large cells
Cells holding very large values (long text, embedded JSON, base64 data) are shown truncated in the grid. Add a way to view the whole value of such a cell, e.g. from the hover preview or an inspector.
Reopen closed files
A shortcut to reopen the most recently closed file or tab, working back through closed files in reverse order, the way a browser restores closed tabs.
Sort by multiple columns
Sort by more than one column at a time, for example by chromosome and then by position, or by country and then by city. Each column keeps its own direction, and rows that tie on the first column are ordered by the next.
Natural sort order
Sort text that contains numbers the way people read it, so chr2 comes before chr10 and file9.csv before file10.csv, instead of strict character order. Offered as an option alongside the existing text and number sorts.
Open genomics formats (VCF, BED, GFF and similar)
Open the tab-separated text files used in bioinformatics directly: VCF, BED, GFF3, GTF, SAM, MAF, PLINK output and plain .txt tables. That means opening files whatever their extension, hiding the metadata lines at the top (such as VCF's ## lines) and using the #CHROM line as the header, turning off quote handling so a stray " doesn't merge rows, and handling space-aligned columns. These files usually arrive gzipped, which is covered by "Read compressed CSVs". If you use CSView for genomics data, vote or comment with the files you open.
Export selected cells to a file
Save the current grid selection, including cells too large to copy safely, to a file. Write incrementally so the selection does not need to fit in memory. Preserve full cell values and the selected rows and columns. File formats and UI behavior need design.