CSV Viewer
Inspect ordered CSV or TSV rows, preserve text, filter and export the current view
Data is processed in this browser without saving input drafts. Limits: 10,000 data rows, 200 columns, 200,000 cells; 32,767 UTF-16 code units per cell.
Pasted line endings follow textarea rules; upload UTF-8 to retain original carriage returns. All CSV values remain text, including leading zeros, header whitespace, repeated headers and physical blank records. Nonblank records must have equal width. Choose a delimiter explicitly when detection is ambiguous.
About this tool
CSV Viewer opens UTF-8 delimited text as an ordered table. Paste CSV or upload CSV, TSV or TXT, choose comma, semicolon, Tab or pipe, and confirm whether the first record is a header. Automatic detection accepts valid one-column files and selects a consistent multi-column delimiter when available; specify the delimiter for ambiguous data. Values remain strings, preserving leading zeros, long numeric IDs, whitespace, repeated labels, numeric headers and special names such as __proto__. Physical blank records are displayed with their source record number and remain blank lines on export. Malformed quoting and unequal nonblank record widths are rejected. Filter searches every source column, including hidden columns. Sorting is natural text order, not inferred numeric or date sorting. Copy creates TSV; download creates CSV. Both use selected columns in their original order and every matched row in the chosen sort order. Header-only input and zero matches retain the header; hiding every column disables export. Preview shows at most 200 rows or 2,500 cells, with 500 characters per cell, while export retains full accepted values. Limits: 10 MiB input, 10,000 data rows, 200 columns, 200,000 cells and 16 MiB output. No data is uploaded and no input draft is saved. Browser textareas normalize pasted line endings; upload a UTF-8 file when original carriage returns must be retained.
Scenario Recipes
Review a CSV export without changing ID spelling
Goal: Find a customer record and export only relevant fields.
- Paste id,region,note followed by 00123,APAC,first and 00456,EMEA,second. Read the table with a comma delimiter.
- Filter for APAC, hide the region column and confirm that 00123 is still shown. The filter continues to search the hidden region values.
- Copy filtered TSV or download filtered CSV. The result contains the id and note headers and the single matching record.
Result: A focused extract with source column order and complete text identifiers.
Check a header-only or zero-match result
Goal: Create a schema-only extract deliberately.
- Open a file containing only name,email, or filter a populated table for a value that has no matches.
- Keep at least one column selected. The row count becomes zero while the selected headers remain visible.
- Download CSV and inspect its first line. With the header option enabled, the file retains the selected header even with no data rows.
Result: A valid header-only CSV rather than an accidentally empty file.
Failure Clinic (Common Pitfalls)
Sorting does not match numeric or date order
Cause: The viewer compares text naturally and does not infer numeric, currency, locale or date types.
Fix: Use sorting for text inspection. Normalize a separate dataset or use a spreadsheet/database with an explicit type when numeric or chronological order matters.
Auto-detection chooses an unexpected delimiter
Cause: Text can be valid under several delimiters, especially single-column data or fields containing punctuation.
Fix: Select comma, semicolon, Tab or pipe explicitly and read again. Tab is one actual tab character; the two visible characters \t are not a delimiter.
An empty line disappears in another CSV program
Cause: Some readers skip physical empty records or treat them differently from a quoted empty field.
Fix: Inspect the source record labels and export. This viewer retains physical blanks as blank lines, one empty field as "", and all-empty multi-column records with delimiters.
The visible preview contains less text than the download
Cause: Rendering stops at 200 rows or 2,500 cells and 500 characters per cell to bound browser work.
Fix: Copy or download the full filtered result. It keeps accepted values up to the 16 MiB output limit; reduce the view if that limit is exceeded.
Production Snippets
Numeric and repeated headers stay in their source order
csv
10,2,1,__proto__,a,a
00123,second,third,own,left,right
# Column positions remain 1β6 even when names repeat.
# Hide positions 2 and 3, then export selected columns:
10,__proto__,a,a
00123,own,left,right
# A zero-match filtered export still contains the selected header.Frequently Asked Questions
Why are 00123 and long numbers still strings?
The viewer never infers CSV value types. This preserves source spelling; sorting uses natural text comparison and should not be treated as numeric or chronological validation.
What happens to repeated or numeric headers?
Headers retain their positions and exact labels. Values are stored in ordered arrays, so headers such as 10,2,1 or __proto__ cannot reorder or overwrite fields.
Does filtering search hidden columns?
Yes. Filtering searches every source column. Copy and download include only selected columns, in source order, and all matching rows in the chosen sort order.
What if no rows match or every column is hidden?
With a header, zero matches exports the selected headers only. A headerless zero-match view exports empty text. Select at least one column; hiding all columns disables copy and download.
Are blank rows silently removed?
No. Physical blank records, quoted empty values and whitespace-only values remain distinct. Nonblank records must match the table width; fix inconsistent records before reading.
Why is the visible table shorter than the export?
Rendering is limited to 200 rows or 2,500 cells and 500 characters per cell. CSV/TSV export includes complete selected values across all matching rows, up to 16 MiB.
Keep browsing