Open application, server and JSON log files of hundreds of megabytes in your browser. Lines are colored by level, stack traces stay attached to their error, and you can filter by level, text, regex or a time range, jump between errors and follow a growing file like tail -f.
Last updated:
Open a log fileDrop a .log, .txt, .json or .jsonl file here (hundreds of MB are fine), paste log text, or follow a file that is still being written. Nothing is uploaded.
Timeline drag across the chart to filter a time range
Advertisement
Advertisement
How to use the Log File Viewer
Open a log: drop a .log, .txt or .jsonl file on the drop zone, press Open log file, or paste lines with Paste text. Three sample logs are built in.
Filter by level: click the level chips to hide or show ERROR, WARN, INFO and the rest, or press Errors only.
Search: type text in the filter box; turn on .* for regular expressions, Aa to match case, or Not to hide matching lines.
Narrow the time: drag across the timeline chart, or type a start and end time.
Inspect entries: click a line to see the whole entry, its stack trace or pretty-printed JSON; use Next error (or the E key) to jump between failures.
Follow live: press Start tail -f and pick a file to see new lines as your app writes them.
Status code (5xx error, 4xx warning); bracketed date with offset
Apache error log
[Thu Mar 12 14:32:05.1 2026] [core:error] [pid 812] AH00037
Bracketed [module:level]
Syslog / journald export
Mar 12 14:32:05 web1 sshd[812]: error: maximum auth attempts
Level word in the message; month and day (current year assumed)
Android logcat (threadtime)
03-12 14:32:05.123 1234 5678 E ActivityManager: ANR
Single letter V, D, I, W, E or F
Regex filters that save time
Turn on .* and try these patterns (they are JavaScript regular expressions):
Exception|Error: finds every exception, including ones logged at INFO level.
" 5\d\d shows only server errors in an access log; " (4\d\d) shows client errors.
took (\d{4,}) ms finds operations that took 1,000 ms or more.
req(uest)?Id[=:"]+abc123 follows a single request through a JSON or text log.
health|heartbeat|keepalive with Not turned on hides routine noise.
Keyboard shortcuts when the log list is focused: arrow keys move the selection, Enter opens the entry, Esc closes it, E jumps to the next error and Shift+E to the previous one.
Frequently asked questions
How large a log file can I open?
Files are read in 8 MB chunks and only the visible lines are drawn, so logs of several hundred megabytes and millions of lines open fine on a typical laptop. The practical limit is your browser's memory, roughly 1 to 1.5 GB of text. For bigger files, cut out the time window you need first, for example with tail -n or split.
Is my log uploaded to a server?
No. The file is read by JavaScript on your device and never leaves it, which matters because logs often contain IP addresses, user IDs, tokens or customer data. You can even disconnect from the internet after the page has loaded.
How does it detect log levels?
It looks for standard level words near the start of each entry (ERROR, WARN, INFO, DEBUG, TRACE, FATAL, CRITICAL, SEVERE and similar), key-value pairs such as level=error, bracketed forms like [warn], Android logcat and glog single-letter levels, and level fields in JSON logs, including pino and bunyan numbers (10 trace, 20 debug, 30 info, 40 warn, 50 error, 60 fatal). In access logs the HTTP status decides: 5xx is an error and 4xx a warning.
How does tail -f work in the browser?
In Chrome, Edge and Opera the File System Access API lets a page keep a handle to a file you pick. The viewer checks the file once a second and appends any new bytes, like tail -f on Linux. If the file shrinks (log rotation or truncation) it reloads it. Firefox and Safari do not support this API yet, so there you reopen the file to refresh.
Why are some lines grouped with the line above?
When most lines in a file start with a timestamp, any line without one (a stack frame, a 'Caused by:' line or a wrapped message) belongs to the previous entry. Grouping keeps a stack trace together with its error, so filtering for ERROR also shows the trace and a text search on the exception name shows the whole entry.
Which time zone are the timestamps in?
Timestamps with an explicit offset or Z (UTC) are converted to your local time. Timestamps without a zone, which most text logs use, are treated as already being in your local time. Syslog lines have no year, so the current year is assumed.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.