HAR Request Extractor

Paste a HAR capture and get its request list — method, URL, status, content type, size, and timing — as an aligned table, CSV, JSON, or plain URLs. Filter by status class, method, or URL; sort by slowest or largest. Runs in your browser; nothing is uploaded.

Try:
Request list

About this tool

HAR Request Extractor pulls the request list out of a HAR (HTTP Archive) capture — the JSON file browser DevTools export from the Network tab via Save all as HAR. Instead of scrolling a 40 MB JSON blob, you get one line per request:

The # column is each request's position in the original capture, so a row stays findable in DevTools even after filtering or sorting.

Filters and sorting

Output formats

Worked example

A three-request capture (an HTML page, a slow API call, a missing image):

{"log":{"entries":[
  {"startedDateTime":"2024-01-01T00:00:00.000Z","time":102.5,
   "request":{"method":"GET","url":"https://example.com/"},
   "response":{"status":200,"statusText":"OK","content":{"mimeType":"text/html","size":5120},"bodySize":2048}},
  {"startedDateTime":"2024-01-01T00:00:01.000Z","time":812,
   "request":{"method":"POST","url":"https://example.com/api/search"},
   "response":{"status":200,"statusText":"OK","content":{"mimeType":"application/json","size":20480},"bodySize":-1,"_transferSize":10240}},
  {"startedDateTime":"2024-01-01T00:00:02.000Z","time":54,
   "request":{"method":"GET","url":"https://cdn.example.com/logo.png"},
   "response":{"status":404,"statusText":"Not Found","content":{"mimeType":"image/png","size":0},"bodySize":512}}
]}}

extracts to this table:

3 of 3 requests · 12.5 KB transferred

#  METHOD  STATUS  TYPE              SIZE     TIME    URL
1  GET     200     text/html         2.0 KB   103 ms  https://example.com/
2  POST    200     application/json  10.0 KB  812 ms  https://example.com/api/search
3  GET     404     image/png         512 B    54 ms   https://cdn.example.com/logo.png

With the status filter on Errors, only row 3 remains; with Slowest first, the 812 ms API call moves to the top (and keeps its #2).

Limits and edge cases

Handy for

FAQ

How do I get a HAR file in the first place?

Open your browser's DevTools (F12), go to the Network tab, reload the page (or perform the action you want to capture), then right-click the request list — or use the download icon — and choose Save all as HAR. Chrome, Edge, Firefox, and Safari all export the same JSON format, as do proxies like Charles, Fiddler, and mitmproxy.

Is it safe to paste a HAR here? They contain cookies and tokens.

The capture never leaves your machine — extraction runs entirely in your browser via WebAssembly, with no upload. The output is also much safer than the raw file: only method, URL, status, content type, size, and timing are emitted; headers, cookies, and request/response bodies are never copied into the result. URLs can still carry secrets in query strings, so skim the list before sharing it.

Why does a request show status 0?

Status 0 means the request never received an HTTP response — it was blocked, cancelled, timed out, or failed at the network level (DNS, TLS, CORS). Browsers record such entries in the HAR with status: 0. The Errors filter includes them alongside 4xx and 5xx responses.

Which size does the SIZE column show?

Bytes over the wire when available: the spec's response.bodySize if it's non-negative, else Chrome's _transferSize extension field, else the decoded content.size. HAR writers use -1 for "unknown", and cached responses often report 0 — rows where no size was recorded show - (or null in JSON), and the summary line only sums the sizes that are known.

Can it show the full waterfall, headers, or response bodies?

No — this tool extracts the request list. Per-phase timing waterfalls (DNS, connect, TLS, wait), header inspection, and body viewing are a graphical HAR viewer's job. If you need to check whether a capture is spec-complete instead, use a HAR validator; this extractor deliberately tolerates incomplete entries.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool har-request-extract '{"log":{"entries":[{"startedDateTime":"2024-01-01T00:00:00.000Z","time":120,"request":{"method":"GET","url":"https://example.com/"},"response":{"status":200,"statusText":"OK","content":{"mimeType":"text/html","size":5120},"bodySize":2048}}]}}'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/har-request-extract/?har=%7B%22log%22%3A%7B%22entries%22%3A%5B%7B%22startedDateTime%22%3A%222024-01-01T00%3A00%3A00.000Z%22%2C%22time%22%3A120%2C%22request%22%3A%7B%22method%22%3A%22GET%22%2C%22url%22%3A%22https%3A%2F%2Fexample.com%2F%22%7D%2C%22response%22%3A%7B%22status%22%3A200%2C%22statusText%22%3A%22OK%22%2C%22content%22%3A%7B%22mimeType%22%3A%22text%2Fhtml%22%2C%22size%22%3A5120%7D%2C%22bodySize%22%3A2048%7D%7D%5D%7D%7D&format=table&status=all&method=GET&url_contains=%2Fapi%2F&sort=order

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.