Where CSV still wins
Finance, ads platforms, and legacy CRMs love CSV. It is human-editable, diffable in git if small, and opens in Excel. The pain starts with quoting, embedded commas, UTF-8 BOMs, and locale-specific decimal separators.
JSON is the lingua franca for web APIs and JavaScript analytics. Converting once at the boundary keeps your application code simple: arrays of objects with named fields instead of column index math.
For one-off exports under a few megabytes, browser-side conversion is often enough. For gigabyte logs, use streaming CLI tools — but honestly most indie pipelines are not there yet.
Parsing options that matter
Header row: first line becomes keys. Without headers you get arrays of arrays — fine for math, awkward for `row.email`. Trim whitespace on headers so `" email "` does not become a property name.
Delimiter auto-detection helps TSV from European exports. Dynamic typing can turn `"00123"` into `123` — great for counts, dangerous for IDs and phone numbers. We disable typing when identifiers must stay strings.
The CSV to JSON tool on DroidXP uses Papa Parse locally: paste or upload, pick options, copy formatted JSON. Nothing hits our servers, which matters when the export has customer emails.
Fitting JSON into the pipeline
After conversion, validate with your API schema or a quick `JSON.parse` in Node. Trailing blank lines in CSV often become empty objects — filter them before ingest.
Store canonical JSON in object storage if repeat transforms are expensive; treat CSV as ephemeral input. Version the export format when vendors add columns — your ingest should ignore unknown fields safely.
For scheduled jobs, script the same options you picked in the browser tool so dev and prod behave identically.
Privacy and hygiene
Redact columns you do not need before conversion. Smaller JSON, smaller risk surface. Aggregates belong in the warehouse, not in a frontend bundle.
If you must share samples externally, synthetic data beats blurring real rows. Combine CSV conversion with fake data generators for demos.
Document delimiter and encoding assumptions in your README so the next person does not “fix” parsing by hand in Vim at 11pm.