HAR Viewer

Open a browser HAR file: a waterfall of every request, failures and slow calls, headers and bodies, copy as cURL — and a copy with cookies and tokens removed, safe to share.

HAR Viewer

Nothing open
On this device

Analyse a HAR file

See every request on a waterfall, what failed and why, and where the time went — then share a copy with cookies and tokens removed.

HAR 1.2 from Chrome, Edge, Firefox or Safari (Network → Save all as HAR) · up to 500 MB · read on your device

How is this calculated?
HAR 1.2 (the W3C Web Performance working group’s format), as Chrome, Edge, Firefox and Safari write it. A time of -1 in the file means “not measured” and is shown as —, never as zero. A request counts as failed when it has an HTTP status of 400 or more, no response at all, or a browser error such as net::ERR_BLOCKED_BY_CLIENT. Bytes transferred come from Chrome’s _transferSize, or from the header and body sizes when the file records them.

Runs in your browser — nothing you enter leaves this device.

About this tool

What it does

A HAR file is what a browser’s network panel saves when you choose “Save all as HAR”: every request a page made, its headers, cookies and body, the response, and how long each step took. Support teams ask for one when a site misbehaves. This viewer opens it as a list with a waterfall, so you can see what failed, what was slow and what was large, and read any request in full — headers, query, body, response and timings — or copy it as a cURL command to run again. A HAR also holds the session cookies, bearer tokens and passwords the browser sent, so the viewer can make a copy with those removed before you share it.

How to use it
  1. In Chrome or Edge open DevTools (F12) → Network, reload the page, then right-click the list → “Save all as HAR”. Firefox: Network → the gear → “Save All As HAR”. Safari: Web Inspector → Network → Export.
  2. Open the .har file here, or press “Try an example” to see a short page load with a failed image and a blocked script.
  3. Read the summary — requests, failures, bytes transferred, the time to the load event — and the breakdown by type and by host.
  4. Filter by words in the URL, by type, or to failures only; sort by start, slowest or largest. Select a request to see it in full and copy it as cURL.
  5. Before sending the file to anyone, use “Download a copy safe to share”: credentials are replaced with [REDACTED], response bodies are removed unless you keep them, and the tool says how many values it removed.
Limits and your data
  • Redaction removes the values of credential headers (Authorization, Cookie, Set-Cookie, API keys, CSRF tokens and similar), every cookie, query and form fields with names like token, key, secret, password or code, the same names inside JSON bodies, and anything shaped like a JSON Web Token. A secret under an unusual name in a plain-text body can still get through: check the copy before you share it.
  • Firefox and Safari do not record bytes transferred for every request, so totals cover only the requests that say; the summary shows how many.
  • The whole file is read into memory, which a HAR with large response bodies can make big; a few hundred megabytes is the practical limit on most computers.
  • Times are as the browser measured them on your machine, network and cache; another run will differ.
  • A HAR file holds everything your browser sent and received, logins included. It is read here, in a background worker on your device, and never uploaded; the page works with the network switched off.

Questions

Is it safe to send a HAR file to support?

Not as saved. It contains your session cookies and any tokens the page sent, which can let someone act as you until they expire. Use “Download a copy safe to share”, check it, and send that instead.

Why do some requests show no size?

The browser did not record one: Firefox and Safari leave the transfer size out for cached and some cross-origin responses, and a blocked request never had one. The tool shows — rather than a guessed zero.

What does net::ERR_BLOCKED_BY_CLIENT mean?

Something in the browser — usually an ad or tracker blocker — stopped the request before it was sent. It is not a server error; the site never saw the request.

Can I replay a request?

Select it and copy it as cURL, then run the command in a terminal. The command carries the original headers and body, credentials included, so treat it like a password.