CSV & Excel Viewer
Opening a quick CSV to check its structure shouldn't require launching Excel. This viewer handles both CSV and Excel files, renders them as sortable tables, and lets you filter or export subsets — all locally.
CSV & Excel Viewer
Sort, filter, and inspect spreadsheet data in your browser.
CSV vs Excel: understanding the difference
CSV (Comma-Separated Values) and Excel (.xlsx) files look similar when opened in a spreadsheet application, but they are fundamentally different formats. A CSV is plain text — every row is a line, every field is separated by a delimiter character, and there is no formatting, no formulas, no multiple sheets, and no embedded images. You can open a CSV in any text editor and read it raw. This simplicity makes CSV the universal interchange format for data: it comes out of databases, APIs, export functions in SaaS tools, and command-line utilities without any special library.
Excel's .xlsx format, by contrast, is a ZIP archive containing a collection of XML files that describe cell values, styles, formulas, named ranges, multiple sheets, charts, and much more. The added richness is powerful for human-authored spreadsheets but adds complexity for programmatic processing. When a database or API offers both CSV and Excel export, developers almost always reach for CSV because it is simpler to parse and has no ambiguity about encoding. Excel files are more common when the spreadsheet was authored by a person and is meant to be shared with other people rather than consumed by a program.
The viewer handles both. For CSV it uses PapaParse, a browser-native parser that correctly handles quoting, escaped characters, and multiple delimiter types. For Excel it uses SheetJS (also known as xlsx), which can read both modern .xlsx and the legacy binary .xls format. Neither library sends your file anywhere — all parsing happens in JavaScript running in your browser tab.
Quick comparison
| Property | CSV | Excel (.xlsx) |
|---|---|---|
| Format | Plain text | ZIP + XML |
| Multiple sheets | No | Yes |
| Formulas | No | Yes |
| Cell formatting | No | Yes |
| File size (same data) | Smaller | Larger |
| Openable in text editor | Yes | No |
| Universal compatibility | Very high | Requires library |
Delimiters, quoting, and encoding
Despite the name, CSV files do not always use a comma as the delimiter. European locales commonly use semicolons because the comma is used as a decimal separator — so a number like 1,234.56 would be split into two fields if a comma were the delimiter. Tab-delimited files (TSV) are widespread in bioinformatics and data exports from tools like MySQL. Pipe-delimited files appear in legacy financial and logistics systems. The viewer auto-detects the delimiter by sampling the first few lines and picking the character that appears most consistently across rows. If detection is wrong you can override it manually.
Quoting is the mechanism that allows a field to contain the delimiter character itself. The CSV specification (RFC 4180) says any field that contains a delimiter, a double-quote, or a line break must be enclosed in double-quote characters. A literal double-quote inside a quoted field is escaped by doubling it: "". So a field containing the value She said, "hello" would appear in a CSV file as "She said, ""hello""". PapaParse handles all of this correctly, including the edge cases that trip up naive split-on-comma parsers.
Character encoding is another frequent source of pain. The modern standard is UTF-8, which can represent any Unicode character including Chinese, Arabic, emoji, and accented European letters. However, many legacy tools — particularly older versions of Excel on Windows — save CSV files in Windows-1252 (also called CP1252 or Latin-1 extended), a single-byte encoding that handles Western European characters but breaks on anything outside that range. When you open a CP1252 file in a UTF-8 environment, accented characters like é, ü, or ñ appear as garbled sequences like é, ü, or ñ.
A related quirk is the UTF-8 BOM (Byte Order Mark): a three-byte sequence (EF BB BF) that Excel prepends to UTF-8 CSV files it generates on Windows, to signal the encoding to Windows software. The BOM is invisible in most editors but can appear as a stray character at the start of the first field if a parser doesn't strip it. The viewer handles BOM-prefixed files correctly.
Encoding tip
If you see garbled characters when you upload a file, the original was likely saved in a non-UTF-8 encoding. In Excel, use "Save As" and choose "CSV UTF-8 (comma delimited)" to re-encode. In Python, pd.read_csv('file.csv', encoding='latin-1') can read the original and .to_csv('out.csv', encoding='utf-8') converts it.
What it handles
The viewer uses PapaParse for CSV parsing (which handles quoted fields, escaped commas, and multiple delimiters correctly) and SheetJS for Excel files. Both libraries run entirely in the browser — your data never leaves your machine.
CSV files
Comma, tab, semicolon, or pipe-delimited. Auto-detects delimiter.
Excel .xlsx
Modern Excel format. Reads first sheet by default.
Excel .xls
Legacy Excel format via SheetJS compatibility layer.
Sort columns
Click any column header to sort ascending/descending.
Search rows
Live filter across all columns as you type.
Export to CSV
Download the current view (filtered rows) as a new CSV.
Classic CSV pitfalls
Even with a robust parser, data quality issues in the source file can cause confusing results. Knowing the most common pitfalls helps you spot them quickly when something looks wrong in the viewer.
Leading zeros silently dropped
Postal codes (US ZIP codes, UK postcodes), phone numbers, product SKUs, and employee IDs often start with zero. A ZIP code like 07030 has a meaningful leading zero. If you open a CSV in Excel and then re-save it, Excel will parse that field as a number and strip the leading zero, silently corrupting the data. Opening the original CSV directly in this viewer preserves it as a string — what you see is what was actually in the file.
The same applies to international bank account numbers (IBANs), product barcodes, and any identifier system that has a fixed width with leading zeros. When producing CSV from a database or spreadsheet, wrapping these fields in quotes forces Excel to treat them as text — but only if you import with the Text Import Wizard and specify those columns as Text format.
Dates mangled by locale
Dates are arguably the most common source of CSV data corruption. When you open a CSV in Excel, Excel applies the system locale's date format rules. A date stored as 04/05/2024 will be interpreted as April 5 in a US locale but as 4 May in a UK locale. Excel then reformats and stores the date using its own internal serial number, so when you re-save the CSV the date might come out as 05/04/2024 — the month and day swapped.
The safest date format for CSV interchange is ISO 8601: YYYY-MM-DD (for example, 2024-04-05). This format is unambiguous regardless of locale and sorts correctly as a string. The viewer displays dates exactly as they appear in the file without reformatting, so if you see "2024-04-05" in a column the viewer shows "2024-04-05" — no silent re-interpretation.
Embedded commas and line breaks in fields
A field that contains a comma must be quoted; otherwise the parser will split it into two fields. Addresses are the canonical example: "123 Main St, Suite 4" contains a comma, so it must appear in the CSV as "123 Main St, Suite 4". When the quoting is missing — because the file was generated by a buggy export script — the address splits across two columns and every subsequent column is shifted by one position, making the whole row malformed.
Line breaks inside fields are trickier. A multiline text field (like a note or description) must be enclosed in quotes and the line break is treated as part of the field value, not as a row separator. Naive parsers that split on newlines break when they encounter this pattern. PapaParse handles multi-line fields correctly because it tracks whether it is currently inside a quoted field before deciding whether a newline ends a row.
Inconsistent number of columns per row
A well-formed CSV has the same number of columns in every row (including the header). In practice, export bugs sometimes produce rows with fewer or more columns than the header. The viewer flags these rows visually so you can spot structural problems quickly. A common cause is a trailing delimiter at the end of each row — some tools output a,b,c, instead of a,b,c, creating a phantom empty fourth column. PapaParse's strict mode can warn about this, which helps identify the root cause in the generating system.
Column statistics
Click on a column header to see statistics for that column: count, unique values, most frequent value, min/max (for numeric columns), and mean/median. This is useful for quickly auditing data quality — spotting columns with too many nulls, unexpected string values in numeric fields, or outlier values.
The null/empty count is particularly valuable in data audits. A column that should be mandatory (like a customer ID or an order total) should have zero empty values. Seeing that 12% of rows have an empty value in that column immediately tells you there is a data collection or export problem that needs investigation. Similarly, the unique value count for a column that should be a foreign key (like a status field) tells you how many distinct statuses exist — if you expect five but see eight, someone has been entering free-form text instead of selecting from a dropdown.
Stats shown per column
Viewing and inspecting without installing software
One of the most practical reasons to use a browser-based CSV viewer is avoiding the need for installed software. On a locked-down work machine where you can't install tools, on a friend's computer, inside a virtual machine, or in a CI environment where you're debugging an export — if you have a browser you have a viewer. No installation, no version mismatch, no license required.
Another common scenario is receiving a file from a colleague and needing to quickly verify its structure before importing it into a system. Questions like "does this export have the right columns?", "are there any empty rows at the end?", "what delimiter does this use?" can all be answered in seconds by dropping the file into the viewer. You get a structured table view, the column count, the row count, and immediate visual feedback — much faster than opening a terminal and running head -5 file.csv or waiting for Excel to start.
Privacy is another consideration. When you upload a file to an online tool that processes data server-side, you are sending potentially sensitive business data to a third party. With this viewer, the file is read by JavaScript in your browser tab and never transmitted anywhere. There is no server, no storage, no logging of your data. When you close the tab the data is gone. This makes it safe to use with confidential customer data, financial records, or proprietary product information.
Handling large files
CSV files with 50,000+ rows are common in data work. Rendering all of them at once would freeze the browser. The viewer paginates automatically — 100 rows per page by default, configurable up to 500. Search and sort still operate across the full dataset, not just the current page.
What does "large" mean in practice? A 10,000-row CSV with 20 columns of typical data is around 2–5 MB and loads in under a second on a modern machine. A 200,000-row file can be 20–50 MB and may take 3–5 seconds to parse, but the viewer streams the parse results so you start seeing rows while the rest of the file is still being processed. Files above 500 MB will challenge browser memory limits; for those use a dedicated tool like DuckDB, Pandas, or csvkit on the command line.
The search function deserves a note on performance. When you type in the search box, the viewer filters against every column of every row in the full parsed dataset — not just the currently visible page. For files with hundreds of thousands of rows this filter runs in JavaScript and may take a few hundred milliseconds. The result is debounced so the filter only fires after you stop typing, keeping the UI responsive. Sort operations are also full-dataset: when you click a column header the entire dataset is re-sorted in memory, then the first page of the sorted result is displayed.
Performance note: The viewer is designed for inspection and lightweight filtering. For heavy data transformations — joins, aggregations, complex calculations — you're better served by a proper data tool like Pandas, DuckDB, or Excel.
Tips for clean CSV data
If you are generating CSV files — from a database export, a script, or an application — following a few conventions will prevent the pitfalls described above and make life easier for everyone who consumes the data.
Always include a header row
The first row should name every column. Without headers, downstream tools and humans have to guess what each column contains. Keep header names short, descriptive, and consistent in style — either always snake_case or always camelCase, not a mix.
Use ISO 8601 for all dates
YYYY-MM-DD (and YYYY-MM-DDTHH:MM:SSZ for timestamps with time zones) is the only date format that sorts correctly as a plain string, is unambiguous across locales, and is natively supported by most data tools.
Store numbers as numbers, not formatted strings
Avoid storing "1,234.56" (with a thousands comma) in a numeric column — write 1234.56 instead. Formatting belongs in the presentation layer, not in the data file. Dollar signs, percent signs, and parentheses for negatives are all presentation concerns.
Encode in UTF-8 without BOM
UTF-8 without BOM is the most portable encoding. It is the default for virtually all modern tools. If you must generate files that Excel for Windows will consume directly, UTF-8 with BOM is an acceptable compromise.
Avoid trailing delimiters
Some tools produce lines ending with a delimiter character, creating a phantom empty column. Generate exactly N delimiters for N+1 columns. Many CSV-generating libraries handle this correctly by default, but legacy code sometimes does not.
Quote fields that might contain special characters
When in doubt, quoting a field is always safe. Parsers handle quoted fields correctly whether or not they contain special characters. Under-quoting causes data corruption; over-quoting adds a few bytes but causes no problems.
One final tip: validate your CSV exports as part of your pipeline. Running a quick parse and row-count check after generating a CSV catches truncation bugs (where a large export silently stops partway through) and schema drift (where a column is added or removed). Dropping a sample of the output into this viewer is one of the fastest ways to sanity-check an export before it goes to a customer or downstream system.
Frequently Asked Questions
What Excel file formats are supported?
The viewer supports .xlsx and .xls (legacy) formats via the SheetJS library. It reads the first sheet by default, with an option to switch sheets if the file has multiple.
How does the viewer handle large CSV files?
Files with more than 1,000 rows are automatically paginated. You can navigate between pages and the search/filter still runs across all rows, not just the visible page.
Can I edit data and export it?
The current version is a viewer with read-only access. You can filter rows and export the filtered subset as a new CSV, but direct cell editing is not supported.
Why do leading zeros disappear when I open a CSV in Excel?
Excel auto-formats cells that look like numbers, stripping leading zeros from postal codes, phone numbers, or product codes. The browser viewer preserves the raw string value from the file, so no data is silently altered.
Does the viewer support non-English or special characters?
Yes. The viewer reads UTF-8 and UTF-8 BOM encoded files correctly. For legacy files saved in Windows-1252 or ISO-8859-1, characters may appear garbled — re-saving the original in UTF-8 before uploading fixes this.
Related Articles & Guides
How to View CSV & Excel Files Online for Free
Spreadsheet files are everywhere. Data exports from databases, reports from business tools, API downloads,…
Read guide →ArticleCSV & Excel Viewer: Open Spreadsheets in Your Browser
Upload CSV or Excel files and view them as a sortable, filterable table — no Excel needed.
Read guide →BlogJSON vs CSV vs YAML: Which Format Should You Use?
Every developer reaches a point in a project where they have to make a decision that feels small but has…
Read guide →