Log Compare - Align & Diff Multiple Log Files by Timestamp
Open several log files side by side, scroll them in lockstep by timestamp, and filter to the lines that matter.
A full-screen log viewer for debugging distributed systems: drop in logs from different services and see what happened at the same moment everywhere.
Log Compare - Align & Diff Multiple Log Files by Timestamp
Open several log files side by side, scroll them in lockstep by timestamp, and filter to the lines that matter.
The viewer runs as its own full-screen app so every pixel goes to your logs.
Open Log Compare (full screen)Files are parsed entirely in your browser — nothing is uploaded.
- Timestamp-aligned scrolling: all opened logs move together to the same moment in time.
- Multiple files side by side — compare a client log against a server log against a proxy log.
- Keyword and regex filters per file to cut noise down to the relevant lines.
- Line highlighting and pinning to mark the evidence while you work through a timeline.
- Handles large files by parsing locally in the browser — no upload, no size quotas from a server.
- Free and open source (github.com/lubobill1990/log-compare).
Why compare logs aligned by timestamp
When a request touches three services and something goes wrong, the truth is spread across three log files. Reading them one at a time forces you to hold timestamps in your head, jumping between editors and losing the thread each time. Log Compare takes the opposite approach: open every relevant file at once, and the viewer aligns them on a shared timeline, so scrolling one log scrolls the others to the same instant.
The core interaction is timestamp-locked scrolling. Each file is parsed in your browser and every line's timestamp is indexed. As you move through the primary log, the other panes follow to the nearest line at or before that moment — the same technique engineers apply manually with two monitors and a lot of patience, done automatically. Clock skew between machines stays visible rather than hidden, which is itself diagnostic: if the database log claims an event fired before the request that caused it, you have learned something important about your NTP setup.
Filters make the alignment useful at scale. A verbose service can emit thousands of lines per second; a per-file keyword or regular-expression filter reduces each pane to the lines you care about — an error code, a request ID, a user ID — while alignment still works against the full timeline. Combining a request-ID filter across all panes turns a distributed trace into something you can read top to bottom.
Everything happens locally. Files are read with the browser's File API and never leave your machine, which matters when logs contain customer data, tokens, or internal hostnames that must not be pasted into a random online tool. It also means the practical size limit is your RAM, not an upload cap.
Typical uses: postmortems where you reconstruct a minute of chaos from five services; comparing a failing environment's log against a healthy one to spot where behavior diverges; following one request ID across client, gateway, and backend; and verifying that a fix changed the sequence of events rather than just the error message. The viewer is open source, so the parsing rules can be extended for custom timestamp formats.
Log Compare usage examples
Ways engineers use timestamp-aligned logs in practice.
| Scenario | How Log Compare helps | Outcome |
|---|---|---|
| API request fails intermittently across gateway and backend | Open both logs, filter by the request ID, scroll the gateway's error | The backend pane is already at the same moment: a connection-pool timeout 40 ms earlier. |
| Postmortem for a 3-minute outage across 4 services | Open all four logs, step through the outage window in lockstep | Event order across services becomes obvious, including which alarm was cause vs effect. |
| Staging works, production fails | Open the same operation's log from each environment side by side | The panes diverge at the exact line where production takes a different code path. |
| Suspected clock skew between hosts | Align on a known shared event (deploy marker, cron tick) | Skew shows as a constant offset between panes — quantify it before trusting any timeline. |
How to use Log Compare
- Click Open Log Compare — the viewer opens as a full-screen page.
- Drag and drop two or more log files (or use the file picker); each opens in its own pane.
- Scroll any pane: the others follow to the same timestamp automatically.
- Add a keyword or regex filter per pane to reduce noise — alignment still tracks the full timeline.
- Highlight or pin key lines as you reconstruct the sequence of events.
Log Compare FAQ
Are my log files uploaded anywhere?
No. Files are opened with the browser's File API and parsed locally in JavaScript. Nothing is transmitted, which makes the tool safe for logs containing customer data or secrets that must stay on your machine.
What timestamp formats are recognized?
Common formats work out of the box — ISO 8601 (2026-09-11T02:30:00.123Z), syslog-style dates, and epoch milliseconds appearing near the start of a line. Lines without a recognizable timestamp inherit the previous line's time, so stack traces stay attached to their log entry.
How large a file can it handle?
Parsing happens in memory, so the practical limit is your browser's RAM — hundreds of megabytes are typically fine on a desktop. For multi-gigabyte logs, pre-filter with grep or split by time window first, then load the slice you need.
Can I compare logs from machines with different clocks?
Yes — alignment uses each file's own timestamps, so a constant clock skew shows up as a visible offset between panes rather than being silently corrected. Align on a known shared event to measure the skew, then read the timeline with that offset in mind.
Is this open source?
Yes. Log Compare is developed at github.com/lubobill1990/log-compare under an open-source license; issues and pull requests for new timestamp formats or features are welcome.
Why does it open as a separate full-screen page?
Log analysis needs horizontal space — multiple panes of long lines plus filters. The viewer therefore runs outside the site's normal layout, using the entire window. Your session state stays in that tab; this landing page just documents and launches it.