Modern services log as JSON Lines: one compact JSON object per line, stamped with a timestamp, a level, and a service name. They are machine-perfect and hopeless to read by eye — a wall of keys and colons where the actual error is one nested object deep. JSON Log Parser reads those records and lays them out as a table, right in your browser, with no upload and no server round trip.
Paste a JSONL stream and every object becomes a row, with columns formed dynamically from the keys that actually appear in your data — you never define a schema up front. The parser scans your first record for a "level-ish" field (level, severity, lvl, log_level, logLevel or levelname, checked in that priority order across every record so the most common convention wins even if the first line happens to use a different key), then colors that column with ERROR / WARN / INFO / DEBUG badges so the eye is drawn straight to failures. Nested objects and arrays stay inspectable as compact inline JSON in their cell instead of being flattened away or stringified beyond recognition, invalid lines are separated into their own panel with line numbers instead of being silently dropped or crashing the whole parse, and a live filter box instantly narrows tens of thousands of lines down to the one request or event you actually care about — it matches against the full JSON of each record, so you can search on a value, a key name, or a level in one box.
When the shape of a document matters more than a set of rows — a config file, an API response body, a single webhook payload — flip to Single document mode instead. It pretty-prints one JSON value with syntax coloring for strings, keys, numbers, booleans and null, plus a quick type summary (object, array, or primitive) and a list of the top-level keys so you can see the document’s shape at a glance without scrolling through it line by line.
This tool is aimed at the everyday grind of debugging structured logs: pasting a chunk of output from kubectl logs, a CloudWatch export, or a local dev server, and needing to find the one ERROR among thousands of INFO lines without writing a jq pipeline first. Everything runs client-side — no data is uploaded, no network request is made — and when you’re done you can copy the table as CSV, download CSV or JSON, or print it for a record.