Pulse is a general purpose, cross-platform, performance-oriented, command-line utility for testing HTTP endpoints. Pulse was inspired by Bombardier, but is designed to be configured, have native support for proxies, and suited for heavier and more frequent workflows.
- JSON based request configuration
- Proxy support
- Configurable concurrency via max connection limits and optional per-request delays
- Supports all HTTP methods
- Supports Headers
- Support Content-Type and Body for POST, PUT, PATCH, and DELETE
- Custom HTML generated outputs for easy inspection
- Structured output toggle (PlainText or JSON) for terminals, scripts, and LLMs
- Format JSON outputs
- Captures all response headers for debugging
- Quiet mode to silence progress noise when piping or scripting
- Reports peak concurrent connections and throughput in the summary output
And more!
Pulse comes in a pre-build self-contained binary, which can be downloaded from the releases page.
Pulse reads the JSON input and outputs the results respective to the working path, which means that Pulse can be added to path and used anywhere.
Pulse configuration.jsonDuring the execution, Pulse displays current metrics such as progress, success rate, ETA, and counts of responses from each of the 6 categories, i.e, 1xx, 2xx, 3xx, 4xx, 5xx, others. where others is essentially exceptions.
After the execution (different configuration in this example), Pulse produces a detailed summary of the results, including the peak concurrent connections reached and overall throughput.
The configuration file is a JSON file that contains proxy information and the request details.
It is recommended to use the built-in get-sample command to generate a sample configuration file.
Pulse get-sampleThis will generate a sample.json file in the current directory.
The sample.json file contains the following:
{
"Proxy": {
"Bypass": true,
"IgnoreSSL": false,
"Host": "",
"Username": "",
"Password": ""
},
"Request": {
"Url": "https://ipinfo.io/geo",
"Method": {
"Method": "GET"
},
"Headers": {},
"Content": {
"ContentType": "",
"Body": null
}
}
}Proxy contains the configuration that would be used for the HTTP client.
By default the proxy parameters are set to empty, and the proxy is set to bypass (which means use defaults of the OS).
Bypass- can be set totrueeven if the proxy parameters are not empty, to make AB testing easier.Host- can be used alone, or in combination withUsernameandPasswordto specify the proxy host.- The credentials (i.e
UsernameandPassword) will only be used if both are specified.
Request contains the configuration for the request.
Url- the URL of the request.Method- the HTTP method of the request.Headers- the headers of the request. Can benullor aJSONobject.
Content contains the configuration for the request content. Which is only used for POST, PUT, PATCH, and DELETE requests.
ContentType- the content type of the request content, if empty will default toapplication/json.Body- the body of the request content,nullor any type of object includingJSON. If set tonullit will not be attached to the request.
Pulse has a wide range of options that can be configured in the command line, and can be viewed with help or --help which shows this:
Usage: [command] [arguments...] [options...] [-h|--help] [--version]
Pulse - A hyper fast general purpose HTTP request tester
Arguments:
[0] <string> Path to .json request details file (use "get-sample" if you don't have one)
Options:
--json Try to format response content as JSON
--raw Export raw results (without wrapping in custom HTML)
-f, --full-equality Use full equality (slower)
--no-export Don't export results
--no-op Print selected configuration but don't run
-o, --output <string> Output folder [Default: @"results"]
-d, --delay <int> Delay in milliseconds between requests [Default: -1]
-c, --connections <int?> Maximum number of parallel requests [Default: null]
-u, --url <string?> Override the url of the request [Default: null]
-n, --number <int> Number of total requests [Default: 1]
-t, --timeout <int> Timeout in milliseconds [Default: -1]
--output-format <OutputFormat> Select output format [Default: PlainText]
--quiet Suppress progress output on stderr (only fatal errors will be shown).
Commands:
check-for-updates Checks whether there is a new version out on GitHub releases.
cli-schema Returns the usage schema for the app in JSON format.
get-sample Generate sample request file.
get-schema Generate a json schema for a request file.
info Displays information about this app.
terms-of-use Print the terms of use.
--json- try to format response content as JSON.--raw- export raw results without custom HTML; can be combined with--json.--output-format PlainText|JSON(global) - choose human-readable console output or structured JSON for automation/LLMs.--quiet(global) - suppress progress updates on stderr; only fatal errors remain. Useful when piping tojqor when stderr/stdout are merged.-f|--full-equality- enforce full response equality checks instead of length-based comparisons.--no-op- print the parsed configuration without running any requests.-c|--connections- cap parallel requests; set to1for sequential execution. When omitted, it defaults to the request count (--number).-d|--delay- add a delay (ms) after each request completes; useful when--connectionsis1.-u|--url- override the request URL while keeping the rest of the configuration unchanged.-o|--output- choose a custom output directory (defaults toresults).-n|--numberand-t|--timeout- control how many requests run and the per-request timeout (ms).
By using Pulse you agree to take full responsibility for the consequences of its use.
Usage of this tool for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. The developers assume no liability and are not responsible for any misuse or damage caused by this program.
- Errors, and features can be reported on the issues page.
- Sensitive bug reports can also be sent to
dusrdev@gmail.com. - Discussions can be found on the discussions page.
- If anyone wants to contribute, feel free to fork the project and open a pull request.
This project is proudly made in Israel 🇮🇱 for the benefit of mankind.

