xh
What it is
xh is a free command-line tool for sending HTTP requests, with a focus on performance. It uses HTTPie's request-item syntax to set headers, bodies, and query strings. Request bodies can use JSON, form data, multipart content, or raw data, and can be read from standard input or a file. For responses, xh can format output for readability, show selected headers or the body, and save or download results to a file. Authentication options include basic, bearer, and digest methods. The README lists HTTP/2 support, and the current Cargo manifest includes an optional HTTP/3 feature. A --curl option converts a request into a curl command. The tool also offers TLS version selection, certificate verification configuration, and client-side certificates. It can use HTTPie compatibility mode when invoked as http or https, or when XH_HTTPIE_COMPAT_MODE is set. Prebuilt binaries are provided for Linux, macOS, and Windows, with package-manager installation instructions for those systems and Android. xh is distributed under the MIT License. Its README notes that it does not implement every HTTPie feature, has no plugin system, and has less extensive documentation than HTTPie.
For and against
For
- Supports JSON, form, multipart, and raw request bodies.
- Offers basic, bearer, and digest authentication.
- Can save or download response output.
- Provides prebuilt binaries for Linux, macOS, and Windows.
- Distributed under the MIT License.
Against
- Not all HTTPie features are implemented.
- There is no plugin system.
- The README says its documentation is worse than HTTPie's.
The verdict
xh covers common HTTP request and response workflows from the command line, with several authentication and TLS controls. The stated feature gaps, lack of plugins, and documentation limitation are worth considering before choosing it.
Who it suits
xh suits command-line users who want to send HTTP requests and control request bodies, authentication, or response output. Its compatibility mode may also suit users working with HTTPie-style commands.
Plans and prices
xh
Open-source command-line HTTP client
Read 7 Oct 2026 · github.com
On the record
- API and SDKs
- xh is a standalone command-line API client; the project documents no language SDK or embeddable public API.github.com · read 15 Oct 2026
- Authentication
- Basic, bearer and digest authentication are supported, along with .netrc credentials.github.com · read 15 Oct 2026
- Build requirement
- Building from Cargo requires Rust 1.85 or later.github.com · read 15 Oct 2026
- Compatibility
- xh can run in HTTPie compatibility mode when invoked as http or https, or when XH_HTTPIE_COMPAT_MODE is set.github.com · read 7 Oct 2026
- Curl conversion
- The --curl option prints an equivalent curl command instead of sending the request.man.archlinux.org · read 15 Oct 2026
- Debian availability
- Debian trixie carries xh 0.24.0-1 in its utils section and describes it as an ergonomic HTTPie-inspired frontend focused on performance.packages.debian.org · read 15 Oct 2026
- Documentation
- Documentation consists of a README, FAQ, generated/manual pages, examples and a changelog, and the project itself describes its documentation as worse than HTTPie’s.github.com · read 15 Oct 2026
- Downloads
- The client can save response bodies to files and resume interrupted downloads.clis.dev · read 15 Oct 2026
- Extensibility
- The README states that xh has no plugin system.github.com · read 15 Oct 2026
- Form and multipart data
- xh can submit URL-encoded form fields or force multipart/form-data requests, including file uploads.github.com · read 15 Oct 2026
- HTTPie compatibility
- The tool accepts HTTPie-style request-item syntax for headers, query parameters, JSON fields, forms and file uploads.github.com · read 15 Oct 2026
- HTTP versions
- The command supports HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/2 prior knowledge and experimental HTTP/3 modes.github.com · read 15 Oct 2026
- Independent package availability
- Homebrew provides xh 0.26.2 bottles for Apple Silicon, Intel macOS and Linux ARM64 or x86_64.formulae.brew.sh · read 15 Oct 2026
- Independent package metadata
- Arch Linux packages xh 0.26.2-1 for x86_64 under the MIT license, with a 3.1 MB package and 9.6 MB installed size.archlinux.org · read 15 Oct 2026
- Installation
- The project provides prebuilt binaries for Linux, macOS, and Windows, plus package-manager installation instructions for those and Android.github.com · read 7 Oct 2026
- Installation platforms
- Official installation instructions cover Linux, macOS, Windows, Android through Termux or root managers, FreeBSD, NetBSD and multiple package managers.github.com · read 15 Oct 2026
- Integrations
- xh can translate a request into a curl command with its --curl flag.github.com · read 7 Oct 2026
- JSON requests
- Command-line data defaults to a JSON object, with literal JSON values supported through the := syntax.man.archlinux.org · read 15 Oct 2026
The review
xh is a free command-line HTTP client built for sending requests and inspecting responses. It suits developers who prefer terminal workflows and HTTPie-style request syntax. Its common request, authentication and TLS controls make it capable for routine API work, though its feature gaps and weaker documentation limit it as a full HTTPie replacement.
Overview
xh focuses on performance while keeping a compact syntax for setting headers, bodies and query strings. That makes it a practical fit for developers who want to build and inspect requests without leaving the command line. It is MIT-licensed and offers prebuilt binaries for Linux, macOS and Windows, with package-manager instructions also covering Android.
HTTPie compatibility mode can help users preserve familiar invocation patterns: xh enables it when called as http or https, or when XH_HTTPIE_COMPAT_MODE is set. Compatibility has limits, however. The project does not implement every HTTPie feature, offers no plugin system and has less complete documentation.
Key features
Request bodies can be JSON, form data, multipart or raw data, and can be read from standard input or a file. This range supports quick manual API calls as well as requests assembled in shell workflows. Responses can be pretty-printed, narrowed to headers or body, and saved or downloaded to a file, giving users control over whether they inspect output in the terminal or retain it.
Basic, bearer and digest authentication cover several common access patterns. TLS options include version selection, certificate-verification configuration and client-side certificates, which matter when a service requires specific connection or certificate settings. The README describes HTTP/2 support, and the Cargo manifest has an optional HTTP/3 feature.
The --curl flag translates a request into a curl command. That is useful when a request needs to be carried into a workflow built around curl. It does not make up for missing HTTPie features or plugins.
Pricing
xh is free: its open-source plan costs nothing. There is no paid plan described. The free offering is the full stated option, so cost is not a barrier to trying it; the practical trade-off is accepting the project's feature and documentation limits.
Platforms
xh supports Android, Linux, macOS and Windows. Prebuilt binaries are provided for Linux, macOS and Windows, and package-manager installation instructions cover those platforms and Android. This gives terminal users on those systems a route to install it, though the stated binary availability does not extend to Android.
Who it's for
xh is best suited to developers who make HTTP requests from a terminal, want HTTPie-style syntax, and need common body formats, response handling or authentication options without a software cost. Its TLS controls also make it a reasonable choice when requests need client certificates or configurable certificate verification.
Users who depend on a complete HTTPie feature set, extensions, or more thorough guidance should be cautious about switching. The compatibility mode offers a familiar entry point, but does not remove those limitations.
Pros and cons
- Pros: Broad request-body support, including multipart and input from files or standard input, suits both direct calls and shell-based workflows.
- Pros: Response selection and file saving help when output needs to be narrowed or retained.
- Pros: Basic, bearer and digest authentication plus TLS controls cover common credential and certificate needs.
- Pros: Free, MIT-licensed distribution and support for four platforms make it accessible across common development environments.
- Cons: Missing HTTPie features can interrupt workflows that rely on behavior xh has not implemented.
- Cons: No plugin system rules out extending xh through plugins.
- Cons: Documentation that is weaker than HTTPie's may make less familiar workflows harder to learn.
Alternatives
For a broader directory of command-line and other API request tools, browse API clients. xh is the more specific fit when a free terminal client with HTTPie-style syntax and the stated request controls meets the need.
The alternatives supplied alongside xh focus on learning record stores rather than HTTP requests. Choose Cluelabs LRS, itslearning, GrassBlade LRS, Instancy Learning Record Store, Veracity Learning, ADL Open Source LRS, Jupiter or Mosra when you are evaluating a learning record store instead. The Learning Record Store Software directory can help compare that category; Event Lead Capture Software and Exhibitor Management Software cover other software categories.
Verdict
Choose xh if you want a free command-line HTTP client with HTTPie-style request construction, useful response controls and several authentication and TLS options. Look elsewhere if your work depends on HTTPie's full feature set, plugins or stronger documentation.