Overview
Converts between JSON, CSV and YAML in both directions using the browser libraries PapaParse and yaml. Pick an input format and an output format, paste data, and the conversion runs automatically about 200 milliseconds after you stop typing. There is a swap button to reverse the direction, format-aware download buttons, and an inline error bar that reports the first parse failure.
How It Works
Select the input format tab (JSON, CSV, or YAML) and the output format tab; changing the input tab loads a matching sample. Paste your data in the left editor. After a short debounce the right editor shows the converted text, with a green Valid or red Parse error badge and an error message if parsing failed. Swap exchanges the formats and feeds the last successful output back in. Copy or download buttons produce the output as text or as a file with the right MIME type.
Step-by-Step Usage Guide
- Pick the input and output format tabs; a sample loads when you change the input format.
- Paste your data into the left editor and wait for the automatic conversion.
- Use Swap to reverse direction, feeding the output back as input.
- Copy the result or download it with the correct file extension and MIME type.
Technical Specifications & Standards
Every conversion passes through plain JavaScript values: the input is parsed to objects and arrays, then serialized to the target format, which is why JSON to YAML and back round-trips cleanly but CSV is lossy in a predictable way. On input, CSV parsing uses PapaParse with header mode and dynamic typing on, so a column of 1, 2, 3 arrives as numbers, not strings, and quoted values are your only way to force text. On output, non-array data is wrapped in a single-element array before PapaParse serializes it, and nested objects or arrays inside rows have no native CSV representation, so they reach the output flattened or stringified; treat CSV as a leaf-only format. YAML output is written with a long line width so strings are not folded mid-value. The 200-millisecond debounce keeps conversion from running on every keystroke, which matters when pasting thousands of rows. Error reporting is single-shot: the first parse error from the input parser is shown with its row or position, and the output panel is cleared rather than left showing stale data, so a red badge never coexists with old output.
Targeted Use Cases
- Turning an API's JSON response into CSV for a spreadsheet or a database import.
- Generating YAML config from JSON fixtures when migrating between tooling.
- Checking that a CSV export parses as real typed values with dynamic typing on.
- Quickly restructuring sample data while prototyping an import pipeline.
Notes & Gotchas
- Expect nesting to be lost through CSV; keep one flat level of keys per row.
- Quote cells you want as text, because dynamic typing converts numeric-looking values to numbers on CSV input.
- Fix the first reported parse error and re-check; the converter stops at the first failure.
- Download rather than copy for large outputs, since the file path preserves the exact bytes and MIME type.
Frequently Asked Questions
Is my data uploaded anywhere?
No. Parsing and serialization run in your browser with the PapaParse and yaml libraries bundled into the page. Nothing is transmitted, which the tool itself states.
Why did my numbers become strings or vice versa in CSV?
CSV input parsing uses dynamic typing, so 30 becomes the number 30 and a quoted value stays text. JSON and YAML preserve types natively; only the CSV leg has this behavior.
What happens to nested objects when converting JSON to CSV?
CSV has no nested structure. Rows are flattened or stringified by the serializer, so nested data loses structure. Flatten your objects before conversion if the exact column layout matters.
Why does the output disappear when I make a typo?
The converter clears the output whenever parsing fails and shows the first error instead. This prevents stale results from being mistaken for a successful conversion of the current input.