Access Log Analyzer
Paste Nginx or Apache access log lines in combined format and get requests by status, top paths, top IPs, error paths, slowest requests and user agents.
Free · No sign-up · Your inputs stay in your browser
Input
Analyse an Nginx or Apache access log
Output
7 requests, 45.2 KiB
| Status | Requests | Share |
|---|---|---|
| 2xx | 4 | 57.1% |
| 4xx | 2 | 28.6% |
| 5xx | 1 | 14.3% |
| Path | Requests | Share |
|---|---|---|
| POST /api/subscribe | 2 | 28.6% |
| GET / | 1 | 14.3% |
| GET /library/redis-cache | 1 | 14.3% |
| GET /tools/jwt-decoder | 1 | 14.3% |
| GET /.env | 1 | 14.3% |
| GET /wp-login.php | 1 | 14.3% |
| Error | Requests | Share |
|---|---|---|
| 404 GET /.env | 1 | 14.3% |
| 404 GET /wp-login.php | 1 | 14.3% |
| 502 POST /api/subscribe | 1 | 14.3% |
| Client IP | Requests | Share |
|---|---|---|
| 203.0.113.7 | 2 | 28.6% |
| 198.51.100.23 | 2 | 28.6% |
| 192.0.2.44 | 2 | 28.6% |
| 66.249.66.1 | 1 | 14.3% |
| Slowest | Time |
|---|---|
| POST /api/subscribe | 30.001 s |
| POST /api/subscribe | 0.210 s |
| GET /library/redis-cache | 0.112 s |
| GET /tools/jwt-decoder | 0.090 s |
| GET / | 0.041 s |
| User agent | Requests | Share |
|---|---|---|
| curl/8.5.0 | 2 | 28.6% |
| Mozilla/5.0 Chrome/129.0 | 2 | 28.6% |
| Mozilla/5.0 AppleWebKit/605.1.15 Safari/605.1.15 | 1 | 14.3% |
| Mozilla/5.0 Safari/605.1.15 | 1 | 14.3% |
| Mozilla/5.0 | 1 | 14.3% |
3 requests (43%) came from user agents that name themselves as bots or scripts. For whole files, the same counts come from awk '{print $9}' access.log | sort | uniq -c | sort -rn, or GoAccess for a live dashboard.
Runs in this browser. Nothing you paste is sent to a server.
About this tool
Method, assumptions, practical next steps, and limits.
The questions it answers quickly
Which endpoint is throwing 502s, which IP is hammering the login form, whether a traffic spike is crawlers or people, and which pages are slow. For an entire file on a server, awk '{print $9}' access.log | sort | uniq -c | sort -rn counts status codes, and GoAccess gives a live dashboard. The ngx_http_log_module reference defines the format variables.
Add request time to your log format
The default combined format does not record how long a request took. Adding $request_time (and $upstream_response_time behind a proxy) to a custom log_format is the cheapest performance monitoring there is.