Back to Tools

JSON Log Viewer

Parse and view ndjson (Newline Delimited JSON) logs in a readable format.

Input Data

Read structured logs without squinting at braces

Many modern services write one JSON object per line, known as NDJSON or JSON Lines. It is easy for machines to parse and tiring for people to read. The JSON Log Viewer takes that raw text and lays each entry out as a table row, with the level, timestamp and message in their own columns and everything else collected on the right.

Viewing a log

  1. Paste your logs into Input Data, with one complete JSON object on each line. Click Sample to load two example entries, or Clear to start over.
  2. Click Process Now.
  3. Read the table with the columns Level, Timestamp, Message and Extra.
  4. Check the two counters, Valid JSON Lines and Invalid Lines, then use Copy or Download if you need the text.

How fields are recognised

Logging libraries name their fields differently, so the viewer looks for common variants. The level is taken from level, lvl or severity and defaults to INFO. The timestamp comes from timestamp, time or date. The message is read from message, msg or log. Any remaining properties, such as a status code or request ID, are shown as compact JSON in the Extra column. Level cells with ERR or FATAL in the name are shaded red, WARN is amber and everything else is blue.

When it helps

  • Checking output from a Node.js logger such as Pino or Winston configured for JSON.
  • Reading container logs that arrive as structured lines.
  • Comparing timestamps and error codes across a handful of entries during debugging.
  • Making a sample of structured logs presentable for a report or screenshot.

Things to watch for

Each line must be valid JSON by itself. A pretty-printed object spread over several lines will fail on every line, and those lines are simply counted as invalid and left out of the table, so watch the Invalid Lines number if rows seem to be missing. Plain-text prefixes before the JSON, as in a syslog line, also make a line invalid. Log values other than strings and numbers are rendered as text, and the timestamp is shown exactly as written, not converted to your time zone. The Download button saves the visible table as plain text rather than a JSON file. Parsing takes place in your browser from the text you paste.

Related Tools


Frequently Asked Questions

What input format does it expect?
NDJSON, meaning one complete JSON object per line. Blank lines are ignored. A single object formatted over many lines, or a JSON array, will not parse and the lines will be counted as invalid.
Which field names does it recognise?
For level it checks level, lvl and severity. For time it checks timestamp, time and date. For text it checks message, msg and log. Everything else is displayed in the Extra column as JSON.
Why are some of my log lines missing from the table?
Lines that are not valid JSON are skipped and only counted under Invalid Lines. Common causes are a text prefix before the brace, trailing commas, single quotes or objects broken across lines.
What do the row colours mean?
Levels containing ERR or FATAL are shown with a red background, levels containing WARN are amber, and any other level such as info or debug appears in blue text. The match ignores letter case.
Are timestamps converted to my local time?
No. The timestamp value is displayed exactly as it appears in the log entry. If your logs use UTC, they will remain in UTC, so convert them separately if you need local times.
Support Chat
We typically reply within minutes

Hello! 👋 Before we start, please tell us your name.