GrepBoardLog

Drop log files anywhere

Files, whole folders and .gz archives. Or press Ctrl+V to paste text.

Log analyzer that runs in your browser

Drop an access log, an error log or an HAProxy log onto this page, or paste a few lines. You get status codes, where the errors are, top clients and paths, latency percentiles, a per-minute timeline and a short "look first" list.

The parsing and counting happen in your browser, in a Web Worker running a Rust core compiled to WebAssembly. The page is not allowed to send anything anywhere, and you can check that yourself in two minutes.

Zero upload, enforced by the browser

Most "private" online tools promise not to upload. This page cannot. It is served with this response header:

Content-Security-Policy: default-src 'none'; connect-src 'none'; โ€ฆ

connect-src 'none' tells the browser to refuse every fetch, XHR, WebSocket, EventSource and sendBeacon call made by the page, to any host, including our own. default-src 'none' closes everything not explicitly allowed, and images may only come from the page itself or local data:/blob: URLs, so an image beacon to another host is blocked too. There is no analytics script and no ad script on log.grepboard.com.

How to verify it in DevTools

  1. Open DevTools (F12) and go to the Network tab. Tick "Preserve log".
  2. Reload the page. You will see the HTML, one CSS file, the app script, the worker with the analysis core, fonts and the favicon โ€” all from log.grepboard.com.
  3. Click the document request and look at Response Headers: the content-security-policy line is there.
  4. Clear the list, then drop a log file. The list stays empty: analysis creates no request, and every font the page uses was already loaded before you opened the log.
  5. For a harder test, set the throttling menu to "Offline" and drop another file. It still works.

The full list of directives and what they do not cover is on the privacy page.

Supported log formats

LogWhat is readGuide
nginx access logcombined, plus $request_time and $upstream_response_time appended at the endnginx logs
nginx error logtime, level, pid, connection id, message, client, upstreamnginx logs
Apache access logcommon, combined, with %D (microseconds) or %T (seconds) at the endApache logs
Apache error log2.4 format: time, module:level, pid/tid, client, AH code, messageApache logs
HAProxy HTTP logoption httplog: timers TR/Tw/Tc/Tr/Ta, termination state, connection counters, queuesHAProxy logs
JSON lines, key=valueone object or one set of pairs per line; fields become columnsCustom logs

The board also reads MySQL slow query logs, sshd auth.log, syslog and kernel logs, PostgreSQL logs, AWS ALB and CloudFront access logs. Other layouts go through the Format tab, described on the custom logs page.

How to use it

  1. Drop files anywhere on the page: several files, a whole folder, or .gz archives. On a phone, use the button. Or press Ctrl+V to paste lines.
  2. The format is detected from the first lines. If it guessed wrong, change it in the Format menu.
  3. Read the board. Drag across the timeline to narrow the time range, type a regex in $ grep, or click a bar to filter. Every card and the raw lines follow the same filter.

To share findings, export a Markdown summary, a CSV of a card or a PNG of the board. Exports contain counts, never the raw lines.

The shell command behind every number

Each card shows a one-liner that produces the same number on the server, so you can check the board or reuse the command next time. A few of them, for an nginx combined log:

  • Status code distribution

    awk '{print $9}' access.log | sort | uniq -c | sort -rn
  • Which paths return 5xx

    awk '$9 ~ /^5/ {print $7}' access.log | sort | uniq -c | sort -rn | head
  • Who sends the most requests

    cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head
  • Requests per minute (spot the spike)

    cut -d[ -f2 access.log | cut -d: -f1-3 | uniq -c
  • HAProxy termination states, most frequent first

    awk '{print $15}' haproxy.log | sort | uniq -c | sort -rn

The Shell tab runs pipelines like these against the loaded log, inside the browser: grep, awk, sort, uniq, wc, head, tail, cut, sed, tr.

FAQ

Is my log uploaded?

No. The page is served with Content-Security-Policy: connect-src 'none', so the browser blocks every network request the page could make after it has loaded. You can confirm it in the DevTools Network tab: analysing a file creates no request that carries data.

How big a file can it handle?

Files are streamed through a Web Worker, not loaded whole, and the board keeps a compact column index instead of the text. Logs of millions of lines work on a normal laptop. If memory runs short, it switches to a summary mode: approximate top lists and percentiles stay, raw lines and the Shell tab go away.

Which log formats are supported?

nginx access and error logs, Apache access logs (common, combined, with %D or %T) and Apache 2.4 error logs, HAProxy HTTP logs, MySQL slow query logs, sshd auth.log, syslog and kernel logs, PostgreSQL logs, AWS ALB and CloudFront access logs, JSON lines and key=value logs. Anything else line-based goes through the Format tab.

Can I use a custom log format?

Yes. The Format tab splits unknown lines into fields and lets you mark which field is the time, the status, the path or the latency. The result is a recipe saved in your browser that you can export as a JSON file for colleagues.

Does it work offline?

Once the page has loaded, yes. Nothing it does after that needs the network, so you can unplug the cable or set DevTools to Offline and keep working. There is no service worker: to use it on an offline machine, open the page while online and keep the tab open.

Is it free?

Yes. No sign-up, no limits, no ads and no analytics on log.grepboard.com.

Do I need to install anything?

No. A current browser with JavaScript and WebAssembly is enough: Chrome, Edge, Firefox or Safari.

Why show shell commands?

Because during an incident you often need the same number on the server, where the full log lives. The command also shows exactly how the number was computed, so you can trust it or argue with it.

๐Ÿ”’ Nothing leaves your browser.

Your logs are parsed and counted right here, on your machine.