Skip to content
JustDevTools
  • JSON formatter and validator
    Format, minify and validate JSON, with the exact line and column of any syntax error.
  • JWT decoder
    Read a JWT's header and payload, with issued-at and expiry times shown as real dates.
  • Base64 encoder and decoder
    Encode and decode Base64 and Base64URL, with full Unicode support.
  • JSON to TypeScript, Zod and Java
    Paste a JSON response and get TypeScript interfaces, a Zod schema or Java classes with Jackson annotations.
  • YAML to JSON converter
    Convert YAML to JSON and JSON to YAML, with the exact line of any syntax error. Handles multi-document files.
  • Regex tester
    Test JavaScript regular expressions with live match highlighting, capture groups and replace preview.
  • URL encoder and decoder
    Percent-encode and decode URLs and query values, and break a URL into its parts and parameters.
  • Unix timestamp converter
    Convert Unix timestamps in seconds or milliseconds to dates, and dates back to timestamps.
  • Cron expression explainer
    See what a cron expression means in plain English, what each field does and the next times it will run.
  • JSON to CSV converter
    Turn a JSON array into CSV for Excel or Google Sheets, or a CSV file into JSON. Nested objects become columns.
  • UUID generator and inspector
    Generate UUID v4 and time-ordered v7 in bulk, or paste a UUID to see its version and timestamp.
  • Text diff checker
    Compare two texts line by line and see exactly what was added, removed or changed.
  • Hash and HMAC generator
    SHA-256, SHA-1, SHA-384 and SHA-512 hashes and HMAC signatures of text, in hex or Base64.
  • Markdown previewer
    Write Markdown on the left and see it rendered live on the right, with GitHub-style tables and task lists.

JSON to CSV converter

Turn a JSON array into CSV for Excel or Google Sheets, or a CSV file into JSON. Nested objects become columns.

Runs locally. Nothing you paste leaves this tab.

3 rows, 6 columns.

CSV

id,name,email,address.city,address.zip,active
1,Ada Lovelace,[email protected],London,N1 9GU,true
2,Grace Hopper,[email protected],Arlington,22201,false
3,Asha Rao,[email protected],"Pune, MH",411001,true

Convert JSON to CSV and back

Paste a JSON array on the left and get CSV you can open in Excel, Google Sheets or Numbers. Switch the direction to turn a CSV export into JSON for an API, a test fixture or a database seed. Swap feeds the result back in.

How nested JSON becomes columns

CSV is flat: one row per record, one value per cell. Nested objects are flattened into dotted column names, so address.city becomes its own column. Arrays are kept as JSON text in a single cell, so no data is lost. When converting back, “Nest dotted columns” rebuilds the nested objects.

[{ "name": "Ada", "address": { "city": "London" }, "tags": ["admin", "dev"] }]

name,address.city,tags
Ada,London,"[""admin"",""dev""]"

Records don't need the same keys. Every key that appears anywhere becomes a column, in the order it is first seen, and missing values are left empty.

Commas, quotes and line breaks

A value that contains the delimiter, a double quote or a line break is wrapped in double quotes, and any double quote inside it is doubled (" becomes ""). This is the RFC 4180 standard, which every spreadsheet understands.

Comma, semicolon or tab?

Use a comma for most tools. In countries that write decimals with a comma, such as Germany and France, Excel expects semicolons. Tab-separated values paste straight into a spreadsheet.

Spreadsheet formula protection

A cell that starts with =, +, - or @ is treated as a formula when the file is opened in a spreadsheet. If the data came from users, that can run malicious formulas, a problem known as CSV injection. With protection on, those cells start with a single quote so they are shown as text. Turn it off when you need the values exactly as they are.

Numbers that change

With type detection on, 42 becomes a number and true a boolean. Turn it off for codes with leading zeros, such as ZIP codes and phone numbers (007 would become 7), and for IDs longer than 15 digits, which JavaScript numbers can't store exactly.