Skip to content

jmeter-cli-editor

jmeter-cli-editor is a terminal UI (TUI) editor for JMeter .jmx test plan files. Edit thread groups, HTTP samplers, extractors, assertions, and CSV data sets without launching the JMeter GUI.

Price
£59 one-time (launch price: £29 for first 50 sales)

Platform: Linux x86_64, Windows x86_64

  • CI/CD environments: No display server required. Edit JMX files on headless build agents.
  • Speed: Open a 2,000-element test plan in under a second. The JMeter GUI takes 30+ seconds.
  • Remote editing: Edit over SSH without X forwarding.
  • Scripting: Automate changes with the --set flag (non-interactive mode).
Terminal window
chmod +x jmeter-cli-editor
sudo mv jmeter-cli-editor /usr/local/bin/
jmeter-cli-editor --version
Terminal window
jmeter-cli-editor my-test.jmx
KeyAction
↑ / ↓ or j / kNavigate elements
EnterExpand / edit element
eEdit current element’s properties
nNew element (child of current)
dDelete element
cCopy element
pPaste element
/Search elements by name or type
sSave (writes to original file)
SSave As (prompt for new filename)
uUndo
rRedo
qQuit (prompts if unsaved changes)
?Help

The left panel shows the test plan tree. Element types are colour-coded:

  • Thread Groups — blue
  • Samplers — green
  • Controllers — yellow
  • Extractors / Post-processors — cyan
  • Assertions — red
  • Listeners — grey (highlighted if active)
  • Config elements — magenta

Press e on any element to open the property editor. For an HTTP Sampler:

Name: [Login Request ]
Protocol: [https ]
Server: [${TARGET_HOST} ]
Port: [443 ]
Path: [/api/auth/login ]
Method: [POST ▼ ]
Body Data: [{"username":"${user}", ]
[ "password":"${pass}"} ]

Tab between fields. Ctrl+S saves and closes the editor.

For scripted changes without the TUI:

Terminal window
# Change thread count in all Thread Groups
jmeter-cli-editor my-test.jmx \
--set "ThreadGroup.num_threads=100"
# Change server name across all HTTP Samplers
jmeter-cli-editor my-test.jmx \
--set "HTTPSampler.domain=staging.example.com"
# Set multiple properties
jmeter-cli-editor my-test.jmx \
--set "ThreadGroup.num_threads=50" \
--set "ThreadGroup.ramp_time=60"

This is idiomatic for CI/CD parameterisation:

ci-perf.sh
jmeter-cli-editor test.jmx \
--set "HTTPSampler.domain=${TARGET_HOST}" \
--set "ThreadGroup.num_threads=${VUS}" \
--set "ThreadGroup.duration=${DURATION_SECONDS}"
jmeter -n -t test.jmx -l results.jtl

View all properties of an element without editing:

Terminal window
jmeter-cli-editor my-test.jmx --inspect "Login Request"

Output:

Element: Login Request (HTTPSamplerProxy)
HTTPSampler.domain = ${TARGET_HOST}
HTTPSampler.port = 443
HTTPSampler.protocol = https
HTTPSampler.path = /api/auth/login
HTTPSampler.method = POST
...
Terminal window
export JMETER_CLI_EDITOR_LICENSE=your-license-key
# or
jmeter-cli-editor --license your-key my-test.jmx