All tools

Log Viewer

Filter and search JSON log files

Open NDJSON or plain log files to filter by level, field and text, sort by time and inspect each entry, without uploading.

How to use Log Viewer

  1. Paste logs, drop a file on the page, or use Open file. Try an example loads a sample.
  2. Toggle level chips to show only those levels; each chip shows how many entries have it.
  3. Narrow the list with Contains text, field filters such as user.id=3 path=/api (all must match), and a From / To time range.
  4. Click a row to expand it as pretty-printed JSON (or the full text of a multi-line entry), then use Export filtered NDJSON to download what matches.

How it works

Each line that starts with { and parses as a JSON object is a JSON entry. Its level is read from level, lvl, severity or loglevel (text, or numbers 10 to 60 as used by pino), its time from time, timestamp, ts, @timestamp and similar (ISO text, or epoch seconds or milliseconds) and its message from msg or message. Any other line is plain text: an ISO timestamp (with T or a space, . or , fractions) followed by an optional level such as INFO, [ERROR] or WARN:; a line that starts with a level alone is also understood. Indented lines with no timestamp are joined to the entry above, so stack traces stay together.

Field filters match flattened paths (user.name) exactly, ignoring case. Only the rows in view are drawn. Exported plain-text lines become {time, level, message} objects so the result is valid NDJSON.

Limits

  • Files up to 50 MB can be opened; larger ones are refused.
  • Logs are parsed on the page itself, so very large files can pause it briefly.
  • Nested JSON fields are searchable to 3 levels deep; arrays are matched as their JSON text.
  • The time range uses your local time zone and leaves out entries without a readable timestamp.
  • Level names beyond trace, debug, info, warn, error and fatal (and common aliases) are shown as “other”.

Privacy

Logs are read and filtered entirely in your browser; nothing is uploaded or stored. Logs often contain user data or tokens, so this tool has no share link. If you use Send to… elsewhere, text is passed through this tab’s session storage and removed as soon as the other tool reads it.

Frequently asked questions

Why is an entry’s level “other”?

No level field or level word was found, or its value isn’t one of the common names (trace, debug, info, warn/warning, error/err, fatal/critical).

How do I filter on a nested field?

Use a dotted path such as request.status=500. The Detected fields list shows the paths found in your logs.

Can I export plain-text logs?

Yes. Each text line is written as a JSON object with time, level and message, so the file is valid NDJSON.

More tools