Load testing tends to get scheduled right after something falls over in production. Writing the test is rarely the hard part. Owning it is: you need somewhere realistic to aim it, machines to generate traffic that are not a laptop on hotel wifi, and a budget line that grows with the traffic you are pretending to have.
So I went and pulled the current numbers for the five engines most teams shortlist, then priced one identical workload across all of them. The longer writeup with every version number and license lives on DevToolLab; this is the short version, built around the part that surprised me most.
The Unit That Decides Your Bill
Every metered plan in this category sells the same thing: virtual user hours. Grafana publishes the formula in its pricing FAQ, and it is not complicated. Multiply your peak virtual users by the test duration in minutes, then divide by 60.
Pick a schedule a real team might actually keep. Five hundred virtual users, thirty minutes, twice a week. That works out to 250 VUh per run and 2,000 VUh across a month. Applying each vendor's published rate to exactly that:
const PEAK_VUS = 500;
const MINUTES = 30;
const RUNS_PER_MONTH = 8;
const monthlyVuh = ((PEAK_VUS * MINUTES) / 60) * RUNS_PER_MONTH; // 2000
// Grafana Cloud k6 Pro: $19/mo platform fee covers 500 VUh, then $0.150/VUh
const k6 = 19 + Math.max(0, monthlyVuh - 500) * 0.15; // 244.00
// Artillery Cloud Team: flat
const artillery = 199; // 199.00
// Gatling Enterprise Team: EUR 356/mo, ECB rate for September 11, 2026
const gatling = 356 * 1.1592; // 412.68
Three vendors, one workload, and a spread of more than two to one:
Grafana Cloud k6 Pro $244.00/month 1500 VUh billed above the 500 included
Artillery Cloud Team $199.00/month flat, far under the 1000-report cap
Gatling Enterprise Team $412.68/month flat, using 4h of a 5h allowance
Self-hosted OSS $0.00/month license only, compute billed separately
The ranking is not stable, which is the actual lesson. Metered pricing tracks your peak, so doubling the virtual users doubles the k6 line while the two flat plans sit still until they hit a ceiling. Halve the schedule and k6 becomes the cheapest by a distance. Work out your own peak and cadence before you read anyone's pricing page.
What People Actually Install
Nobody registers a load test, so package downloads are about the most honest adoption signal available. Locust pulled 11,281,181 downloads from PyPI in the thirty days up to September 13, 2026. Artillery took 200,252 npm downloads during the week of September 5 to 11, and in that same week autocannon, which benchmarks a single endpoint rather than modeling a user journey, took 675,107. A lot of what gets called load testing is really "how many requests per second does this one route survive".
Stars tell a different story again. Checked against the GitHub API on September 13, 2026: k6 31,459, Locust 28,148, Vegeta 25,188, Apache JMeter 9,529, Artillery 9,074, Gatling 6,955. Attention and installed base are not the same measurement, and JMeter is the proof. It sits near the bottom of that list and is almost certainly running inside more enterprises than anything above it.
The Five Engines, Briefly
Grafana k6 is the one to reach for when you want tests that look like code and run in CI. The engine is Go, the tests are JavaScript or TypeScript, and thresholds fail a build on a percentile instead of an average. Two caveats: browser-level testing is a separate and pricier mode, and the AGPL-3.0 license stops the conversation dead at some companies. AGPL-3.0, v2.2.0 from August 10, 2026.
Gatling is the JVM answer, and usually already installed wherever there is a dedicated performance engineering function. Tests compile, get reviewed like any other code, and the built-in reports are the most detailed of the group without paying extra. The open-source edition will not coordinate a run across several machines, which is precisely the thing the Enterprise tiers are selling. Apache-2.0, 3.15.1, with prices quoted only in euros.
Locust has the gentlest learning curve here because a virtual user is just a Python class. Decorate a method to make it a task, pass an integer to weight it, done. It spreads across worker processes and machines, and the live web UI is the rare dashboard a non-engineer will genuinely watch mid-run. No commercial edition exists, so distributed capacity is infrastructure you run. MIT, 2.46.5 from September 7, 2026.
Apache JMeter still wins on protocol coverage and it is not close. Its own feature list runs through HTTP and HTTPS, SOAP and REST, FTP, JDBC, LDAP, JMS, and SMTP, POP3 and IMAP. If the thing under test is a queue or a stored procedure, this is frequently the only free option. The problem is momentum: the last cut release is 5.6.3, dated January 9, 2024, and Apache's download page still offered it as current in September 2026. Commits continue, so read that as maintained rather than dead, but it is a weak basis for new work.
Artillery treats the awkward question of where load generators come from as its actual product. Tests are YAML with JavaScript where logic is needed, checks are declarative so a run fails when http.response_time.p95 crosses your threshold, and the docs state runs happen on AWS Lambda, AWS Fargate or Azure Container Instances. Distribution becomes a flag rather than a cluster. Kubernetes is listed as planned. MPL-2.0, 2.0.34 from August 14, 2026.
Side by Side
| Tool | Scripting format | Entry price | Self-host | License |
|---|---|---|---|---|
| Grafana k6 | JavaScript, TypeScript | Free 500 VUh, then $0.150/VUh | Yes | AGPL-3.0 |
| Gatling | Java, JavaScript, TypeScript | €89/month, about $103 | Yes | Apache-2.0 |
| Locust | Python | $0 | Yes | MIT |
| Apache JMeter | XML via GUI | $0 | Yes | Apache-2.0 |
| Artillery | YAML plus JavaScript | $0, Team $199/month | Yes | MPL-2.0 |
Choosing Without Regretting It Later
Four questions settle this faster than any benchmark comparison.
Start with peak, duration and frequency, because those three numbers are the entire input to the VUh formula and therefore to your invoice. Then get a ruling on AGPL before anyone falls for k6, since that is the blocker that tends to surface late and expensively. Third, choose the language the people carrying the pager already read, because a test only one engineer can edit quietly stops being run inside two quarters. Finally, decide who is responsible for the load generators: self-hosting Locust or JMeter costs nothing in license and real time in operations, which is exactly the job Artillery's serverless runners and Gatling's Enterprise orchestration are sold to remove.
One thing worth ruling out before you spend virtual user hours at all: confirm the traffic is reaching your origin. A cache header analyzer will tell you in seconds whether you are about to measure your CDN instead of your application, and a cURL command generator gets the exact request shape right before you multiply it by 500. The full comparison goes further into the per-tool tradeoffs than I have room for here.
Who Should Use What
Putting load tests into CI for the first time, on a product team: k6, once legal has signed off on AGPL. A Python shop: Locust, because day one costs nothing in learning and 11.3 million monthly downloads means somebody has already hit your problem. Wanting distributed load without running the fleet: Artillery, whose $199 tier undercuts the metered k6 month calculated above. A JVM stack with real performance engineers: Gatling. Testing JMS, JDBC, LDAP or mail: JMeter, eyes open about that 2024 release date.
What Actually Changed This Year
Free tiers got good enough that "we do not have budget for it" stopped being a real answer. A 500 VUh monthly allowance on Grafana Cloud pays for a 500-user, half-hour test twice a month at zero cost, and both Locust and JMeter stay free at whatever scale you are willing to operate yourself.
What did not change is the incentive shape. Metered pricing rewards small tests run often and punishes the single enormous soak test before a launch, which is still the one most teams actually schedule. Worth asking before the next renewal: what peak did we test at last quarter, and was it above or below the traffic we really served? If it came in under, the spend bought reassurance rather than information.
References
- Original article on DevToolLab
- Grafana k6 and Grafana Cloud pricing
- Gatling pricing
- Artillery pricing and distributed load testing docs
- Locust
- Apache JMeter downloads
- European Central Bank euro reference rates, used for the EUR to USD conversion



Top comments (0)