Free tool
Converts CSV to JSON and back, entirely in your browser. Nothing is uploaded anywhere. Built by Imran Anwar, Principal Workday Integration Consultant, for quick one-off conversions of exported reports and lookup tables.
Why a mode toggle instead of true two-way live sync. A fully bidirectional editor — where typing in either pane instantly rewrites the other, live, on every keystroke — is fragile in practice: it fights your cursor position and risks silently discarding whatever you just typed the moment a keystroke makes the JSON or CSV briefly invalid mid-edit. Instead, one pane is always the live, editable source and the other is a read-only, always-in-sync computed result; the Mode switch above picks which direction is active. Flip it and the pane you were viewing becomes the new editable source, seeded with its current content, so you can go back and forth without losing anything.
CSV quoting (both directions). Fields are parsed with standard CSV quoting rules: a field containing a comma, a double quote, or a newline is wrapped in double quotes, and a literal double quote inside a quoted field is doubled (""). This is not a naive split(',') — commas and newlines inside quoted fields are handled correctly in both directions.
CSV → JSON. With First row is headers checked, the first CSV row becomes the JSON object keys and each following row becomes one object. Unchecked, columns are auto-numbered col1, col2, … and every row (including the first) becomes data. Field values are lightly type-inferred: a value that looks like a plain integer or decimal becomes a JSON number, true/false become JSON booleans, and everything else (including anything with leading zeros, currency symbols, or mixed formatting) stays a string.
JSON → CSV. The top level must be an array. An array of objects becomes a CSV with one header row — the union of every key seen, in first-seen order — and one data row per object; missing keys in a given object become empty cells. An array of arrays is written out row-for-row as-is. A nested object or array inside a cell is serialized to a compact JSON string in that cell rather than flattened into extra columns — there's no dotted-path flattening (e.g. address.city) in this tool.