๐Ÿ“‹ JSON to CSV

Last updated: January 16, 2026

JSON to CSV Converter

Flatten JSON data into CSV format for spreadsheet import. Handles nested objects by creating dotted column names and arrays by creating numbered columns.

How Flattening Works

Simple key-value pairs become columns directly. Nested objects use dot notation: {address: {city: "NYC"}} becomes column "address.city". Arrays are expanded into numbered columns or separate rows (configurable).

Configuration

  • Delimiter: Comma, semicolon, or tab
  • Flatten depth: How many nesting levels to flatten
  • Array handling: Expand to columns or repeat rows
  • Null handling: Empty string, "null", or "N/A"

Data Loss Considerations

CSV is flat, JSON is hierarchical. Some data structure is inevitably lost. Deeply nested objects may produce many columns. Complex arrays may not flatten cleanly. Always verify the output matches expectations.

Practical Tips

  • For deeply nested JSON, consider extracting specific fields first
  • Use the tool to quickly inspect JSON data in spreadsheet format
  • Export to CSV for sharing with non-technical stakeholders
  • Test with a small sample before converting large datasets

When Your Photo Data Lives in JSON and Your Spreadsheet Doesn't Speak That Language

If you've ever exported a batch of photos from Flickr's API, downloaded a Google Photos Takeout archive, or pulled image metadata from an e-commerce platform, you've almost certainly ended up staring at a pile of .json files wondering how to actually work with them. JSON is wonderful for machines and miserable for humans trying to sort, filter, or hand off data to a client. That's exactly the gap a JSON to CSV converter fills โ€” but how you use it matters enormously, especially when your JSON carries the kind of nested, irregular structure that photo and media data tends to produce.

This is a practical breakdown of the real scenarios where these tools shine, where they stumble, and what separates a smooth conversion from a broken table with merged cells and mystery columns.

5 Scenarios Where JSON to CSV Earns Its Place in a Photo Workflow

  1. Google Photos Takeout metadata triage

    When you export your library from Google Photos, every image gets a companion .json sidecar file. That file contains the original capture timestamp, GPS coordinates (latitude, longitude, altitude), any descriptions you added, and whether the photo was favorited. None of that is embedded in the image EXIF anymore โ€” it lives only in the JSON. Dropping these sidecar files through a JSON to CSV tool lets you produce a single spreadsheet mapping every filename to its GPS coordinates and original timestamp, which is invaluable before running tools like exiftool to write the data back. It gives you a visual audit layer: you can spot the 2009 vacation photos with missing coordinates before attempting any bulk EXIF write operation.

  2. Shutterstock or Getty API exports for licensing audits

    Stock photo platforms return image metadata as JSON when you query their APIs โ€” contributor ID, license type, image dimensions, purchase date, download count. For any kind of licensing audit or royalty reconciliation, you need that in a spreadsheet, not a JSON blob. The conversion is straightforward when the response is a flat array of image objects, but the moment each image object contains a nested categories array or a keywords array, naive converters choke and produce broken rows where those nested arrays get either silently dropped or jammed into a single cell as raw text.

  3. WooCommerce / Shopify product image catalogs

    E-commerce platforms store product image data as JSON, often with each product containing an array of image objects (thumbnail, full-size, alt-text, CDN URL). When a merchandising team needs to audit 3,000 SKUs for missing alt-text or broken image URLs, they need a flat CSV โ€” one row per image, with the parent product ID carried alongside. Tools that support "row node selection" let you target the images array specifically and pull the product ID as a parent field into every row, rather than having to join tables manually afterward in Excel.

  4. Instagram Insights and creator analytics exports

    Meta's Graph API returns post-level media analytics as JSON with nested impressions, reach, and engagement breakdowns per post. A content creator or social media manager wanting a week-over-week comparison in Google Sheets can't do anything with raw JSON. Converting it to CSV gives them the same data in a format where pivot tables and conditional formatting actually work. The key detail here: the timestamp fields come out of the API in ISO 8601 format (2026-06-10T14:33:00+0000), so look for converters that include a date reformatting option โ€” otherwise every date column needs manual parsing in Sheets afterward.

  5. Photography studio booking or job management systems

    Studio management tools like Tรกve, HoneyBook, or custom-built systems often expose job data via JSON exports โ€” client name, shoot date, location, package booked, deliverable filenames. When a photographer wants to reconcile delivered files against booked jobs at year's end, running the JSON export through a converter and opening it in Numbers or Excel is genuinely the fastest path. No code needed, no developer required.

The Nested JSON Problem โ€” and How to Not Get Burned

The biggest frustration with most JSON to CSV tools isn't the conversion itself โ€” it's how they handle nested arrays and objects. Photo and media JSON is almost never flat. A single image record might look like this:

{
  "id": "img_9821",
  "filename": "DSC_0094.jpg",
  "tags": ["landscape", "golden-hour", "35mm"],
  "location": { "lat": 27.1751, "lng": 78.0421, "city": "Agra" },
  "dimensions": { "width": 6000, "height": 4000 }
}

A basic converter will either crash on this, or flatten location into location.lat, location.lng, location.city columns (dot-path notation) while serializing the tags array as a raw JSON string stuffed into one cell. That might be fine for dimensions and location, but it's useless for tags if you need to filter by tag in a spreadsheet.

Better tools give you per-array rules: you can tell it to join the tags array with a pipe separator (landscape|golden-hour|35mm) so each value is readable in one cell, while fully expanding nested objects like location into their own columns. Datablist's converter does this well โ€” you select the specific node you want as your row basis, then set individual rules for each nested field.

Delimiter Choices Actually Matter (Especially for Geographic Data)

This sounds trivial but catches people constantly: if your photo metadata includes GPS coordinates like 27.1751, and you export a CSV using a semicolon delimiter for a French or German locale โ€” where commas are decimal separators โ€” the numbers survive. But if you export with a comma delimiter and then open it in a locale that uses commas as decimal separators, you can end up with latitude 27 in one column and 1751 in the next. Tab-separated (TSV) output sidesteps this completely and is worth choosing when coordinates or any decimal numbers are part of your data.

Three Things to Check Before You Convert

  • Does your JSON start with an array or an object? Most converters expect the root element to be an array ([{...}, {...}]). If your API response wraps the data โ€” like {"status": "ok", "results": [{...}]} โ€” you need a tool that lets you specify which key contains the actual records. Paste it in, look for a "row node" or "path" selector, and point it at results.
  • How large is the file? Browser-based tools vary wildly in what they can handle. Files above a few megabytes will hang or silently truncate output in weaker tools. If you're dealing with bulk photo exports (thousands of sidecar JSONs merged into one file), look for tools that explicitly advertise large file support with a preview-before-download option.
  • Is privacy a concern? GPS coordinates, client names, and unpublished shoot locations are sensitive. Tools that process everything locally in your browser โ€” without uploading to any server โ€” are meaningfully different from ones that send your file to a backend. The distinction is usually mentioned in the tool's description and is worth verifying before you paste a client's data.

The Output You Actually Want vs. What You Usually Get

The default output from most JSON to CSV tools is usable but rarely ideal for photo workflows. Here's what to adjust before downloading:

  • Turn on header row inclusion โ€” some tools output data-only by default, and a CSV without headers is harder to import into Lightroom catalog tools or spreadsheet apps.
  • If the JSON uses camelCase keys (captureDate, fileSize), those become your column headers verbatim. Spreadsheet users often prefer human-readable headers, but most converters don't auto-convert casing โ€” rename columns after import.
  • For any column that will be used as a date filter in Excel or Sheets, double-check the format after conversion. ISO timestamps often land as plain text strings, and Sheets won't recognize them as dates until you force-parse them with DATEVALUE() or a TEXT split.

What This Tool Cannot Do (And What To Reach For Instead)

A JSON to CSV converter does one thing: it restructures data. It does not read binary EXIF data out of actual image files โ€” for that you need exiftool or a dedicated metadata extraction tool. It also won't merge multiple JSON files into one CSV automatically; you'd need to concatenate your JSON arrays first (any JSON formatter can do that). And if your JSON is malformed โ€” a single missing bracket or unescaped quote โ€” the converter will fail with a parse error, so running your input through a JSON validator first saves a lot of head-scratching.

For straightforward use cases โ€” a flat array of image objects from an API, a single Google Takeout sidecar, a product catalog dump โ€” any of the major online converters handle the job in under ten seconds. The value shows up in edge cases: nested arrays, regional delimiter requirements, large files, privacy-sensitive data. Knowing which constraint applies to your specific export determines which tool to reach for, and how to configure it before you hit download.

FAQ

What JSON format is supported?
Array of objects where each object represents a row.
How are nested objects handled?
Nested objects are flattened using dot notation in column headers.
Disclaimer: This article is for general informational and educational purposes only and does not constitute professional, financial, medical, or legal advice. Results from any tool are estimates based on the inputs provided. Always verify important details and consult a qualified professional before making decisions.