Skip to content

Free browser tools

Everything on this page is free, needs no account, and runs inside your own browser tab. The engines are compiled to WebAssembly and loaded into the page; your file is read by JavaScript, processed in memory, and handed back. It is never sent anywhere.

That is a property of the page, not a promise in its copy. The tools origin serves a Content-Security-Policy whose connect-src is 'self', and 'self' is a static host that accepts no writes — so there is nowhere the page could send your file, whatever a later edit attempted. Open DevTools → Network before you convert and watch: after the page and the .wasm engine load, converting issues no further requests.

That matters most for a HAR recording, which routinely carries production hostnames, session cookies, bearer tokens and full response bodies.

ToolTakesGives backOpen it
Script converterA Chrome HAR recording, or a JMeter .jmx, k6 .js or Gatling .scala scriptA runnable script in whichever of the three you choose — all six directions, plus HAR to any of themtools.martkos-it.co.uk
Results viewerA JMeter .jtl, k6 JSON output, or a Gatling simulation.logApdex, percentiles, error rate, throughput and a per-endpoint table — the report, without launching the GUItools.martkos-it.co.uk/report/
Secrets scannerA JMeter, k6 or Gatling script and its CSV data filesEvery credential, token, personal-data field and production hostname it finds, with the line — before you share the script with anyonetools.martkos-it.co.uk/scan/
Cheat sheets51 reference sheets across JMeter, k6, Gatling and the tooling around them, all publicmartkos-it.co.uk/resources

Three landing pages on the main site describe the most common jobs and open the converter pre-set for them:

The first step of every one of these jobs happens outside the tool, and it is the step people ask about most. Each heading below has a stable anchor; the tool page links here.

  1. Open DevTools — F12, or right-click the page → Inspect — and choose the Network tab.
  2. Tick Preserve log, so the recording survives page navigations and redirects. Without it, Chrome clears the list every time the page changes and you lose the login.
  3. Walk through the journey you want to test — sign in, search, add to basket, whatever the script needs to do. Do it once, cleanly.
  4. Right-click anywhere in the request list → Save all as HAR with content.

“With content” is the version you want: it keeps response bodies, which is how the converter can tell you which values the server issued that later requests send back. It is also why the file is sensitive — it now holds every cookie, header and response from a real session. That is the reason the converter never uploads it.

Firefox and Edge have the same option under the same name. Safari exports HAR from Web Inspector → Network → Export.

A .jmx is XML, and the file JMeter saves is the file the converter reads — there is no export step. File → Save Test Plan As if you want a copy; otherwise use the one you have. Plans that reference external files (CSV data sets, JSR223 script files) convert without them, and the warnings list what was referenced.

The script file itself: the .js k6 runs, or the .scala Gatling compiles. If a k6 script imports local modules, convert the entry file — imports are reported, not followed.

ToolFileHow to produce it
JMeter.jtl (CSV)jmeter -n -t plan.jmx -l results.jtl — leave the default CSV format alone
k6JSONk6 run --out json=results.json script.js
Gatlingsimulation.logWritten to results/<simulation>-<timestamp>/ on every run

A .jtl written from the GUI’s View Results Tree listener is XML, not CSV, and will not open. Run non-GUI with -l and you get the CSV.

What the free converter does and does not do

Section titled “What the free converter does and does not do”

It carries across: HTTP requests with method, URL, headers, query and body; thread groups as virtual users, ramp-up and duration (as k6 stages or Gatling injection profiles); transaction controllers as groups; extractors as checks and captures; assertions; CSV data feeds; think times; basic and bearer auth.

It reports, rather than silently drops, anything it could not translate faithfully — a JSR223 sampler, a plugin thread group, a ramp beside a fixed iteration count. Read the warnings; that list is the manual work.

It does not do correlation. The session ID, the CSRF token, the value the server issued on request 3 that request 7 sends back — a raw conversion replays the recorded value, and the second run fails. Extracting those is what perf-script-studio is for; the free tool tells you which values will need it and stops there.

Free up to 25 HTTP requests per file, which covers a single user journey. A larger suite, batch conversion, or conversion in CI is the perf-script-studio CLI, £99 one-time, which runs the same engine with the cap removed and correlation included.

Gatling’s simulation.log is not a stable format — the field layout has changed between versions, and a viewer that reads it by column index produces a report of zeros on a newer Gatling without saying so. This one locates the timestamp pair instead, so it reads 3.x logs correctly. If a report looks empty, check the file is the raw log and not the generated HTML.

Apdex counts failed requests as frustrated, whatever their response time. A viewer that scores on elapsed time alone reports a service returning instant 500s as a perfect 1.00; on a run with a 5% error rate the difference is 0.995 against 0.945. If you gate a build on Apdex anywhere, check which one your tooling does — take a run with known errors and see whether the score moves.

It lists what it finds and where, and it errs towards reporting: a hostname that is merely internal, a column that only looks like a card number. Treat each line as a question to answer, not a verdict. The point is to see the list before the script leaves your machine — a JMX pasted into a ticket or emailed to a consultant carries its CSV feeds’ contents with it, and those feeds are where the live personal data usually is.

The free tools are the front of the funnel and are meant to be enough on their own for a single script. When they run out — a suite, a pipeline, or a migration you would rather hand to someone — the paid products and the fixed-price migration service pick up from exactly the point the free tool stopped at, on the same engine.

After the conversion, inside JMeter. A converted .jmx is a starting point that runs; making it a real test is JMeter work. Feather Wand (MIT, by NaveenKumar Namachivayam) is an AI agent that sits inside JMeter itself — with Codex and Claude Code integration — and is the obvious next thing to open with a freshly converted plan and a list of extractors to add. Not ours, and recommended for that reason: it does the part these tools deliberately stop at.