# IndieCSV

> Inspect one CSV for delimiter, quoting, and uneven rows, then preview repairs and export CSV or JSON locally.

Inspect one CSV. Preview every repair. Keep your data local.

The canonical page is https://indiecsv.com/.

## Use the tool

Open [IndieCSV](https://indiecsv.com/) to complete the job. The questions below describe the supported input, result, and limits. Every answer names its source next to it.

Source: [Your CSV, parsed locally with Papa Parse](https://www.papaparse.com/docs).

## Questions and limits

### How do I find out which delimiter a CSV file uses?

Open the file in IndieCSV. It tries comma, semicolon, tab, and pipe on the first hundred records and picks the one that splits them into the most consistent columns. The result names that guess, and marks it uncertain when two candidates tie, which happens with a one column file. Override the guess in the delimiter control when you know better. A German or French export often uses a semicolon, because the comma is the decimal mark there.

### What does an uneven row mean in a CSV?

The record has a different number of fields from the first record. A stray delimiter inside an unquoted value, a missing trailing column, or a line break inside a cell that was never quoted are the usual causes. IndieCSV reports the record number and both counts, and removes nothing.

The pad repair adds empty fields up to the widest record so every row has the same shape. It cannot know which column the missing value belonged to.

### Why does the export say fix the quoting first?

A quote character opened a field and never closed it, or closed it in the wrong place, so the parser cannot tell where that field ends. Every value after it is suspect. IndieCSV blocks CSV and JSON export on that kind of error rather than guess. Fix the original text, usually by doubling the inner quote as `""` or closing the field, then inspect again.

A bare quote inside an unquoted field is milder: it is flagged, kept as text, and quoted on export.

### Why is a cell that starts with = or + flagged?

A spreadsheet can read a cell that starts with `=`, `+`, `-`, or `@` as a formula and run it when the file opens, which is the [CSV injection](https://owasp.org/www-community/attacks/CSV_Injection) attack. IndieCSV never evaluates anything; it only flags the cell. The optional repair prefixes such cells with an apostrophe so a spreadsheet shows them as text. That changes the value, so the preview lists every changed cell, and it is a mitigation, not a guarantee.

### Why do leading zeros disappear when I open a CSV in Excel?

Because the spreadsheet guesses that `001` is the number one. The CSV itself still holds the zeros. IndieCSV keeps every cell as a string, so identifiers, postal codes, and phone numbers show exactly as written, and the export quotes every field. Excel may still convert values when you double-click the file. Import it through the text import path instead and set those columns to Text.

### Can IndieCSV convert CSV to JSON with the headers as keys?

No, on purpose. The JSON export is an array of row arrays, and the first record is in it like any other. Keyed objects would let a duplicated header overwrite a column silently, and IndieCSV keeps duplicate headers instead of dropping them. Every value stays a string, so `001` stays `"001"`. Map the rows to objects in your own code, where you can decide what a repeated header means.

## Promises

- The core is free: no account, no card, no premium plan, no upgrade nag, no hidden paywall.
- Private lookup activity is never published.
- Analytics is currently off. Private lookup activity is never published or sent to a tracker. No lookup history becomes public inventory.

## More

- [Notes](https://indiecsv.com/blog.md): posts by the maker, newest first
- [More tools](https://indiecsv.com/tools.md): the other tools by turushan
- [security.txt](https://indiecsv.com/.well-known/security.txt): how to report a vulnerability

Made by turushan, https://twitter.com/turushan.
