Which protocols and application types can Apache JMeter load test?
Apache JMeter is a 100% pure Java open source application designed for load testing functional behavior and measuring performance. According to the official site, it was originally built for testing Web Applications but has since expanded to other test functions. It can simulate heavy load on a server, group of servers, network, or object to test strength or analyze overall performance under different load types. If your target speaks one of the protocols below, JMeter can likely drive load against it.
Supported protocols and application types
The official feature list names the following targets:
| Category | Protocols / targets |
|---|---|
| Web | HTTP, HTTPS (backends such as Java, NodeJS, PHP, ASP.NET) |
| Web services | SOAP / REST Webservices |
| File transfer | FTP |
| Database | Database via JDBC |
| Directory | LDAP |
| Messaging | Message-oriented middleware (MOM) via JMS |
| SMTP(S), POP3(S), IMAP(S) | |
| System-level | Native commands or shell scripts |
| Network | TCP |
| Java | Java Objects |
So the answer to "does it cover my stack?" is: if your service is reachable over HTTP/HTTPS, SOAP/REST, FTP, JDBC, LDAP, JMS, mail protocols, TCP, shell commands, or as a Java object, JMeter has a matching sampler path.
What else the feature list tells you
Beyond protocol coverage, the official page lists capabilities that affect how you run those tests:
- Test IDE — fast Test Plan recording (from browsers or native applications), building, and debugging.
- CLI mode — command-line (previously called Non GUI) / headless mode to load test from any Java-compatible OS (Linux, Windows, Mac OSX, and others).
- Dynamic HTML report — a complete, ready-to-present report.
- Correlation — extract data from popular response formats: HTML, JSON, XML, or any textual format.
- Portability — complete portability and 100% Java purity.
- Multi-threading — concurrent sampling by many threads, and simultaneous sampling of different functions by separate thread groups.
- Caching and offline analysis/replaying of test results.
- Extensibility — pluggable Samplers, scriptable Samplers (JSR223-compatible languages like Groovy and BeanShell), pluggable timers for load statistics, and data analysis/visualization plugins.
One important limitation
The official page states plainly: JMeter is not a browser. It does not render pages or execute the JavaScript that a real browser would. This matters when your application type depends on client-side rendering — for example, a single-page app where the meaningful requests only fire after JavaScript runs. In that case you would need to plan around it rather than assume JMeter behaves like a browser.
How to decide
- If your target is HTTP/HTTPS, SOAP/REST, FTP, JDBC, LDAP, JMS, SMTP/POP3/IMAP, TCP, a shell command, or a Java object — JMeter's listed feature set covers it.
- If your test depends on browser rendering or JavaScript execution — the official page explicitly says JMeter is not a browser, so factor that in.
- If you need to run at scale or in CI — the CLI/headless mode and HTML report are the relevant features.
- If your protocol is not in the list — the pluggable Sampler and JSR223 scripting architecture is the documented extension path.
For setup, recording, and distributed execution details, the official site points to its Tutorials (Distributed Testing, Recording Tests, JUnit Sampler, Access Log Sampler, Extending JMeter) and the User Manual.