For a lightweight HTTP client for TypeScript, the strongest matches are unjs/ofetch (ofetch is a robust, TypeScript-first HTTP client that natively), elbywan/wretch (Wretch is a robust, TypeScript-native HTTP client that provides) and sindresorhus/ky (Ky is a lightweight, type-safe HTTP client built on). bitinn/node-fetch and mzabriskie/axios round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
We curate open-source GitHub repositories matching “best typescript http client libraries”. Results are ranked by relevance to your query — pick filters below to narrow, or refine with AI.
ofetch is an HTTP client built on the native fetch API that adds automatic JSON serialization, request/response interceptors, configurable retry, and timeout handling. It provides descriptive error objects for non-OK responses and automatically parses response bodies based on their content type. The client supports creating pre-configured instances with preset base URLs, headers, and default options, enabling consistent configuration across a project. It offers full TypeScript type inference for response data and request payloads, and allows extending request options with custom properties wh
ofetch is a robust, TypeScript-first HTTP client that natively supports all requested features, including interceptors, automatic JSON parsing, retry mechanisms, and cancellation via the fetch API.
Wretch is a chainable HTTP client library and Fetch API wrapper designed to simplify network request configuration, response parsing, and error handling. It functions as a network request manager and middleware framework for managing the end-to-end lifecycle of HTTP calls. The project is distinguished by a fluent interface for request configuration and a modular extension system. It utilizes a programmable response resolver to automate parsing and a plugin-based architecture to add new capabilities to request and response objects. The library covers a broad range of operational capabilities,
Wretch is a robust, TypeScript-native HTTP client that provides a fluent API for request management, featuring built-in support for interceptors, automatic parsing, retries, and isomorphic execution via the Fetch API.
🌳 Tiny & elegant JavaScript HTTP client based on the Fetch API
Ky is a lightweight, type-safe HTTP client built on the Fetch API that provides first-class TypeScript support, automatic JSON parsing, interceptors, and built-in retry and cancellation mechanisms.
node-fetch is a lightweight HTTP client library that implements the browser-standard Fetch API for Node.js. It provides a promise-based interface for making asynchronous network requests to retrieve or send data from server-side environments. The project specializes in memory-efficient data handling by utilizing request and response streaming. This allows for the incremental processing of large network payloads through native system streams to prevent memory exhaustion. The library covers a broad range of networking capabilities, including the use of custom HTTP agents for DNS and SSL config
This library provides a standard-compliant Fetch implementation for Node.js that supports request cancellation and streaming, though it lacks built-in features like automatic JSON parsing or retry mechanisms found in more comprehensive clients.
Axios is a promise-based HTTP client used to make asynchronous network requests in both browser and Node.js environments. It functions as a multi-environment network adapter that abstracts the transport layer to ensure consistent behavior across different runtimes. The project distinguishes itself through a request lifecycle management system that allows for the cancellation of active requests, the setting of timeouts, and the monitoring of upload and download transfer progress. It includes a mechanism for intercepting network traffic, enabling the transformation of outgoing requests and inco
Axios is a widely-used, isomorphic HTTP client that provides robust support for interceptors, request cancellation, and automatic JSON parsing, though it is written in JavaScript rather than being a native TypeScript-first library.
node-fetch is a promise-based HTTP client library that provides a lightweight implementation of the Fetch API for the Node.js runtime. It serves as a network interface for performing asynchronous HTTP requests, handling server communication, and managing headers. The library utilizes a promise-based request lifecycle to wrap network calls, ensuring asynchronous behavior. It incorporates stream-based handling for both requests and responses to process large payloads efficiently without overloading system memory. Its capabilities cover a broad range of network communication tasks, including th
This is a lightweight, promise-based HTTP client that provides a standard Fetch API implementation for Node.js, offering essential features like request cancellation and stream handling, though it lacks built-in retry mechanisms and native TypeScript-first type safety compared to more modern alternatives.
Got is a promise-based HTTP request library for Node.js that supports HTTP/2 and streaming. It provides a system for making network requests with a focus on asynchronous control flow and type-safe API client development. The library is distinguished by its middleware-based request lifecycle, which uses interceptors and plugins to modify request options and response data. It includes a configurable automatic retry mechanism with backoff strategies, a built-in HTTP response cache, and a cookie-jar system for maintaining persistent sessions. Broad capabilities cover data handling through duplex
Got is a robust, type-safe HTTP client library that provides advanced features like interceptors, automatic retries, and streaming, though it is specifically designed for Node.js environments rather than being isomorphic.
Axios is an isomorphic, promise-based HTTP client designed for making asynchronous network requests across different JavaScript execution environments, including the browser and Node.js. It functions as a JSON API client that serializes JavaScript objects into JSON and parses server responses into structured data. The project features a system for managing reusable client instances with shared configurations, such as base URLs and default settings. It includes a mechanism for intercepting outgoing requests and incoming responses globally, allowing data to be transformed before it reaches the
Axios is a widely-used, isomorphic HTTP client that provides robust support for interceptors, automatic JSON parsing, and request cancellation, though it lacks native TypeScript source code as it is written in JavaScript.
r2 is a JavaScript HTTP client library and asynchronous request library used for executing network calls. It provides a runtime-agnostic network layer that abstracts underlying HTTP implementations to ensure consistent behavior across different JavaScript execution environments. The library functions as a JSON API client, automatically parsing response bodies and formatting outgoing payloads. It utilizes a promise-based interface to manage the lifecycle of HTTP requests and responses. The project covers REST API integration and HTTP header management, allowing users to attach custom key-valu
This is a promise-based HTTP client library that provides automatic JSON parsing and a runtime-agnostic architecture, making it a suitable tool for handling API requests in TypeScript environments despite lacking native type definitions.
Superagent is a cross-platform JavaScript HTTP client and Ajax library used for exchanging data between clients and servers. It provides a consistent API for making network requests that works identically across both Node.js and web browser environments. The library features a request pipeline that allows for the addition of custom behaviors to outgoing network calls. This system supports the implementation of specialized functions such as request throttling, caching, and the automatic signing of outgoing data.
Superagent is a mature, isomorphic HTTP client that supports request pipelines and cross-platform execution, though it lacks native TypeScript first-class support and requires external type definitions.
Undici is a high-performance HTTP client for Node.js designed to execute network requests while minimizing resource overhead and latency. The project provides specialized capabilities for HTTP request pipelining to increase throughput and memory-based response caching to reduce redundant network calls. It also supports HTTP tunneling and proxying through the establishment of secure two-way communication channels via the connect method. Additionally, the client includes tools for web API polyfilling to provide standard browser network interfaces within Node.js environments. Its functional sur
Undici is a high-performance HTTP client for Node.js that provides robust request handling and interceptor support, though it is primarily optimized for server-side environments rather than being a fully isomorphic library.
wreck is part of the hapi ecosystem and was designed to work seamlessly with the hapi web framework and its other components (but works great on its own or with other frameworks). If you are using a different web framework and find this module useful, check out hapi – they work even better together.
Wreck is a robust HTTP client library that provides essential features like automatic JSON parsing and request/response handling, though it lacks native TypeScript type-safety and built-in retry mechanisms compared to more modern alternatives.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| unjs/ofetch | 5.3K | TypeScript | MIT | |
| elbywan/wretch | 5.2K | TypeScript | MIT | |
| sindresorhus/ky | 16.9K | TypeScript | MIT | |
| bitinn/node-fetch | 8.9K | JavaScript | MIT | |
| mzabriskie/axios | 109.1K | JavaScript | MIT | |
| node-fetch/node-fetch | 8.9K | JavaScript | MIT | |
| sindresorhus/got | 14.9K | TypeScript | MIT | |
| axios/axios | 109.1K | JavaScript | MIT | |
| mikeal/r2 | 4.4K | JavaScript | Apache-2.0 | |
| visionmedia/superagent | 16.7K | JavaScript | MIT |