Hurl is a command-line tool for executing HTTP requests described in plain-text files. It is designed for both retrieving data and testing web services, allowing multiple requests and expected responses to be described in a readable format.
Requests can be chained together to represent complete HTTP sessions. Values extracted from earlier responses can be reused in subsequent requests, making Hurl suitable for authentication workflows, API integration tests and other operations that depend on multiple exchanges.
The software includes assertions for checking status codes, response headers and body content. This enables developers to describe expected behaviour alongside the corresponding requests, making test cases easy to review and maintain.
Hurl uses libcurl for HTTP transfers and supports common web technologies including JSON, XML, HTML, REST APIs, SOAP and GraphQL. It can run locally or form part of an automated testing workflow.
This is free and open source software.
Key Features
- Defines HTTP requests and expected responses in plain-text files.
- Supports chained requests within a single test scenario.
- Captures values from responses for reuse in later requests.
- Provides assertions for HTTP status codes and response headers.
- Supports JSONPath queries for JSON response validation.
- Supports XPath queries for XML and HTML responses.
- Allows regular expressions in response assertions.
- Handles JSON, XML, HTML, REST, SOAP and GraphQL services.
- Supports cookies, sessions and authentication workflows.
- Offers configurable request variables and dynamic values.
- Can execute multiple test files in a single invocation.
- Provides detailed error reporting for failed assertions.
- Supports automated test reports and structured output.
- Uses libcurl for network transfers and TLS handling.
- Can retrieve response data without requiring test assertions.
- Cross-platform support – runs on Linux, macOS, and Windows.
Website: github.com/Orange-OpenSource/hurl
Support:
Developer: Jean-Christophe Amiel, Fabrice Reix, Filipe Pinto and contributors
License: Apache License 2.0

hurl is written in Rust. Learn Rust with our recommended free books and free tutorials
Related Software
| Alternatives to curl | |
|---|---|
| Wget2 | Successor of Wget |
| Wget | Makes retrieving large files or mirroring entire web or FTP sites easy |
| aria2 | Multi-protocol and multi-source command-line download utility |
| HTTPie | HTTP client with an intuitive user interface |
| curlie | The power of curl, the ease of use of httpie |
| xh | Fast and friendly tool for sending HTTP requests |
| hurl | Run and test HTTP requests with plain text |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently |
| getparty | HTTP download manager with multi-parts |
| Restish | CLI for interacting with REST-ish HTTP APIs |
| Posting | Terminal-based HTTP client for developing and testing APIs |
| Slumber | Terminal-based HTTP client |
| Alternatives to Wget | |
|---|---|
| Wget2 | Successor of Wget |
| curl | Tool and library for transferring data with URLs |
| aria2 | Multi-protocol and multi-source command-line download utility |
| HTTPie | HTTP client with an intuitive user interface |
| curlie | The power of curl, the ease of use of httpie |
| xh | Fast and friendly tool for sending HTTP requests |
| hurl | Run and test HTTP requests with plain text |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently |
| getparty | HTTP download manager with multi-parts |
| Surge | Download manager built in Go |
| aria2tui | TUI client for the aria2c download utility |
| gosh-dl-cli | Modern command-line download manager built on top of the gosh-dl engine |
| Axel | Lightweight CLI download accelerator |
| Command line HTTP clients | |
|---|---|
| HTTPie | Command line interface, cURL-like tool for humans |
| aria2 | Multi-protocol and multi-source command-line download utility |
| Wget2 | Successor of Wget |
| Posting | Terminal-based HTTP client for developing and testing APIs |
| hurl | Run and test HTTP requests with plain text |
| curl | Command line tool for transferring data with URL syntax. Transfer library too |
| axel | Command-line download accelerator |
| xh | Fast and friendly tool for sending HTTP requests |
| Wget | Retrieves content from web servers |
| Restish | CLI for interacting with REST-ish HTTP APIs |
| curlie | The power of curl, the ease of use of httpie |
| Slumber | Terminal-based HTTP client |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently. |
| getparty | HTTP download manager with multi-parts |
Read our verdict in the software roundup.
LinuxLinks helps you discover the best free and open source software for Linux. Explore our extensive collection of recommended applications, including alternatives to popular proprietary software.We also publish software reviews, Linux tutorials, hardware reviews, free programming books and articles covering the wider open source community. Browse our Linux resources to discover more. Know a useful free and open source Linux application we haven't covered? Suggest a program for inclusion. Has your software been featured on LinuxLinks? Display one of our Featured on LinuxLinks badges on your website or GitHub README. |


Please read our Comment Policy before commenting.