Skip to main content
Fixed price · Fixed turnaround · No call required

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.

Other migration routes