ParquetReader Logo

Run SQL on a JSON File Online — No Code, No Database, No Install

Run SQL on a JSON File Online — No Code, No Database, No Install

The problem with JSON files and SQL

You have a JSON file. Maybe it is an API response you saved, a data export from a SaaS tool, a log dump, or a dataset someone sent you. You need to find something in it. Count how many records match a condition. Group by a field. Check whether the data is complete. Find the outliers.

The typical options are frustrating. Opening a large JSON file in a text editor is useless beyond a few hundred lines. Python with pandas works but requires setting up an environment, and writing a script to flatten nested JSON into something queryable is never as quick as it should be. jq is powerful but the syntax is its own language and most people do not use it often enough to remember it. Loading the data into a database means defining a schema, importing, and cleaning up afterward.

There is a faster path. You can run full SQL against a JSON file directly in your browser, with no install, no local database, and no code. Upload the file, write the query, get the answer in seconds.

How it works in ParquetReader

Upload your JSON file at parquetreader.com. Within a few seconds you see the inferred schema with column names and types, plus a preview of the data in a flat table.

Your file is available as a table called dataset. Open the SQL editor, write a query, and run it. Results appear below the editor immediately.

The SQL engine handles JSON well. Arrays of objects are flattened into rows and columns automatically. Nested fields are accessible. Most real-world JSON exports from APIs, databases, and SaaS tools just work without any preprocessing.

The kinds of queries you can run

Anything you can write in standard SQL works here. Filtering, grouping, aggregating, window functions, subqueries, string operations, date arithmetic.

A few examples of queries that come up often when working with JSON data:

-- Count records by type
SELECT type, COUNT(*) as total
FROM dataset
GROUP BY type
ORDER BY total DESC
-- Find records where a field is missing or null
SELECT *
FROM dataset
WHERE email IS NULL OR email = ''
-- Aggregate by a category
SELECT category, SUM(amount) as total_amount, AVG(amount) as avg_amount
FROM dataset
GROUP BY category
ORDER BY total_amount DESC
LIMIT 10
-- Find duplicate entries
SELECT id, COUNT(*) as occurrences
FROM dataset
GROUP BY id
HAVING COUNT(*) > 1

These are the kinds of questions that take thirty seconds to answer with SQL and fifteen minutes to answer by scrolling through raw JSON in a text editor.

JSON and JSONL both work

ParquetReader supports both standard JSON files and JSONL (newline-delimited JSON). A standard JSON file is typically an array of objects. A JSONL file has one JSON object per line, which is common in logging systems, AI training datasets, and streaming exports.

You do not need to specify which format your file uses. The parser detects it automatically. Whether your file looks like [{"id": 1}, {"id": 2}] or has one object per line, it loads the same way and you query it the same way.

This is particularly useful for files exported from tools like BigQuery, Elasticsearch, or OpenAI fine-tuning datasets, which often use JSONL by default.

Pick the SQL dialect you are used to

ParquetReader lets you choose which SQL dialect you want to write your queries in. Supported dialects are BigQuery, Snowflake, Postgres, MySQL, SQLite, and DuckDB.

This matters when you are used to one specific syntax and do not want to remember which flavor has which function. If you normally work in BigQuery, pick BigQuery. If your team runs on Snowflake, pick Snowflake. Your query works with the functions and syntax quirks you already know.

For most simple queries the dialect choice does not matter much. Where it starts to matter is in date functions, string operations, and JSON-specific access syntax. Being able to write your usual JSON_EXTRACT or UNNEST without thinking about dialect translation saves real time.

Working with nested JSON

Real-world JSON is rarely flat. API responses have nested objects, arrays within arrays, and fields that vary from record to record. ParquetReader flattens the top-level structure into columns automatically, so most common JSON layouts are queryable immediately.

For deeply nested data, you can use SQL functions to access nested fields. Depending on the dialect you select, this might mean dot notation, JSON_EXTRACT, or bracket syntax. The important thing is that you do not need to write a Python script to reshape the data before you can ask a question about it.

If your JSON has arrays of objects inside each record, those nested arrays can often be unnested with SQL. This turns a single row with a list of items into multiple rows, one per item, which you can then filter and aggregate like any other table.

Working with large JSON files

JSON files over 100 MB are where text editors and most online viewers fail completely. ParquetReader handles files up to several hundred megabytes comfortably on most modern laptops. For files in the gigabyte range, performance depends on your machine and what your query is doing.

If you regularly work with very large JSON files, one option is to convert to Parquet first. Parquet is columnar and compressed, so queries only read the columns they need rather than scanning the entire file. A 500 MB JSON file might become a 30 MB Parquet file that queries significantly faster. See the JSON to Parquet converter for that workflow.

For files that are too large to upload, the self-hosted version of ParquetReader can connect directly to S3 or other object storage and query files without moving them. See the S3 integration guide for details.

Exporting your query results

Once you have a query result you are happy with, you can export it. CSV, JSON, and Parquet are all available. You are not limited to exporting the full original file. If your query returns 200 rows from a 2 million record JSON, you download those 200 rows.

This is useful when you need to extract a subset of an API response for someone else, clean a messy JSON export into a flat CSV for a spreadsheet, or convert filtered results into Parquet for a data pipeline. You use SQL to define exactly what you want and export precisely that.

The free tier lets you inspect the schema, preview rows, and test queries on the preview. Exporting the full results of a query requires a Day Pass or Pro subscription. The Day Pass is a one-time payment that unlocks full access for 24 hours. No recurring charge, no account required.

Common use cases

API response analysis. You saved a paginated API response as JSON and need to count, filter, or aggregate the results without writing a script.

Log file exploration. You have application logs in JSON or JSONL format and want to find errors, count events by type, or filter by time range.

Data export validation. A vendor or teammate sent you a JSON export and you need to verify the data is complete, check for nulls, or spot duplicates before importing it somewhere.

Quick format conversion. You have JSON but need CSV for a spreadsheet or Parquet for a data pipeline. Query, filter, and export in the format you need.

AI and ML dataset inspection. You have a JSONL training dataset and want to check label distributions, find missing fields, or sample specific categories.

Common questions

What JSON structures are supported?
Arrays of objects work best and are the most common format. JSONL files with one object per line are also fully supported. Single nested objects are parsed but may need SQL functions to access deeper fields.

What is the maximum file size?
There is no hard limit for most use cases. Files under 500 MB generally query without issues. For files in the gigabyte range, converting to Parquet first significantly improves query speed.

Does it handle JSONL files?
Yes. JSONL (newline-delimited JSON) is detected and parsed automatically. No configuration needed.

Which SQL dialects are supported?
You can choose between BigQuery, Snowflake, Postgres, MySQL, SQLite, and DuckDB. Pick the one that matches the syntax you are most comfortable with.

Can I export the results of my SQL query?
Yes, with a Day Pass or Pro subscription. The free tier lets you preview results but full result export requires unlocking access. Exports support CSV, JSON, and Parquet.

Can I query nested JSON fields?
Yes. Top-level fields are flattened into columns automatically. For deeper nesting, use SQL functions like JSON_EXTRACT or dot notation depending on the SQL dialect you select.

Related guides

Open ParquetReader and start querying your JSON now

Related guides