JSON to CSV converter for contact exports and API responses
In short: Takes a JSON array, an API response with the records under data, results, items, contacts or similar (picked automatically or by path) or JSON Lines; nested objects become dot-path columns, lists of plain values are joined with ; and lists of objects get numbered columns up to a limit. Email columns are found for the next step. Limit: Records nested more than six levels deep aren't searched for the row array; pick the path instead.
Paste the JSON or upload the file. The tool finds the array of records, even inside data or results, and writes one CSV row per record: nested fields become columns such as company.name, tag lists are joined into one cell, and lists such as emails get numbered columns (emails.0.value). Download the CSV for Excel, Sheets or an importer.
Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. See pricing
Sample result
3 contacts from data.contacts, 10 columns, 3 email addresses.
- Rows
- 3
- Columns
- 10
- Email columns
- 2
What this means for you
Nested fields became columns you can open in Excel; the addresses are ready to check.
- Finds data, results, contacts
- Dot-path columns
- Tag lists joined
- Lists of objects numbered
- JSON
- CSV
- API export
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Also in: Português (Brasil) · Español
How do I check the addresses in a JSON export?
- Convert the export here and download the CSV.
- Upload it at /verify. Every address gets a live mailbox check, and valid, risky and invalid download as separate files. The first 100 email checks are free with a Google sign-in, no card.
- Use the valid file for the campaign or import.
How do I convert nested JSON to CSV?
- Paste the JSON or JSON Lines, or upload a .json or .jsonl file (up to 25 MB).
- Press Convert to CSV. The rows come from the largest array of objects; pick another path from the list if that's the wrong one.
- Choose how many numbered columns a list of objects gets; anything beyond stays as JSON in a .more column.
- Download the CSV.
Example
- You enter
- An API-style JSON response with
metaanddata.contactsholding 3 contacts, each with a nested name and company, an emails list and a tags list. - You get
- Rows taken from
data.contactsautomatically: 3 rows and 10 columns (id,name.first,name.last,emails.0.type,emails.0.value,tags,company.name...), tags joined asvip; webinar, Leo's second email inemails.1.value; 3 addresses found for the next step. - Limits
- Runs in your browser with no row cap; an uploaded file can be up to 25 MB.
How are nested fields and lists turned into columns?
Objects inside a record become dot-path columns: {"company": {"name": "Contoso"}} gives a company.name column. A list of plain values, such as tags, is joined into one cell with ; . A list of objects, such as several emails or phone numbers, gets numbered columns (emails.0.type, emails.0.value, emails.1.value) up to the limit you set, and whatever is left is kept as JSON text in emails.more so nothing is lost.
Columns appear in the order they're first seen, so a field that only some records have is added where it first turns up and left blank elsewhere. Numbers and true/false are written as text, exactly as in the JSON.
Where do JSON contact exports come from?
Most CRM, form and email platform APIs return JSON, usually wrapped: HubSpot under results, many others under data, items, contacts or members, with paging details beside them. The tool scores every array of objects in the document and picks the likely one, preferring those names. JSON Lines (one object per line, often .jsonl or .ndjson) is read too; it's what log exports and many bulk APIs produce.
Who uses this tool, and for what?
- Developers
- Turn an API response into a CSV a marketing colleague can open, without writing a script.
- Marketing ops
- Get a JSON export from a form or community platform into a spreadsheet and then an ESP.
- Analysts
- Flatten JSON Lines into columns for a quick look in Excel or Sheets.
What can’t this tool tell you?
- Records nested more than six levels deep aren't searched for the row array; pick the path instead.
- A list of objects longer than the limit keeps its extra items as JSON text, not columns.
- The whole file is held in browser memory while it converts, several times its size for a large file.
- It converts the data, not whether its addresses work. That needs a mailbox check.
Common questions
- My file has several pages of results. Can I combine them?
- Convert each page and join the CSVs with CSV merge, or paste the pages as JSON Lines.
- What if the JSON is invalid?
- You'll see the parser's error and position. A trailing comma or a single-quoted string is the usual cause.
- Can it convert CSV back to JSON?
- Not this tool.
- Is my data uploaded?
- No. It's converted in your browser.
A tidy list can still be full of dead addresses.
Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.
- Upload the cleaned file as it is: CSVs up to 100,000 rows
- A real SMTP mailbox check on every row, with catch-all detection
- Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime
Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.