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.
The four tools
Section titled “The four tools”| Tool | Takes | Gives back | Open it |
|---|---|---|---|
| Script converter | A Chrome HAR recording, or a JMeter .jmx, k6 .js or Gatling .scala script | A runnable script in whichever of the three you choose — all six directions, plus HAR to any of them | tools.martkos-it.co.uk |
| Results viewer | A JMeter .jtl, k6 JSON output, or a Gatling simulation.log | Apdex, percentiles, error rate, throughput and a per-endpoint table — the report, without launching the GUI | tools.martkos-it.co.uk/report/ |
| Secrets scanner | A JMeter, k6 or Gatling script and its CSV data files | Every credential, token, personal-data field and production hostname it finds, with the line — before you share the script with anyone | tools.martkos-it.co.uk/scan/ |
| Cheat sheets | — | 51 reference sheets across JMeter, k6, Gatling and the tooling around them, all public | martkos-it.co.uk/resources |
Three landing pages on the main site describe the most common jobs and open the converter pre-set for them:
Getting the input file
Section titled “Getting the input file”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.
Record a HAR in Chrome
Section titled “Record a HAR in Chrome”- Open DevTools — F12, or right-click the page → Inspect — and choose the Network tab.
- 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.
- Walk through the journey you want to test — sign in, search, add to basket, whatever the script needs to do. Do it once, cleanly.
- 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.
Export a JMeter test plan
Section titled “Export a JMeter test plan”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.
k6 and Gatling scripts
Section titled “k6 and Gatling scripts”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.
Results files, per tool
Section titled “Results files, per tool”| Tool | File | How to produce it |
|---|---|---|
| JMeter | .jtl (CSV) | jmeter -n -t plan.jmx -l results.jtl — leave the default CSV format alone |
| k6 | JSON | k6 run --out json=results.json script.js |
| Gatling | simulation.log | Written 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.
Reading the results viewer
Section titled “Reading the results viewer”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.
Reading the scanner’s output
Section titled “Reading the scanner’s output”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.
Where these fit
Section titled “Where these fit”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.