gitwtfhub

wtf is hurl?

orange-opensource/hurl — explained in plain English

Analysis updated 2026-05-18

18,901RustAudience · developerComplexity · 2/5LicenseSetup · easy

TL;DR

Command-line tool for testing HTTP APIs using plain-text request files with built-in assertions and response validation.

Mindmap

mindmap
  root((Hurl))
    What it does
      Run HTTP requests
      Validate responses
      Chain requests
      Capture values
    Use cases
      API debugging
      Integration testing
      CI/CD pipelines
    Tech stack
      Rust
      libcurl
      Single binary
    Supported formats
      REST APIs
      GraphQL
      SOAP
      JSON assertions
    Output formats
      JUnit reports
      HTML reports
      TAP format
      JSON format

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Debug and explore REST APIs interactively from the command line without writing code.

REASON 2

Automate integration tests in CI/CD pipelines to verify API responses and behavior before deployment.

REASON 3

Chain multiple HTTP requests together, capturing session tokens or data from one response to use in the next.

REASON 4

Generate test reports in JUnit, HTML, or JSON format for API test results and coverage tracking.

What's in the stack?

RustlibcurlHTTP/RESTGraphQLSOAP

How it stacks up

orange-opensource/hurlfacebook/relaytursodatabase/turso
Stars18,90118,93818,754
LanguageRustRustRust
Setup difficultyeasyhardmoderate
Complexity2/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min
Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

Wtf does this do

Hurl is a command-line tool for running HTTP requests and testing HTTP responses, using simple plain-text files to define what requests to make and what results to expect. HTTP requests are how web browsers and apps communicate with servers, Hurl lets you script and automate that communication from the command line without writing code. The core workflow: you write a .hurl file describing a sequence of HTTP requests (GET, POST, etc.) along with assertions, checks like "the response status should be 200" or "this JSON field should equal 'RUNNING'". You can also capture values from one response and use them in the next request, which is essential for things like logging in (capturing a session token) before accessing protected pages. It supports REST APIs, GraphQL, SOAP, HTML content, and raw binary data. You would use Hurl in two main scenarios: manually exploring or debugging an API without writing code, and automated integration testing, running it in a CI/CD pipeline (the automated system that checks code before it ships) to verify your API behaves correctly. It generates test reports in JUnit, HTML, TAP, and JSON formats. Under the hood it's powered by libcurl, the same library that powers the curl command-line tool. Written in Rust, it's a single binary with no runtime dependencies needed.

Yoink these prompts

Prompt 1
Show me how to write a .hurl file that logs in via POST, captures a session token, then uses it to fetch protected data.
Prompt 2
How do I set up Hurl to run automated API tests in my GitHub Actions CI/CD pipeline and generate JUnit reports?
Prompt 3
Create a Hurl script that tests a GraphQL endpoint, validates the response JSON structure, and checks for specific field values.
Prompt 4
How do I use Hurl to debug a REST API by making requests and asserting that status codes and response headers match expectations?
Prompt 5
Show me how to chain multiple HTTP requests in Hurl where each request depends on data captured from the previous response.

Frequently asked questions

wtf is hurl?

Command-line tool for testing HTTP APIs using plain-text request files with built-in assertions and response validation.

What language is hurl written in?

Mainly Rust. The stack also includes Rust, libcurl, HTTP/REST.

What license does hurl use?

Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

How hard is hurl to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is hurl for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.