JSON, YAML and CSV converter
Paste your data and the result appears instantly. The format is detected for you, errors show the line, column and a snippet, and the tree helps you find the right path. Everything runs on your device.
Free, no sign-up
Input
Input up to 200 KB and settings are saved in this browser only.
Input settings
Result · YAML
Converting…
Output settings
For example: users[0].name, users[*].id, $.owner — the result shows only what matches.
How the converter works
Format detection
Text starting with { or [ is JSON. Rows with the same number of fields separated by commas, semicolons, tabs or | are CSV/TSV. Anything else is read as YAML. You can also pick the format yourself.
Parsing with exact error location
JSON is parsed by a dedicated RFC 8259 parser: an error shows the line, column, a snippet with a ^ marker and a plain explanation. YAML uses the yaml library (versions 1.2 and 1.1), and CSV follows RFC 4180 with quotes and line breaks inside fields.
Conversion
Nested objects become user.name and tags[0] columns in CSV and are rebuilt when reading. You can sort keys, change the indent, minify, escape non-ASCII or get TypeScript types from a sample.
Tree and filter
The tree shows the structure; clicking a key copies a path such as $.users[0].name. A path filter (users[*].id, $.owner) keeps only the matches in the result.
Standards and traps
JSON — RFC 8259; YAML — specifications 1.2.2 and 1.1; CSV — RFC 4180; TSV — tab-separated (quoted only when a value contains a tab or line break).
The most common YAML trap is the version gap. Kubernetes, Ansible and PyYAML often read YAML by 1.1 rules, where “no” is false and “0755” is octal. The tool reads YAML 1.2 by default and warns about each such value with its line number; YAML output quotes these strings.
no
- YAML 1.2
- "no"
- YAML 1.1
- false
yes
- YAML 1.2
- "yes"
- YAML 1.1
- true
on
- YAML 1.2
- "on"
- YAML 1.1
- true
off
- YAML 1.2
- "off"
- YAML 1.1
- false
0755
- YAML 1.2
- 755
- YAML 1.1
- 493
1:30
- YAML 1.2
- "1:30"
- YAML 1.1
- 90
2026-10-14
- YAML 1.2
- "2026-10-14"
- YAML 1.1
- "2026-10-14T00:00:00.000Z"
JSON
- File
- .json
- MIME
- application/json
- What it does
- RFC 8259; indent 2/4/tab, minify, sort, \uXXXX
YAML
- File
- .yaml
- MIME
- application/yaml
- What it does
- YAML 1.2; documents with ---, quotes for yes/no/on/off
CSV
- File
- .csv / .tsv
- MIME
- text/csv
- What it does
- RFC 4180; column paths, array strategies, formula protection
TypeScript
- File
- .ts
- MIME
- text/typescript
- What it does
- interface or type inferred from the data
Query string
- File
- .txt
- MIME
- text/plain
- What it does
- a[b]=1&t[0]=x, encoded with encodeURIComponent
empty
- Message
- The input is empty.
unexpected-end
- Message
- Unexpected end of data: a closing bracket, quote or value is missing.
unexpected-char
- Message
- Unexpected character: a value was expected here (a double-quoted string, number, true, false, null, object or array).
unterminated-string
- Message
- Unterminated string: no matching quote before the end of the line.
bad-escape
- Message
- Invalid escape sequence. JSON allows \" \\ \/ \b \f \n \r \t and \uXXXX.
control-char
- Message
- Control character inside a string: write tabs and line breaks as \t and \n.
bad-number
- Message
- Invalid number: JSON has no leading zeros, “+”, bare dots, NaN or Infinity.
trailing-comma
- Message
- Trailing comma before a closing bracket — not allowed in strict JSON.
comment
- Message
- Comments are not allowed in strict JSON.
single-quote
- Message
- JSON strings use double quotes.
unquoted-key
- Message
- Unquoted key: JSON keys are double-quoted strings.
expected-colon
- Message
- A colon is expected after the key.
expected-comma
- Message
- A comma or closing bracket is expected — a comma between items may be missing.
expected-key
- Message
- A double-quoted key is expected.
trailing-data
- Message
- Extra data after the value — a JSON document holds one top-level value.
too-deep
- Message
- Nesting is too deep (over 1,000 levels).
Limitations
- Relaxed JSON is not full JSON5: it accepts only comments, trailing commas, single-quoted strings and unquoted keys. Hex numbers, NaN and Infinity are still errors.
- Integers above 2^53 lose precision (that is how JavaScript numbers work) — the tool warns about each one. Integer-like keys (“10”, “2”) come first in objects — that is JavaScript property order.
- Duplicate keys: JSON keeps the last value with a warning; in YAML it is an error (the spec requires unique keys).
- In CSV an empty cell and null look the same; empty arrays create no columns in tags[0] mode — choose “JSON in a cell” to keep them. Keys containing a dot become nesting when read back.
- TypeScript types are inferred from the sample: values missing from the data are not in the type. YAML comments and source formatting are not preserved.
- Input up to 10 MB; up to 1 MB of the result is shown (copy or download for all of it), highlighting up to 100 KB.
Privacy
- Data is parsed in your browser, in a background thread of this page; neither input nor result is sent anywhere, and the page address does not change.
- Input up to 200 KB and settings are kept in this browser only (localStorage) so the draft survives a reload; larger input lives only in the tab’s memory. “Reset all” deletes the data.
- Analytics receives only the fact of a copy or download and the format pair (e.g. json → yaml) — never the content.
- The result reaches us only if you send a request yourself and keep the “Attach the result” box ticked — the form shows exactly what will be sent. Files and images are never sent with a request.
- The request summary holds only the formats, sizes, key and row counts, the error position and the number of warnings; the data itself, the output, key names and the filter path never go into it.
Related tools
All tools · 40
Image compressor (WebP/AVIF)Drop images in — WebP, AVIF or JPEG by quality or a target size in KB, a 1:1 before/after slider, srcset and <picture>, batch ZIP. All in the browser.
Link preview (Open Graph) checkerPaste HTML or fill in fields and see how a link looks in Telegram, WhatsApp, VK, Facebook, X, LinkedIn and Slack. Checks for og:image, text length and twitter:card, plus a ready <head> block.
Regex testerMatches and groups highlighted as you type, replace, a step-by-step breakdown of the pattern, a library of ready patterns and freeze protection.
Cron expression helperA cron expression ↔ plain language, the next runs in your time zone, a schedule builder and variants for Linux, Quartz, GitHub Actions and Kubernetes.
Base64, hashes, UUID and ULIDBase64/base64url, Base32, HEX, URL and HTML both ways, hashes of text and files of any size (SHA-256, SHA-3, BLAKE3, MD5, CRC-32), HMAC, checksum verification, generating and inspecting UUID v4/v7, ULID and NanoID.Moving data between systems?
We design the integration and exchange format and build imports and exports with checks. Scope and cost come after a brief.
- The first short conversation is free — we choose the format
- NDA — yours or ours
- Pricing after a brief and an agreed scope