Big Log Explorer

Filter, search, and graph 500 MB+ log files locally. No data is uploaded.

ZERO UPLOAD · ALL LOCAL
  1. Drop a .log or .jsonl file onto the drop zone, or click to browse. Files up to 500 MB and beyond are supported.
  2. The tool indexes the file locally using a Web Worker and IndexedDB. A progress bar shows lines indexed and estimated time remaining.
  3. Use the search box and level pills (ALL / ERROR / WARN / INFO / DEBUG) to filter the log viewer.
  4. Drag on the time-series chart to narrow results to a specific time window. Click outside the selection to clear it.
  5. Use the Filter button in the Patterns panel to filter the log viewer to lines matching that template. Click Clear to remove the filter.

What this page covers

  • Timestamp fields read timestamp, time, ts, @timestamp, or datetime (first match wins)
  • Severity fields read level, severity, or lvl
  • Message fields read message, msg, or body

What to look for

  • 7, fixed order
  • mapped to error
  • mapped to warn
  • mapped to info

What this page covers

  • Fields Combined adds over Common the quoted referer and the quoted user agent
  • Level source the HTTP status code only, never the referer or user agent

What this page covers

  • Zone designators read Z for UTC, or an explicit offset such as +02:00 or -0700
  • Level normalization fatal/critical to error, anything starting with warn to warn, trace/verbose to debug
  • Default level info, when no bracketed or bare severity follows the timestamp

What to look for

  • 8, numbered 0 (emergency) to 7 (debug)
  • facility × 8 + severity
  • not parsed, loads as raw text

What to look for

  • mapped to error
  • mapped to warn
  • mapped to info
  • not parsed, loads as raw text

What this page covers

  • Access log nicknames common (CLF) and combined (CLF plus referer and user agent)
  • Apache error log weekday-first timestamp, not parsed, loads as raw text
  • PHP error log day-month-year bracket, timestamp is parsed and charted

What this page covers

  • Folds into ERROR fatal, crit, critical, or anything beginning with err
  • Folds into WARN anything beginning with warn
  • Folds into DEBUG debug, trace, or verbose
  • Unmatched values fall into an other bucket, kept out of the four severity pills

Input (Log file)

Drop a log or JSONL file here

or click to browse — processed entirely in your browser

JSONL ISO LOG CLF / NGINX
Indexing…
Search
Log level
Log volume over time

Output (Log lines)

TOP PATTERNS

How it works

Most log viewers load the entire file into memory before showing anything. That caps their practical file size at whatever RAM the browser will hand over. Big Log Explorer takes a different path. A Web Worker reads the file in 1 MB chunks via the browser's File API.1 Workers run scripts in background threads without interfering with the user interface.2 The parsed records are written to IndexedDB one batch at a time.3 The browser tab keeps responding while indexing runs in the background.

Once indexing completes, the Worker is terminated and the main thread opens a read-only connection to the same IndexedDB database. The log viewer uses virtual scrolling: only the rows currently on screen plus a small overscan buffer are in the DOM at any time. A spacer div sized to the total line count gives the scrollbar correct proportions across millions of lines.

Supported log formats

Format detection happens per line rather than per file, so a single log can freely mix timestamps, levels, and payloads from different emitters without confusing the parser. This lets you drop in a real production export that interleaves application logs, access logs, and the occasional raw exception stack trace. Three structured formats are recognised automatically; any line that matches none of them is kept as raw text so nothing disappears from the viewer.

  • JSON Lines (JSONL).4 Any line starting with { is parsed as JSON. Timestamp fields (timestamp, time, ts, @timestamp, datetime) and severity fields (level, severity, lvl) are extracted automatically. This covers Bunyan, Winston, Pino, Logstash, and most structured logging formats.
  • ISO 8601 log lines. Lines starting with a date-time string in ISO 8601 format are recognised.5 They may be optionally followed by a bracketed level like [ERROR]. This covers the default output of most application loggers including Log4j, syslog with ISO timestamps, and cloud provider log exports.
  • Common Log Format.6 The format used by Nginx access logs and many web-server access logs.7 HTTP status codes map to severity: 5xx is error, 4xx is warn, everything else is info.

How each format is recognised

The reader tries the formats in a fixed order for every line, checking the cheapest rule first to keep overhead negligible even across tens of millions of lines. JSON Lines wins if a line opens with a curly brace and parses as valid JSON; ISO 8601 wins if the leading characters encode a date and time; Common Log Format wins if the line matches the request-and-status shape used by web servers. Each branch pulls out the same three fields, a timestamp, a severity level, and a message, so the viewer can sort, filter, and chart lines regardless of which producer emitted them.

Choosing between overlapping formats is handled by specificity rather than by file extension, so a log that begins as plain Common Log Format but suddenly switches to JSONL mid-stream is indexed correctly without any manual configuration. The formats list is intentionally small: it covers the majority of operational logs while keeping the per-line detection fast enough to sustain line rates of hundreds of thousands per second inside a Worker thread.

Pattern clustering

The Patterns panel groups log lines by template so you can see, at a glance, which messages dominate a noisy file. Each message is normalised by replacing variable parts, including URLs, IP addresses, UUIDs, hex strings, file paths, floats, and integers, with placeholders such as <url> and <n>; the curly braces in JSON keys are replaced by a single placeholder too, so two otherwise identical lines with different IDs collapse into one cluster. Lines that produce the same normalised string are counted together.

How the patterns filter the viewer

The top 50 patterns by count are shown in the panel, each row carrying the template and the number of lines it matched. Clicking a row filters the log viewer to lines matching that template, and the filter combines with any active text search or level filter already in place, so you can isolate one recurring error across five-hundred-megabyte file without downloading anything. Updating the cluster counts after you apply a time window or a level pill is immediate because the data stays in IndexedDB and the Worker only re-scans the matching records.

Privacy

Log files regularly contain hostnames, user IDs, request paths, and authentication tokens, which is why the entire pipeline of file reading, line parsing, IndexedDB indexing, and filtering is designed to run inside your browser tab. No data reaches any server. A dedicated Web Worker reads and parses the file on a background thread without interfering with the user interface, so the heavy lifting never blocks the tab you are reading.2

Where the data is stored and when it disappears

The parsed records are written to an IndexedDB object store that lives only for the lifetime of the page, scoped to the current tab's origin. The IndexedDB database is deleted when you close or reload the tab, so nothing written during one session is carried into the next. The resulting database is local to your machine and is never uploaded, synchronised, or shared across origins, because IndexedDB follows a same-origin policy and the tool performs no network requests with file contents at any point.3

Time-chart navigation for incident triage

During an incident, narrowing down when a problem started is often the first step toward finding what caused it. The time-series chart at the top of the log viewer plots line counts per time bucket across the full span of the log file. A spike in error-level lines at a specific time stands out visually even before you read a single log entry. Dragging across the chart to select a time window immediately filters the log viewer to lines from that period, letting you read a few hundred lines in context rather than scrolling through millions. Clicking outside the highlighted region restores the full log.

Combining the time filter with a level filter and a text search lets you isolate a specific error class within a short window with a few clicks. For example: select the five-minute window around a spike, switch the level pill to ERROR, and search for a service name. The viewer then shows only error-level lines mentioning that service in those five minutes. This layered filtering does not require any query language, and the pattern panel updates in parallel to show which error templates dominate that window. Because the entire log is stored locally in IndexedDB, all filtering happens instantaneously regardless of file size, making iterative narrowing practical even for logs several hundred megabytes long.

Narrowed the Incident Down Checklist

  • Spike located on the time-series chart Drag-select the window around the spike before doing anything else — everything else filters within that selection.
  • Level pill switched to ERROR (or WARN) Combines with the time window so you only read lines at the severity that actually matters for the incident.
  • Text search narrowed to a service or component name Layering search on top of the time and level filters isolates one failing component out of a noisy file.
  • Pattern panel checked for the dominant template The top pattern by count in the filtered window is usually the root error worth reading in full.

Drop your own log file above and work through this checklist to narrow down an incident.

Sources
  1. 1.

    World Wide Web Consortium, "File API," w3.org, June 2026. https://www.w3.org/TR/FileAPI/

  2. 2.

    Mozilla Developer Network, "Using Web Workers," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

  3. 3.

    Mozilla Developer Network, "IndexedDB API," developer.mozilla.org, April 2025. https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

  4. 4.

    Wikipedia, "JSON streaming," en.wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/JSON_streaming

  5. 5.

    ISO, "ISO 8601-1:2019 - Date and time — Representations for information interchange — Part 1: Basic rules," iso.org, February 2019. https://www.iso.org/standard/70907.html

  6. 6.

    Wikipedia, "Common Log Format," en.wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/Common_Log_Format

  7. 7.

    Nginx, "Module ngx_http_log_module," nginx.org, accessed June 2026. https://nginx.org/en/docs/http/ngx_http_log_module.html

FAQ