Paste several logs, name each one, and get a single sorted timeline with source labels, gaps between lines and a filter by text or level.
To merge log files by timestamp, read the time at the start of every line, convert it to one clock (UTC) and sort all lines from all files by it, which is what this page does for up to 8 pasted logs or files. Worked example with the sample that opens on the page: an application log has an error at 2026-10-10T20:55:37.002Z, an nginx log has a 500 response at [10/Oct/2026:13:55:37 -0700] and a syslog has an out-of-memory kill at Oct 10 20:55:37. After conversion the 500 and the kill both sit at 20:55:37.000 and the application error follows 2 ms later, so the timeline reads: the request failed, the kernel killed the process, the app reported it. Sources are merged with a k-way merge of runs that never go back in time, so a log whose clock jumps backwards is still ordered correctly. Lines with the same time keep the order of the sources, then of the lines.
These formats are recognised near the start of a line: ISO 8601 and RFC 3339 with Z or an offset such as +05:30 or -0700; the same with a space and a comma before the milliseconds, as log4j and Python write them; the 2026/10/10 20:55:37 form of nginx error logs; the Apache and nginx access log form [10/Oct/2026:13:55:36 -0700]; syslog stamps such as Oct 10 20:55:37, with an optional <34> priority prefix; and Unix epoch seconds or milliseconds, either at the start of the line or in a ts=, time= or JSON timestamp field. A stamp with a zone is converted exactly. A stamp without one, such as 2026-10-10 20:55:37, is read with the fixed UTC offset you choose for that source, so a server in India and one in London can be merged. Syslog lines carry no year, so the page uses the year field, which defaults to this year. When December is followed by January in one source, the year steps forward.
A line that has no timestamp belongs to the line above it. That keeps a Java or Python stack trace, the lines after Caused by and the lines of a Traceback together with the error that started them, and they move as one block. Lines before the first timestamp of a source form their own block placed with that first stamped line. The level is read from a word such as ERROR, WARN, INFO or DEBUG, or from level= or a JSON level field, near the start of the line; lines without one count as No level. The delta shown under each time is the time since the previous line in the list, after filtering. Any delta above the limit you set (5 seconds by default) is marked as a gap, and the Jump to a gap buttons open the list two lines before it. Export the merged text or a CSV with time, source, delta in milliseconds, level, line and continuation.
The page needs a date in every timestamp, so lines that only show a time, such as 20:55:37, are not read as timestamps; in a source with no other timestamps they are counted as left out. Free-form dates like 10/10/2026 8:55 PM are not read, because day-first and month-first cannot be told apart. The offset is fixed for the whole log: it does not follow a daylight-saving change, so split a log that crosses one and give each part its own offset. A stamp with an impossible offset such as +25:00 is not read as a timestamp. Sorting uses the clocks inside the logs: if two machines disagree by a few seconds, so will the timeline. Limits keep the tab responsive: 8 sources, 5,000,000 characters in total, 200,000 timestamped lines, 4,000 characters per line and files up to 5 MB each in UTF-8. The table shows 200 lines at a time with a button for more, while Copy and Download include every line that matches the filters. Nothing is stored and no log text is sent anywhere.
Paste each log into its own box, or drop the files on the page, and the lines are sorted by the time at their start. A 10 line sample from three sources opens ready: an app log, an nginx access log and a syslog end up as one timeline in UTC.
Stamps with an offset such as +05:30 or Z are converted exactly. For stamps with no zone, pick the UTC offset of that source in its Fixed UTC offset box, for example UTC+05:30 for one server and UTC for another, and both align on one clock.
Syslog stamps like Oct 10 20:55:37 hold no year. The page uses the Year for syslog lines field, which is this year when empty. Type 2025 for an old log. If one source runs from December into January, the year steps forward at the new year.
A line with no timestamp is attached to the line above it, so a 12 line stack trace stays under its ERROR line and moves with it. Lines that come before the first timestamp of a source form one block with that first line's time.
Set Mark gaps longer than to a number of seconds, for example 30. Every line more than 30 seconds after the previous visible line gets a dashed top border, and a button for each gap, up to 50, opens the list two lines before it.
No. The text is processed in your browser and not uploaded. Nothing you paste is saved on this device either.