---
title: "JMeter 3.3 Release Notes"
description: "Apache JMeter 3.3 release notes with 27 improvements and 36 bug fixes, plus upgrade notes from the official changelog."
url: https://docs.jmeter.ai/releases/3-3/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# JMeter 3.3 Release Notes

> **About these release notes**
> This page lists every documented change shipped in Apache JMeter 3.3, generated from the official changelog. For download and upgrade guidance, see [Download JMeter](/reference/download-jmeter/).

## Change summary

| Section | Changes |
| --- | --- |
| New and Noteworthy | 2 |
| Incompatible changes | 5 |
| Improvements | 25 |
| Bug fixes | 36 |
| Non-functional changes | 15 |

## New and Noteworthy

> **Note**
> JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in [Bug 61529](https://bz.apache.org/bugzilla/show_bug.cgi?id=61529).

> **Note**
> Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.

### Core improvements

HTTP Sampler now supports Brotli decompression.

CacheManager now completely supports Vary header.

InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.

![changes/3.3/influxdb_udp.png](/images/screenshots/changes/3.3/influxdb_udp.png)

It has also been enhanced to send number of errors by response code and message for each transaction

TCP Sampler now computes latency, see [Bug 60156](https://bz.apache.org/bugzilla/show_bug.cgi?id=60156)

Upgraded dependencies to last available versions bringing performance improvements and bug fixes

Continued to improve the quality of our code and tests coverage. See [Quality report](https://builds.apache.org/analysis/overview?id=12927)

### UX improvements

More work has been done to better support HiDPI.

Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.

The constant `DEFAULT_IMPLEMENTATION` was removed from CookieManager,
as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release

JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries.

![changes/3.3/jdbc_config_validation_driver_url.png](/images/screenshots/changes/3.3/jdbc_config_validation_driver_url.png)

![changes/3.3/jdbc_config_validation_query.png](/images/screenshots/changes/3.3/jdbc_config_validation_query.png)

If Controller and While Controller UX have been improved

![changes/3.3/jmeter_if_controller.png](/images/screenshots/changes/3.3/jmeter_if_controller.png)

### Report/Dashboard improvements

A new Help menu item has been added to simplify configuration of report generation.

![changes/3.3/jmeter_export_transactions_menu.png](/images/screenshots/changes/3.3/jmeter_export_transactions_menu.png)

![changes/3.3/jmeter_export_transactions_result.png](/images/screenshots/changes/3.3/jmeter_export_transactions_result.png)

### Documentation improvements

Incorporated feedback about unclear documentation.

### Functions

Function Helper Dialog: a new field that shows execution result has been added.

![changes/3.3/jmeter_function_result.png](/images/screenshots/changes/3.3/jmeter_function_result.png)

New functions:

- `[__timeShift](/functions/timeshift/)` - return a date in various formats with the specified amount of seconds/minutes/hours/days added.

![changes/3.3/jmeter_function_add_time.png](/images/screenshots/changes/3.3/jmeter_function_add_time.png)
- `[__RandomDate](/functions/randomdate/)` - generate random date within a specific date range.

![changes/3.3/jmeter_function_random_date.png](/images/screenshots/changes/3.3/jmeter_function_random_date.png)

## Incompatible changes

- In InfluxDbBackendListenerClient, `statut` property has been renamed to `status`
- In CookieManager, `DEFAULT_POLICY` and `DEFAULT_IMPLEMENTATION` constants are now private. :::note If you’re using `ignorecookies` with HC3CookieHandler (< JMeter 3.1)  configuration will be reset, ensure you put it back. :::
- JMeter will not truncate anymore by default responses exceeding 10 MB. If you want to enable this truncation, see property `httpsampler.max_bytes_to_store_per_request`
- `org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream)` has been deprecated in favor or org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream, SampleResult), ensure you update your implementation to be able to compute latency, see [Bug 60156](https://bz.apache.org/bugzilla/show_bug.cgi?id=60156)

#### Removed elements or functions

- `_StringFromFile` function has been dropped, use `[__StringFromFile](/functions/stringfromfile/)` instead

## Improvements

#### HTTP Samplers and Test Script Recorder

- [Bug 61056](https://bz.apache.org/bugzilla/show_bug.cgi?id=61056)HTTP : Support brotli decoding
- [Bug 61135](https://bz.apache.org/bugzilla/show_bug.cgi?id=61135)CookieManager : Drop Implementation select box and cleanup class
- [Bug 61492](https://bz.apache.org/bugzilla/show_bug.cgi?id=61492)HTTP(S) Test Script Recorder : Add the possibility to change the value of proxy.pause in the GUI

#### Other samplers

- [Bug 61320](https://bz.apache.org/bugzilla/show_bug.cgi?id=61320)Test Action : Set duration to `0` by default
- [Bug 61504](https://bz.apache.org/bugzilla/show_bug.cgi?id=61504)JDBC Connection Configuration : Set Max Number of Connections to `0` by default
- [Bug 61505](https://bz.apache.org/bugzilla/show_bug.cgi?id=61505)JDBC Connection Configuration : Set “Validation Query” to `empty` by default to use `isValid` method of JDBC driver
- [Bug 61506](https://bz.apache.org/bugzilla/show_bug.cgi?id=61506)JDBC Connection Configuration : Add a list for main databases validation queries for “Validation Query” attribute
- [Bug 61507](https://bz.apache.org/bugzilla/show_bug.cgi?id=61507)JDBC Connection Configuration : Add a list for main databases JDBC driver class name for “JDBC Driver class” attribute
- [Bug 61525](https://bz.apache.org/bugzilla/show_bug.cgi?id=61525)OS Process Sampler : Add browser button to Command and Working directory fields
- [Bug 60156](https://bz.apache.org/bugzilla/show_bug.cgi?id=60156)TCPSampler : Latency is not measured for TCP Sampler. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61039](https://bz.apache.org/bugzilla/show_bug.cgi?id=61039)CSV data set config : Add browser button to Filename field
- [Bug 61527](https://bz.apache.org/bugzilla/show_bug.cgi?id=61527)CSV data set config : Add a list for main file encoding values for File encoding attribute

#### Controllers

- [Bug 61131](https://bz.apache.org/bugzilla/show_bug.cgi?id=61131)IfController and WhileController : Improve UX

#### Listeners

- [Bug 61167](https://bz.apache.org/bugzilla/show_bug.cgi?id=61167)InfluxdbBackendListener : add number of errors by response code and message for each transaction
- [Bug 61068](https://bz.apache.org/bugzilla/show_bug.cgi?id=61068)Introduce property `resultcollector.action_if_file_exists` to control the popup “File already exists” when starting a test
- [Bug 61457](https://bz.apache.org/bugzilla/show_bug.cgi?id=61457)InfluxDB backend listener client : Support sending result to InfluxDB through UDP protocol. Partly based on [PR#302](https://github.com/apache/jmeter/pull/302) by Junlong Wu (github id mybreeze77)

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 61176](https://bz.apache.org/bugzilla/show_bug.cgi?id=61176)[PR#298](https://github.com/apache/jmeter/pull/298) Cache responses that have `vary` header in the `CacheManager`.

#### Functions

- [Bug 61040](https://bz.apache.org/bugzilla/show_bug.cgi?id=61040)Add a time shifting function
- [Bug 61126](https://bz.apache.org/bugzilla/show_bug.cgi?id=61126)Function Helper Dialog : Add a field that shows execution result
- [Bug 61508](https://bz.apache.org/bugzilla/show_bug.cgi?id=61508)Add a random date within a specific date range function

#### I18N

- [Bug 61509](https://bz.apache.org/bugzilla/show_bug.cgi?id=61509)Better label/translation/documentation for labels start and max for Counter element

#### Report / Dashboard

- [Bug 61481](https://bz.apache.org/bugzilla/show_bug.cgi?id=61481)Help Menu Item to export transaction for Web report

#### General

- When looking for classes in `ActionRouter`, fall back to location of the jar,        where `ActionRouter` is loaded from. Provided by Emilian Bold (emi at apache.org)
- [Bug 61510](https://bz.apache.org/bugzilla/show_bug.cgi?id=61510)Set ‘Max Number of Connections’ to `0` into ‘JDBC Connection Configuration’ for the ‘JDBC Load Test template’
- [Bug 61399](https://bz.apache.org/bugzilla/show_bug.cgi?id=61399)Make some bin and extras scripts Shellcheck compatible. Contributed by Wolfgang Wagner (internetwolf2000 at hotmail.com)

## Bug fixes

#### HTTP Samplers and Test Script Recorder

- [Bug 61384](https://bz.apache.org/bugzilla/show_bug.cgi?id=61384)Don’t set the charset on enclosing `multipart/form-data` header. It irritates some servers.      The charset was added sometime back while refactoring to use a newer API of http client.      See [Bug 56141](https://bz.apache.org/bugzilla/show_bug.cgi?id=56141) for more info.
- [Bug 61456](https://bz.apache.org/bugzilla/show_bug.cgi?id=61456)`java.lang.ArrayIndexOutOfBoundsException` when recording with JMeter and weird Basic Auth Authorization header
- [Bug 61395](https://bz.apache.org/bugzilla/show_bug.cgi?id=61395)Large server response truncation can impact recording

#### Other Samplers

- [Bug 60889](https://bz.apache.org/bugzilla/show_bug.cgi?id=60889)JMeter JDBC sample calls `SELECT USER()` when testing with MySQL JDBC due to `Connection#toString` call for response headers.
- [Bug 61259](https://bz.apache.org/bugzilla/show_bug.cgi?id=61259)JDBC Request : since JMeter 3.0, when JDBC auto-commit is `false`, a rollback statement happens each time a Request is executed. Partly contributed by Liu XP (liu_xp2003 at sina.com)
- [Bug 61319](https://bz.apache.org/bugzilla/show_bug.cgi?id=61319)Fix regression: SMTP Sampler could not send mails, when no attachments were specified.

#### Controllers

- [Bug 61375](https://bz.apache.org/bugzilla/show_bug.cgi?id=61375)Use system DNS resolver as last resort, when resolving entries in the static host table.

#### Listeners

- [Bug 61005](https://bz.apache.org/bugzilla/show_bug.cgi?id=61005)View Results Tree - Browser Response Data is not clearing
- [Bug 61121](https://bz.apache.org/bugzilla/show_bug.cgi?id=61121)InfluxdbBackendListenerClient: Only all percentiles are sent, not `KO` and `OK`
- [Bug 60961](https://bz.apache.org/bugzilla/show_bug.cgi?id=60961)Try to keep status of selected and expanded elements in View Results Tree when new elements are added.
- [Bug 61198](https://bz.apache.org/bugzilla/show_bug.cgi?id=61198)Backend Listener does not work properly in main script when included scripts also contain Backend Listener
- [Bug 61493](https://bz.apache.org/bugzilla/show_bug.cgi?id=61493)Max/Min threads are interchanged in Graphite and InfluxDB backend listener

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 58743](https://bz.apache.org/bugzilla/show_bug.cgi?id=58743)[PR#293](https://github.com/apache/jmeter/pull/293) TableEditor can’t be saved, when using two or more instances. Bugfix provided by Emilian Bold (emi at apache.org)
- [Bug 61314](https://bz.apache.org/bugzilla/show_bug.cgi?id=61314)HTTP URL Re-writing Modifier doesn’t replace existing `jsessionid` in http sampler, but adds it to the end
- [Bug 61336](https://bz.apache.org/bugzilla/show_bug.cgi?id=61336)BeanShell Assertion : mistake in Chinese translation

#### Functions

- [Bug 61258](https://bz.apache.org/bugzilla/show_bug.cgi?id=61258)StringFromFile function is mentioned twice in the Function helper dialog
- [Bug 61260](https://bz.apache.org/bugzilla/show_bug.cgi?id=61260)`[__XPath](/functions/xpath/)` function returns null despite XPath checker founds matches
- [Bug 58876](https://bz.apache.org/bugzilla/show_bug.cgi?id=58876)TestPlanName function returns `null` for a newly saved Test Plan and uses previously opened one for a new one

#### I18N

#### Report / Dashboard

- [Bug 61129](https://bz.apache.org/bugzilla/show_bug.cgi?id=61129)Report/Dashboard : If response code is empty but a `failureMessage` is present, Errors and Top 5 Errors are not accurate. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61151](https://bz.apache.org/bugzilla/show_bug.cgi?id=61151)Report/Dashboard : Top 5 Errors by Sampler and Errors : If assertion contains html code, the html part is hidden

#### General

- [Bug 60743](https://bz.apache.org/bugzilla/show_bug.cgi?id=60743)Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446, fixed by HttpCore upgrade to 4.4.7
- [Bug 60994](https://bz.apache.org/bugzilla/show_bug.cgi?id=60994)Fix some typo in comments or log messages. [PR#289](https://github.com/apache/jmeter/pull/289) and [PR#290](https://github.com/apache/jmeter/pull/290)
- [Bug 61011](https://bz.apache.org/bugzilla/show_bug.cgi?id=61011)Replace occurrences count is not correct (Path and Host replacement are counted twice)
- [Bug 61026](https://bz.apache.org/bugzilla/show_bug.cgi?id=61026)Cannot run program “keytool”: CreateProcess error=2 when starting JMeter 3.2 in GUI mode
- [Bug 61054](https://bz.apache.org/bugzilla/show_bug.cgi?id=61054)Endless loop in `JOrphanUtils#replaceAllWithRegex` when regex is contained in replacement
- [Bug 60995](https://bz.apache.org/bugzilla/show_bug.cgi?id=60995)HTTP Test Script Recorder: Port field is very small under some L&F
- [Bug 61073](https://bz.apache.org/bugzilla/show_bug.cgi?id=61073)HTTP(S) Test Script Recorder panel have some fields with bad size on HiDPI screen or GTK+ L&F on Linux/XWayland
- [Bug 57958](https://bz.apache.org/bugzilla/show_bug.cgi?id=57958)Fix transaction sample not generated if thread stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
- [Bug 61050](https://bz.apache.org/bugzilla/show_bug.cgi?id=61050)Handle uninitialized RessourceBundle more gracefully, when calling `JMeterUtils#getResString`.
- [Bug 61100](https://bz.apache.org/bugzilla/show_bug.cgi?id=61100)Invalid GC Log Filename on Windows
- [Bug 57962](https://bz.apache.org/bugzilla/show_bug.cgi?id=57962)Allow to use variables (from User Defined Variables only) in all listeners in worker node mode
- [Bug 61270](https://bz.apache.org/bugzilla/show_bug.cgi?id=61270)Fixed width fonts too small in text areas to read under HiDPI (user manual bug)
- [Bug 61292](https://bz.apache.org/bugzilla/show_bug.cgi?id=61292)Make processing of samples in reporter more robust.
- [Bug 61359](https://bz.apache.org/bugzilla/show_bug.cgi?id=61359)When cutting an element from Tree, Test plan is not marked as dirty
- [Bug 61380](https://bz.apache.org/bugzilla/show_bug.cgi?id=61380)JMeter shutdown using timers releases thundering herd of interrupted samplers
- [Bug 57055](https://bz.apache.org/bugzilla/show_bug.cgi?id=57055)CheckDirty.doAction should clear previousGuiItems for `SUB_TREE_SAVED`

## Non-functional changes

- Updated to groovy 2.4.12 (from 2.4.10)
- Updated to caffeine 2.5.5 (from 2.4.0)
- Updated to commons-jexl3 3.1 (from 3.0)
- Updated to ph-css 5.0.4 (from 5.0.3)
- Updated to ph-commons 8.6.6 (from 8.6.0)
- Updated to log4j2 2.8.2 (from 2.8.1)
- Updated to xmlgraphics-commons 2.2 (from 2.1)
- Updated to jodd 3.8.6 (from 3.8.1)
- Updated to xstream 1.4.10 (from 1.4.9)
- Updated to Apache Tika 1.16 (from 1.14)
- Updated to jsoup-1.10.3 (from 1.10.2)
- Updated to commons-lang3 3.6 (from 3.5)
- Updated to json-path 2.4.0 (from 2.2.0)
- Updated to httpcore 4.4.7 (from 4.4.6)
- [Bug 61438](https://bz.apache.org/bugzilla/show_bug.cgi?id=61438)Change the cryptographic signature of packages from sha-1 to sha-512

## Thanks

We thank all contributors mentioned in bug and improvement sections above:

- Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)
- Anthony Kearns (anthony.kearns atrightside.co)
- Emilian Bold (emi at apache.org)
- Liu XP (liu_xp2003 at sina.com)
- [Ubik Load Pack](http://ubikloadpack.com)
- Wolfgang Wagner (internetwolf2000 at hotmail.com)
- Junlong Wu (github id mybreeze77)

We also thank bug reporters who helped us improve JMeter.

For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:

- Liu XP (liu_xp2003 at sina.com)
- Alexander Podelko (apodelko at yahoo.com)

Apologies if we have omitted anyone else.

## Useful links

- [Download JMeter](/reference/download-jmeter/)
- [Getting started guide](/getting-started/get-started/)
- [All release notes](/releases/)
- [Current changes page](/user-manual/changes/)
- [History of previous changes](/user-manual/changes-history/)
