HAR File Viewer

Open a HAR file — the recording of every request a browser made, saved out of its developer tools — without handing it, and the cookies inside it, to a website. Waterfall, timings, the slowest requests and whatever failed.

How to use it

Drag in the file your developer tools saved and every request the page made is laid out in order, with its URL, headers, sizes, timings and often the response body itself.

  1. Export the HAR Open the browser’s developer tools, go to Network, reload the page, then right-click the request list and choose "Save all as HAR".
  2. Drop it in The summary, waterfall and type breakdown appear immediately.
  3. Sort by slowest or largest That is usually where the answer is. Hover any bar to see which phase consumed the time.
Full instructions
A HAR file contains everything. Cookies, auth headers, form posts and API responses from that browsing session. Uploading one to a website hands over live credentials. This page reads it in your browser — nothing is sent anywhere.

Drop a .har file here

Export one from your browser’s network tab · right-click → “Save all as HAR”

Choose a file

Read on your own device. Never uploaded.

In depth

Reading a network log without handing over your session

What a HAR file contains and why it is sensitive, how to export one from any major browser, what the viewer shows for each request, a walkthrough of diagnosing a slow page load, and why this tool exists when several online viewers already do.

Screenshot: What a HAR file is
What a HAR file is as it appears when the page opens.

What sits inside a HAR file

HAR stands for HTTP Archive. It is a JSON file that records every network request a browser made during a page load or browsing session. Each entry holds the URL, the HTTP method, the request and response headers, the timing breakdown, the status code, the transferred size and often the full response body.

That list includes cookies, authorization tokens, session IDs and any form data you submitted while the recording was running. A HAR file from a logged-in session is effectively a copy of your credentials. Anyone who has it can replay those cookies against the server and act as you, at least until the session expires.

Support teams ask for HAR files regularly because they show exactly what the browser saw. But the popular online HAR viewers all require you to upload the file to their server, which means handing over all those credentials. This viewer reads the file in your browser and never sends it anywhere.

Exporting a HAR from your browser

The steps are similar in every modern browser. Open the developer tools, usually with F12 or the keyboard shortcut for your platform. Go to the Network tab. Reload the page so the tab captures every request from the start. Wait until the page is fully loaded and any background calls have finished.

Right-click anywhere in the request list and choose Save all as HAR or Save all as HAR with content, depending on the browser. Chrome, Edge, Firefox and Safari all produce the same format. Save the file somewhere convenient.

If you are capturing a problem that only happens during a specific action, start the recording, perform the action, then export. The HAR will contain everything the browser did during that window. Make sure to capture both the initial page load and the action itself, because some issues only appear when a cached resource expires or a background poll fires.

Loading the file into the viewer

Drop the .har file onto the drop area, or click Choose a file and pick it from a dialog. The page accepts files with a .har or .json extension. Once loaded, the file name appears at the top of the work area and a row of summary numbers appears below it.

The summary shows the total number of requests, the total transferred size, the number of failed requests and the total load time. These four numbers give you an instant picture of the page load before you look at any individual request.

To load a different file, press the Another file button in the top right. The current data clears and the drop area returns.

The waterfall and what the colors mean

Below the summary sits the request list, which shows each request as a horizontal bar. The bar is divided into colored segments that represent the phases of the connection. A legend at the top names each color.

Queued time means the browser was waiting for a free connection slot. DNS is the time spent looking up the domain name. Connecting is the TCP handshake. TLS is the additional handshake for HTTPS. Sending is the time to transmit the request. Waiting is the time the server took to think and start responding. Downloading is how long the response body took to arrive.

The length of each segment tells you where the time went. A long waiting segment means the server was slow. A long connecting segment points at network distance or congestion. A long queued bar means too many requests to the same host, and the browser ran out of parallel connections.

Filtering and sorting the list

Three controls sit above the request list. The Filter by URL text field narrows the list to requests whose URL contains what you type. Typing api shows only API calls. Typing .css shows only stylesheets fetched by name. The filter updates as you type.

The type dropdown, which starts at Every type, lets you filter by resource category: Documents, Scripts, Stylesheets, Images, Fonts, Data which covers JSON and XML, Media, and Other. Picking one hides everything else, which is useful when you know the slow item is an image or a script but do not know which one.

The sort dropdown offers three orders. In order shows requests in the sequence the browser made them, which is the natural timeline. Slowest first puts the most time-consuming request at the top, which is usually the first thing to try when debugging a slow load. Largest first ranks by transferred bytes, which helps when the problem is bandwidth rather than latency.

The type breakdown table

Below the request list sits a panel headed By type. It groups all requests by category and shows the count and total size for each one. A page that loads 40 scripts and 2 stylesheets has a different shape than one that loads 60 images and 3 scripts. The table shows that shape at a glance.

The numbers here are useful for comparing before and after. If you optimize a page and export a new HAR, loading both and comparing the type tables tells you exactly what changed: fewer scripts, smaller images, or a font that was dropped entirely. A heavy page often has most of its weight in images, and this table makes that obvious without scrolling through every individual request.

Diagnosing a slow page, start to finish

Open the developer tools in Chrome on a page that takes seven seconds to load. Go to the Network tab, reload, wait for the page to finish, and save the HAR. Drop the file into the viewer.

The summary says 94 requests, 3.2 MB transferred, 1 failed, 7.1 seconds. Sort by Slowest first. The top entry is an API call to /search that took 4.8 seconds. Its bar is mostly waiting, which means the server took nearly five seconds to respond. That is the bottleneck, and no amount of frontend work will fix it.

The second entry is a 1.4 MB hero image that took 1.9 seconds to download. Its bar is mostly downloading. Compressing it or serving a smaller version would save close to two seconds.

The failed request is a font file that returned a 404. It does not slow the page down, but it means the text renders in a fallback font and then shifts when it gives up waiting. The URL in the list tells you exactly which file is missing.

That single walkthrough found the server-side bottleneck, the oversized image and the missing font, all in under a minute.

Mistakes to watch out for

  • Exporting a HAR while logged into a sensitive account and then emailing it. The file contains your live session cookies. Log out first, or use a fresh incognito session to capture the problem.
  • Sorting by size and ignoring cached requests that show 0 bytes. Those are served from the browser cache and cost nothing on the network. They are not a problem to fix.
  • Reading the total load time as a server metric. It includes browser queuing, DNS lookups, connection setup and download time. The server time is only the waiting segment of each request.
  • Capturing a HAR on a fast office network and using it to judge performance for users on mobile. Network conditions change everything. The timing in a HAR only reflects the connection it was captured on.

Why a local viewer matters

A HAR file from a production session is one of the most sensitive files a developer handles. It often contains authentication tokens that are still valid, API keys passed in headers, form data from login or checkout flows, and response bodies that hold personal information.

Uploading that file to an online analyzer hands all of it to a third party. Even if the service promises to delete it, the transfer itself is a risk. This viewer avoids the question entirely. The file stays on your machine, the parsing happens in your browser, and no network request carries any part of the data. You can confirm it by loading a file with your network turned off. Everything works the same, because no server was ever in the loop.

Help

What a HAR file is

Drag in the file your developer tools saved and every request the page made is laid out in order, with its URL, headers, sizes, timings and often the response body itself. Each bar is split into its phases, so a request that spent its time waiting on the server is told apart from one that spent it downloading.

Export the HAR

Open the browser’s developer tools, go to Network, reload the page, then right-click the request list and choose "Save all as HAR".

Drop it in

The summary, waterfall and type breakdown appear immediately.

Sort by slowest or largest

That is usually where the answer is. Hover any bar to see which phase consumed the time.

Redact before sharing

If you must send a HAR to a vendor, most browsers have a "sanitise" option on export, and there are scrubbing tools. At minimum, log out first and capture the problem in a fresh session with no valuable cookies.

Good to know

Treat a HAR like a password file

It contains session cookies and Authorization headers in plain text — anyone with the file can often impersonate you. That is the entire reason this tool works locally, and why you should think twice before emailing one.

Long "Waiting" means the server

Time in the waiting phase is the server thinking. Time in connecting or TLS is the network. Time downloading means the response is simply large. The phases tell you whose problem it is.

Queued time means too many requests

Long "Queued" bars mean the browser hit its connection limit for that host. Fewer, larger files — or HTTP/2 — is the fix.

Common questions

How do I create a HAR file?
Developer tools → Network → reload the page → right-click the request list → "Save all as HAR". Chrome, Edge, Firefox and Safari all produce the same format.
Is my HAR uploaded anywhere?
No. It is parsed in your browser and never sent. That is the point of this tool — the popular online HAR viewers all require an upload.
What do the coloured segments mean?
The phases of one request: queued, DNS, connecting, TLS, sending, waiting for the server, and downloading. The legend above the list names each colour.
Why is a request showing 0 bytes?
Usually a cached response (served from disk or memory, so nothing was transferred) or a request the browser recorded without body size. Both are normal.