User Manual · HAR Import

Load test your app
using a real browser session

Record your browser traffic, save it as a HAR file — filtering to XHR/API calls only — then upload it to ProdLoad to replay that exact session at scale with hundreds or thousands of virtual users.

About 5 minutes to complete
🌐

Record real traffic

Use your browser's built-in DevTools to capture every XHR and Fetch request your app makes — no agents or proxies needed.

⬆️

Import in one click

Import the HAR file in the ProdLoad Flow Builder. It parses every request, URL, headers, and body automatically.

📊

Get real metrics

Run the test with up to your plan's virtual user limit and get live throughput, P90/P95, and error rate reports.

Step 1

What is a HAR file?

A HAR (HTTP Archive) file is a JSON-format log of all HTTP traffic recorded in a browser session. It captures every request — URL, method, headers, request body, response status, timing, and more. ProdLoad reads it and converts each XHR/API call into a test step.

💡
Why XHR only? A typical page load includes requests for images, fonts, CSS, and JS. These static assets should not be replayed in a load test — your CDN handles them. You only want to stress-test your API and data endpoints: XHR and fetch requests.
🎬
Open DevTools
F12 / ⌥⌘I
🔴
Start recording
Network tab
⚡
Use your app
Navigate pages
🔍
Filter: Fetch/XHR
Remove static
💾
Save as HAR
Export icon ↓
Step 2 · Chrome & Edge

Capture XHR in Chrome or Edge

Chrome and Edge share the same DevTools, so the steps are identical. The screenshots are from Chrome; open the Edge panel under each one to see it there.

1

Open DevTools → Network tab

Press F12 (Windows / Linux) or ⌥ ⌘ I (Mac), then click the Network tab. Tick Keep log so requests survive page navigations, and make sure the red record button is on.

Chrome DevTools with the Network tab highlighted
The Network tab, with the record button and Keep log checkbox in its toolbar.
See the same step in Microsoft Edge
Microsoft Edge DevTools - Network tab
2

Filter to Fetch/XHR only

In the filter bar click Fetch/XHR. This hides images, fonts, CSS and scripts and leaves only the API and data requests.

Chrome DevTools with the Fetch/XHR filter highlighted
The Fetch/XHR filter button. Only API calls remain in the list.
See the same step in Microsoft Edge
Microsoft Edge DevTools - Fetch/XHR filter
💡
You should now see only API calls. If font or image URLs remain, refine with the filter box — type -domain:cdn.example.com to exclude a domain.
3

Perform the user journey you want to test

Navigate through your app, log in, click through pages, submit forms — whatever workflow you want to load test. Every request is recorded live.

⚠️
Include authentication. If your API requires a token, log in after you start recording so the login request is captured. ProdLoad replays the exact request headers, including Authorization and cookies.
4

Export as HAR (with sensitive data)

Click the download icon ↓ (Export HAR…) in the Network toolbar — highlighted below. If Chrome or Edge offers a choice, pick Export HAR (with sensitive data), then save the file as my-test.har.

Chrome DevTools with the Export HAR download icon highlighted
The Export HAR download icon, next to the import (upload) icon.
See the same step in Microsoft Edge
Microsoft Edge DevTools - Export HAR icon
ℹ️
Why “with sensitive data”? The sanitized option removes cookies and Authorization headers. ProdLoad needs them to replay a logged-in session. On older browser versions, right-click the request list and choose Save all as HAR with content instead.
🔐
A HAR with sensitive data contains live tokens and cookies. Don’t share it, and delete it once it is imported.
Step 3 · Firefox

Capture XHR in Firefox

1

Open DevTools → Network

Press F12, click Network. Press Ctrl+R or reload to start a fresh recording.

2

Filter to XHR only

In the filter bar click XHR. Firefox does not have a combined Fetch/XHR button — you may also click Others if your app uses fetch().

3

Save HAR

Right-click the request list → Save All As HAR, or click the gear icon ⚙ in the toolbar → Save All As HAR.

Step 4 · Safari

Capture XHR in Safari

1

Enable Developer menu

Safari → Preferences → Advanced → check Show Develop menu in menu bar.

2

Open Web Inspector → Network

Develop → Show Web Inspector → click Network tab.

3

Filter and export

Use the XHR filter button. When done, click the Export button (down-arrow icon) in the toolbar to save as HAR.

Step 5 · Best Practice

Keeping only XHR requests

Even after filtering in DevTools, your HAR may contain requests you don't want to replay. Here's how to identify and remove them before uploading.

Request typeInclude?Why
XHR / fetch /api/*✓ YesYour actual API — this is what you want to stress-test.
JS / CSS / fonts✗ SkipServed from CDN, not affected by server load.
Images / SVG✗ SkipStatic assets. They skew timings and inflate VU cost.
Analytics / tracking✗ SkipThird-party endpoints — test results will always be 200.
WebSocket handshakeOptionalProdLoad supports WS but handle separately via Flow Builder.
🔎
In Chrome DevTools, type -domain:google-analytics.com -domain:cdn.example.com in the filter box to exclude specific domains before exporting.
Step 6 · ProdLoad

Import your HAR file

Once you have a clean HAR file, importing it into ProdLoad takes a few clicks. ProdLoad then analyses the recording and builds a runnable flow.

1

Go to Flow Builder

In the left sidebar click Flow Builder, or open /flow-builder. You start with an empty flow.

2

Import → HAR recording

Click the Import button and choose HAR recording. (The same menu also imports a Postman collection or a Swagger / OpenAPI file.) Pick the .har file you saved from DevTools.

The Import menu in Flow Builder with HAR recording, Postman collection and Swagger / OpenAPI
The Import menu in Flow Builder.
The HAR Imported confirmation dialog
ProdLoad confirms how many steps it imported.
ℹ️
The importer automatically skips static resources (.js .css .png .woff etc.) and third-party calls.
3

Read the HAR Analysis Review

Before anything runs, ProdLoad summarises what it found: the detected base URL, how the app authenticates (for example a bearer token), which request is the login, the values it will extract from responses, and any dynamic values it correlated into ${variables}.

The HAR Analysis Review panel
The HAR Analysis Review: base URL, authentication, login request, extraction plan, correlation and warnings.
⚠️
Errors stop the run; warnings mean the replay may differ from the recording. A common warning: login credentials were moved out of the request into a CSV data set. Add one row per test account on the CSV Data tab before running real load — with a single row, every virtual user logs in as the same account.
4

Review the imported steps

Each API call becomes a numbered step on the Steps tab. Badges show what ProdLoad added: Once (the login runs once per virtual user), extract (a value captured for later steps) and assert (a check on the response). You can reorder, edit, exclude or delete steps, and add your own assertions.

The Steps tab listing the six imported steps
Six steps imported from the HAR, in recorded order.
Step 7 · ProdLoad

Register and verify your target host

ProdLoad only generates load against hosts you have registered and proven you control. This protects other people’s servers — and it is the most common reason a first run will not start.

1

Open Hosts → Add Host

Click Hosts in the sidebar, then Add Host. Give it a name, the base URL (scheme, host and port, for example https://api.example.com) and an optional description.

The Add Host form
The Add Host form.
2

Verify ownership

On the host card click Verify and follow the instructions shown. Once confirmed the card shows a green Verified badge. Check re-tests that the host is reachable and refreshes its health, status code and latency.

A verified host card showing health, status and latency
A verified host with its health score, HTTP status and latency.
⚠️
If you pick an unverified host on the Load tab you will see “Host is not verified … Go to Hosts → Verify” and the run will not start. Your administrator controls whether unverified hosts are allowed at all.
Step 8 · Configure

Configure your load test

On the Load tab choose the target host and set the virtual user count, ramp-up time and test duration. These control how hard your server gets hit.

The Load tab with target host, virtual users, ramp-up and duration
The Load tab: target host, virtual users, ramp-up, duration and loop count.
SettingDescriptionRecommendation
Target hostThe verified host the flow runs against.Pick the host you registered in Step 7.
Virtual Users (VUs)Concurrent simulated users. Each VU runs the full step sequence in a loop.Start low (10–20), ramp up in later runs.
Ramp-up (sec)How long it takes to reach the full VU count from 0. The spawn rate is shown under the field.Use 30–60 s to avoid an instant spike. Too short = thundering herd.
Duration (hh:mm:ss)Total test run time. After ramp-up, all VUs keep running until it is reached.At least 3× the ramp-up so you get steady-state data.
Loop countHow many times each VU repeats the flow. -1 means keep looping until the duration ends.Leave at -1 for duration-based tests.
Load shapeFlat holds a constant load; other shapes vary it over time.Flat for the first run.
⚡
Not sure what to enter? ProdLoad shows a Recommended for N VUs line under the fields. Click Apply best practices to fill in a sensible ramp-up and duration.
⚠️
Plan limits apply. The Free plan supports up to 10 VUs. Pro allows 200 VUs, and Team/Business plans allow larger clusters. The VU field is capped at your plan maximum.
Step 9 · Run

Run the test & monitor live

Click Run… in the Flow Builder toolbar. ProdLoad starts the test and takes you to the live monitor, where results stream in as they happen.

1

Click Run… and choose where to run

The Start Run dialog asks where to run. Local uses a single ProdLoad engine on the backend host. Cluster runs a master with slaves on your registered workers (the platform is chosen by your administrator in Settings). Confirm the virtual users, ramp-up and duration, then click Start Local Run (or Start Cluster Run).

The Start Run dialog with Local and Cluster options
The Start Run dialog.
🧪
Use Smoke Test 1 VU in the toolbar first. It runs the flow once with a single user, so you can confirm the scenario works with zero errors before applying real load.
2

Watch the live monitor

The monitor shows a RUNNING badge, virtual-user counts, and live throughput, total samples, error rate, average and P90 response time, with charts updating every few seconds. Use the tabs for the Requests list, Errors, Diagnosis, Logs and AI Insights.

The Live Monitor overview during a run
The Live Monitor while the test is running.
3

Watch for errors and latency spikes

Keep an eye on Error Rate and Avg / P90 Response. A sudden spike in either means your server is struggling under load.

⚠️
When to stop early: if the error rate exceeds 5% or response time climbs above 10× baseline, your server has reached its limit. Click Stop — continuing will not give you more useful data.
Step 10 · Results

Read the results

When the test finishes the status changes to COMPLETED and the results stay on the same page. Every run is also kept in Latest Runs (the Reports page) in the sidebar.

1

Review the finished run

The overview keeps the final KPIs and charts. The Requests tab lists every sample with its label, URL, time, status code, size and pass/fail mark.

The Live Monitor overview for a completed run
A COMPLETED run: final throughput, average and P90 response, and error rate.
The Requests tab listing each sample
The Requests tab.
2

Find it again in Latest Runs

The run history table shows virtual users, samples, throughput (TPS), average and P90 response time, error rate and status for every run. The icons on the right open the report, download the raw results, export a PDF, open AI Insights, or mark the run as a baseline.

The Run History table on the Reports page
Run History: open report · download JTL · download PDF report · AI Insights · mark as baseline.
📥
Open ProdLoad Report shows the full dashboard, Download JTL exports the raw results for JMeter, Grafana or Excel, and Download PDF Report gives you a shareable summary. To compare two runs, choose a baseline and a comparison in Compare Runs above the table.
MetricWhat it meansGood threshold
Throughput (TPS)Requests per second successfully handled.Stable or growing; no sudden drops.
Avg ResponseMean response time across all requests.Under 200 ms for API calls.
P90 / P95 / P99Response time that 90/95/99% of requests completed within.P90 < 500 ms is a common SLA target.
Error Rate% of requests that returned 4xx/5xx, failed an assertion or timed out.Under 1%. Above 5% = investigate.
Reference

Tips & best practices

🔐
Dynamic tokens. If your app uses short-lived auth tokens (OAuth, CSRF), use the Flow Builder to extract the token from a login response and inject it into subsequent requests as a variable.
🌍
Test against staging, not production. Always point load tests at a staging or load-test environment. Running against production can affect real users and trigger rate limiting or billing alerts.
🧪
Baseline first. Run a 5-user test first to confirm the scenario works correctly with zero errors before scaling to 100 users.
📈
Ramp gradually. Use a ramp-up time of at least 30 seconds. This reveals at what VU count your server starts degrading, rather than just crashing instantly.
⚠️
Remove personally identifiable data. HAR files can contain cookies, auth tokens, and user data. Remove or anonymise sensitive values before sharing HAR files.
FAQ

Frequently asked questions

What browsers can I capture HAR from? +

Chrome, Edge, Firefox, and Safari all support HAR export. The UI differs slightly but the exported format is identical.

How big can a HAR file be? +

ProdLoad accepts HAR files up to the limit your administrator sets (25 MB by default). If your file is larger, ProdLoad tells you the exact limit; in that case open it in a text editor and remove response body content — the importer only needs headers, method, URL, and request body.

Can I import a Postman collection instead? +

Yes. In the Flow Builder open the Import menu and choose Postman collection (a Swagger / OpenAPI file works the same way). Export your collection as a v2.1 JSON file from Postman and import it directly.

What JMeter version does ProdLoad use? +

ProdLoad runs Apache JMeter 5.6.3.

The run won’t start: “Host is not verified” +

ProdLoad only runs load against hosts you have registered and verified. Open Hosts, add your target if it is missing, click Verify and follow the instructions, then select the host on the Flow Builder Load tab. See Step 7.

My test shows 100% errors — what's wrong? +

Usually one of: (1) Auth token expired — re-record the HAR while logged in and update the Authorization header. (2) Wrong base URL — make sure the target host in the Flow Builder steps points to your actual server. (3) Server not reachable — check that ProdLoad can reach your endpoint from its worker network.

© 2026 ProdLoad · Apache JMeter 5.6.3