JSON
JSON Log Parser
Parse JSON logs and NDJSON line by line, unescape nested payloads, identify failed records, and copy normalized output locally.
- Parsing, line diagnostics, and copying run in the browser without sending content to the tool backend.
- Analytics records only tool, category, locale, and action; it never includes logs, output, or failed lines.
- Logs can contain tokens, cookies, emails, or identifiers. Mask sensitive data before sharing.
Extract JSON from one log line or parse NDJSON batches, unescape nested fields, and copy formatted JSON or normalized JSON Lines.
When to use
Use it when CloudWatch, Lambda, Docker, or API logs mix prefixes with escaped JSON, or when a file contains one JSON record per line.
Input
Paste up to 200,000 characters. Choose single or line-by-line mode, keep extraction on for prefixes, and enable nested parsing for escaped fields.
Output
Use formatted JSON for one object or a readable array and JSON Lines for one compact record per line. Partial failures expose only skipped line numbers.
- Paste one payload, NDJSON, or multiple log lines into the input field.
- Choose single or line-by-line mode and select the output format.
- Keep extraction enabled for prefixes and nested parsing for strings with internal JSON.
- Run the parser, inspect skipped line numbers, and copy only reviewed data.
- Debug a CloudWatch error: Turn escaped Lambda payloads into readable JSON so requestId, statusCode, message, and stack context are easier to inspect.
- Normalize NDJSON: Convert line-separated records into a readable array or keep JSON Lines for pipelines and .jsonl files.
- Triage a batch with failures: Keep valid records and locate truncated or non-JSON lines without sending log content to analytics.
- Truncated logs: When the line ends before closing quotes, braces, or brackets, the parser returns an error and the log must be captured completely.
- Partial failures: In line-by-line mode, invalid entries are omitted from copied output and their source numbers appear in a separate warning.
- Nested depth: Recursive traversal of JSON strings is capped at four levels to avoid indefinite parsing of artificial structures.
- Sensitive data: Logs can contain tokens, cookies, emails, or customer payloads. Mask those fields before sharing output.
- Parse, Format, and Validate JSON Logs and API Payloads
Parse JSON logs and NDJSON, inspect failed lines, validate the resulting payload, and generate TypeScript safely with a browser-local debugging workflow.
Extract a CloudWatch payload
Input: 2026-06-25T10:00:00Z INFO {\"level\":\"error\",\"requestId\":\"abc\"}
Output: Formatted JSON with level and requestId, without the log prefix.
Parse multiple log lines
Input: Line-by-line mode: two valid JSON records and one truncated line
Output: An array with both valid records and a warning naming the skipped source line.
Normalize NDJSON
Input: Line-by-line mode; JSON Lines output
Output: One compact JSON object per line, ready to copy into a .jsonl file.
How do I parse multiple JSON log lines?
Choose line-by-line mode and paste NDJSON or logs with one payload per line. Empty lines are ignored and every non-empty line is processed independently.
What is the difference between single and line-by-line mode?
Single payload preserves the original workflow for one object, array, or full log line. Line by line treats each record independently and collects valid results.
When should I use formatted JSON or JSON Lines?
Formatted JSON keeps one payload or creates a readable array for batches. JSON Lines writes one compact record per line for NDJSON files and pipelines.
What happens when one line contains invalid JSON?
In line-by-line mode, valid records remain in the output and a warning lists only skipped line numbers. If every line fails, the tool returns an error.
Does it parse escaped JSON inside message or payload fields?
Yes. With nested parsing enabled, strings containing valid objects or arrays are converted recursively, with traversal capped at four levels.
What is the parser input limit?
Each run accepts up to 200,000 characters. The limit keeps browser processing explicit and reviewable; split larger files before pasting them.
Are my logs sent to a server?
No. Parsing and copying run in the browser, and analytics receives only the tool identifier, never log content or failed lines.