JMeter to k6 migration, finished
Your team has moved to k6 and your load tests are still JMeter test plans. A converter will get you a k6 script that runs. I will get you one that tests the same journeys the JMeter plan did, including the parts no converter can do faithfully, for a price you can check before you buy.
The problem, in plain words
JMeter stores a test plan as a tree of elements in XML. k6 is a JavaScript file with explicit options, checks and HTTP calls. The HTTP requests themselves move across cleanly: method, URL, headers, body. What does not move cleanly is everything that makes the plan behave like a real user.
Grafana’s own jmeter-to-k6 converter is archived, and k6 Studio records browser sessions rather than reading a .jmx. So most teams end up with a converted draft and a list of things to finish. The risk is not that the k6 script fails. It is that it passes while testing almost nothing.
What is usually awkward
-
Correlation
Every session ID, CSRF token and generated identifier the JMeter plan extracts has to be extracted in k6 too, and any value the plan replays from the recording has to be found. Miss one and the script still returns 200s.
-
Logins, cookies and headers
JMeter’s Cookie, Header and Authorization Managers apply by scope. In k6, cookies live in a per-VU jar that resets each iteration by default, and headers and auth are set per request or in shared params. Getting the session to behave the same is deliberate work, and headers scoped too widely in JMeter are easy to carry into requests that never sent them.
-
Custom code
JSR223 and BeanShell blocks are Groovy or Java, and they cannot be translated. They are rewritten in JavaScript, and k6 runs JavaScript but not Node.js, so anything leaning on Java classes or npm modules needs rethinking rather than porting.
-
Load profile
Thread groups, ramp-up and duration become k6 stages. A Constant Throughput Timer is a different idea from a thread count; k6’s arrival-rate executors express it natively, but someone has to decide which model the original test meant.
-
Plugins
Plugin samplers and thread groups outside core JMeter have no k6 counterpart. The converter lists them rather than dropping them; each one is a decision.
How the fixed prices apply
Turnarounds are calendar days, counted from when a complete submission arrives. Full details, and checkout, are on the script migration page.
Conversion review
£250
One-off, inclusive
You get the converted script and a written report of exactly what still needs doing by hand, and how to do it. I do not do the manual work at this tier.
- Covers
- One script, any size
- Guaranteed
- Within 2 days
Single script
£750
One-off, inclusive
One user journey migrated and finished — including the parts no converter can do faithfully.
- Covers
- Up to 50 HTTP requests and 10 manual-work items
- Guaranteed
- Within 3 days
Suite
£1,500
One-off, inclusive
A set of related scripts migrated together, with shared data files and configuration kept consistent across them.
- Covers
- Up to 200 HTTP requests and 30 manual-work items
- Guaranteed
- Within 5 days
Larger migrations
From £3,000
Quoted from your numbers
Beyond the caps above, or with constraints that need agreeing first. Priced from the same request and manual-work counts, so the quote is arithmetic rather than a negotiation.
- Covers
- No cap — scope agreed up front
- Guaranteed
- Agreed with you
Run the free converter on your .jmx with JMeter → k6 selected. It reports the number of HTTP requests and the number of items needing manual work, and the tier caps are written in those same two numbers. One user journey inside the Single script cap is the common case.
If you only want to know what the work involves, the Conversion Review gives you the k6 script and a written list of every manual item and how to complete it, and you finish it yourself.
No risk in picking the wrong tier. If your script turns out to exceed the cap you bought, I will refund you in full or quote the difference — your choice, and you decide before I start any work.
Need it faster? Ask before you buy. A faster turnaround is +50%, if I can commit to it for your job, and I will tell you either way. I would rather turn it down than miss it.
Your script stays yours
Send sanitised scripts only, with real usernames, passwords, tokens and data replaced by synthetic values, and share them as a link from your own file store rather than an email attachment. Everything is done asynchronously by email; there is no call.
Read exactly what happens to your script, or check it first with the free script scanner.
Questions
Which tier do I need for a JMeter to k6 migration?
Run the free JMeter to k6 converter on your test plan. It shows the number of HTTP requests and the number of items needing manual work, and the tier caps are written in those same numbers. If your plan is beyond the Suite cap, it is quoted from the same counts.
Is there an official JMeter to k6 converter?
Grafana’s jmeter-to-k6 has been archived; the repository is read-only and its last change was in February 2022. k6 Studio, Grafana’s current tool, records a browser session or imports a HAR file. It does not read a JMeter test plan.
What happens to JSR223 and BeanShell code?
It is rewritten in JavaScript rather than translated. Because the time depends entirely on what the code does, custom script blocks are priced before I start rather than guessed.
What do I get back?
At the Single script and Suite tiers: a k6 script that runs against your environment, the manual work completed, the manual-work list marked off, and notes on everything I changed and why. Questions afterwards are included.
Can I do the migration myself?
Yes. The free converter handles one journey of up to 25 HTTP requests in your browser, Perf Script Studio does the same offline without the cap for a one-off £149, and the £250 Conversion Review gives you the converted script with a written list of everything left to do and how to do it.
Start with the free version
Converts a .jmx to k6 in your browser, nothing uploaded, and lists every item that needs manual work. Those numbers tell you which tier you need.
Related reading
Other migration routes
- LoadRunner to JMeter migration
You have VuGen Web HTTP/HTML scripts and want them in JMeter or k6.
- What a JMeter to Gatling migration costs
You are pricing a move from JMeter to Gatling and want the number before the conversation.