Hurl logo

Hurl

Run and test HTTP requests from a single fast CLI

Hurl lets you define HTTP calls in plain‑text files, chain them, capture data, assert responses, and generate CI‑friendly reports—all from a lightweight, single‑binary CLI.

Hurl banner

Overview

Overview

Hurl is a command‑line tool that executes HTTP requests described in simple plain‑text files. It supports chaining multiple calls, extracting values with XPath or JSONPath, and asserting on status codes, headers, body content, and performance metrics.

Who It's For

Designed for developers, QA engineers, and DevOps teams, Hurl fits into local development workflows and CI/CD pipelines. Its single‑binary distribution (built in Rust and powered by libcurl) requires no additional runtime, making installation trivial across Linux, macOS, and Windows.

Capabilities & Deployment

Write a .hurl file to describe any REST, SOAP, GraphQL, or HTML‑based API interaction. Run hurl file.hurl for a quick fetch or hurl --test file.hurl for test‑oriented output. Generate reports in text, JUnit, TAP, or HTML formats for seamless integration with build systems and test dashboards.

Highlights

Plain‑text request format with built‑in variable capture
Chaining of multiple HTTP calls in a single file
Rich assertions using XPath, JSONPath, status codes, headers, and performance metrics
Multiple report outputs: text, JUnit, TAP, HTML

Pros

  • Fast execution leveraging libcurl
  • Single binary – no runtime dependencies
  • Supports REST, SOAP, GraphQL, HTML, JSON, XML APIs
  • Easy integration into CI/CD pipelines

Considerations

  • No graphical interface for interactive debugging
  • Custom syntax may require a learning curve
  • Advanced scripting often needs external tools
  • Not a full‑featured API client like Postman

Managed products teams compare with

When teams consider Hurl, these hosted platforms usually appear on the same shortlist.

Apidog logo

Apidog

All-in-one API platform to design, debug, mock, and test with CI/CD

BlazeMeter logo

BlazeMeter

Continuous testing platform for performance, API, and functional testing at scale

Insomnia logo

Insomnia

Collaborative API development platform for building and testing APIs

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Automated API testing in continuous integration pipelines
  • Developers needing a lightweight request runner
  • QA engineers validating response contracts
  • DevOps scripting repetitive HTTP workflows

Not ideal when

  • Interactive exploratory testing that benefits from a UI
  • Complex multi‑step scenarios requiring visual debugging
  • Non‑technical users unfamiliar with command‑line tools
  • Projects that need built‑in mock server capabilities

How teams use it

CI pipeline validation

Run .hurl files during builds to ensure API endpoints return expected status codes and payloads, failing the pipeline on mismatches.

Token extraction and reuse

Capture CSRF or authentication tokens from an initial request and inject them into subsequent calls automatically.

Performance threshold testing

Assert that response times stay below defined limits, enabling early detection of latency regressions.

SOAP service verification

Send SOAP envelopes and assert on XML response content using XPath, ensuring legacy services behave correctly.

Tech snapshot

Rust81%
Python7%
Shell4%
PowerShell3%
HTML2%
Roff1%

Tags

testinghttpapi-testingclitesting-toolsintegration-testingcurlhttp-client

Frequently asked questions

How do I install Hurl?

Download the appropriate binary for your OS from the releases page or install via package managers such as Homebrew, Chocolatey, or Cargo.

What does a Hurl file look like?

A Hurl file is plain text where each request starts with the HTTP method and URL, followed by optional headers, body, captures, and asserts.

Can Hurl generate test reports?

Yes, use options like `--report html`, `--report junit`, or `--report tap` to produce CI‑compatible reports.

How does Hurl measure performance?

You can add an `duration < N` assert to a request, where N is the maximum allowed response time in milliseconds.

Is Hurl compatible with existing curl commands?

Hurl’s underlying engine is libcurl, so it supports the same protocols and features (IPv6, HTTP/3, etc.) while adding its own test syntax.

Project at a glance

Active
Stars
18,403
Watchers
18,403
Forks
702
LicenseApache-2.0
Repo age5 years old
Last commit5 hours ago
Primary languageRust

Last synced 45 minutes ago