HTTP Clients

Axios vs node-fetch vs got

Compare the most popular JavaScript HTTP clients by downloads, growth, and adoption

axiosnode-fetchgot

Weekly Downloads — Last 6 Months

axios

v1.13.6

Promise based HTTP client for the browser and node.js

Weekly

90.4M

Monthly

361.5M

Growth

+13%

Bundle (gzip)

13.9 kB

node-fetch

v3.3.2

A light-weight module that brings Fetch API to node.js

Weekly

108.6M

Monthly

430.7M

Growth

+21%

Bundle (gzip)

22.6 kB

got

v14.6.6

Human-friendly and powerful HTTP request library for Node.js

Weekly

28.7M

Monthly

118.3M

Growth

+3%

Bundle (gzip)

Package Breakdown

axiosRecommended

The universal HTTP client with interceptors and broad compatibility

✓ Best For

Browser applications needing interceptors, projects requiring consistent API across browser and Node.js, and teams familiar with Axios patterns

✗ Weakness

Adds bundle weight to browser apps, native fetch has mostly caught up for simple use cases

node-fetch

A fetch API polyfill for older Node.js versions

✓ Best For

Node.js projects that need fetch API compatibility on Node.js versions below 18

✗ Weakness

Largely obsolete for Node.js 18+ projects where native fetch is available

got

Feature-rich HTTP client built specifically for Node.js

✓ Best For

Node.js applications needing retry logic, pagination, timeouts, and complex request handling

✗ Weakness

Node.js only — cannot be used in browsers, smaller community than Axios

Which HTTP Client Should You Use?

For browser applications in 2026, native fetch with a thin wrapper is often sufficient. For more complex needs — interceptors for auth tokens, request/response transformation — Axios remains the practical choice due to its maturity and the number of tutorials and patterns available.

For Node.js backend applications on Node 18+, native fetch handles simple requests. For anything requiring retries, timeouts, pagination, or hooks — got is the better choice over Axios in a pure Node environment.

node-fetch's relevance is fading. If you're on Node 18+, you have native fetch. If you're on an older version, upgrading Node is a better investment than adding node-fetch.

Recommended: axios

Still the most versatile choice for projects that span browser and Node.js environments.

Which to Use For Each Use Case

Use CaseWinner
React/Vue frontend appaxios
Node.js 18+ backendgot
Node.js below 18node-fetch
CLI tool or scrapergot

FAQ

Should I replace Axios with native fetch?+
Only if Axios is causing real problems or you're bundle-size constrained. Native fetch lacks interceptors, automatic JSON parsing, and request cancellation patterns that Axios handles elegantly. For new small projects, native fetch is fine. For existing Axios codebases, the migration cost rarely justifies the marginal bundle size saving.
Is node-fetch still relevant in 2026?+
Mostly no. Node.js 18 shipped with native fetch in 2022, and Node 18 is now the minimum supported version for most frameworks. If you're on Node 18+, use native fetch directly. node-fetch's high download numbers reflect existing projects and CI systems that haven't updated, not new adoption.
What is the bundle size of Axios vs native fetch?+
Axios adds approximately 12-14kB gzipped to your bundle. Native fetch adds 0kB (it's built into the browser). For frontend applications where bundle size is critical, this difference is meaningful. For Node.js backends, bundle size doesn't matter.

Related Comparisons

HTTP requests are fundamental to almost every JavaScript application. Axios became the go-to solution for years — its promise-based API, request/response interceptors, and browser/Node.js compatibility made it universally adopted. But the native fetch API, now available in both browsers and Node.js 18+, has changed the landscape significantly. node-fetch and got each address different shortcomings in different ways.

The download numbers here include millions of CI/CD systems, automated tools, and legacy projects — making absolute numbers less meaningful than growth trajectories for understanding which library developers are choosing for new projects today.

Why There Are So Many HTTP Clients

JavaScript HTTP clients proliferated because each environment had different needs. Browsers had XMLHttpRequest (verbose) then fetch (clean but lacking features). Node.js had the built-in http module (low-level) and needed higher-level abstractions. Axios solved both by providing a consistent API across environments.

Node.js 18 changed the equation by shipping with native fetch, eliminating the need for node-fetch as a polyfill. Now the question isn't "how do I make HTTP requests in Node.js" but "does native fetch have everything I need, or do I need an abstraction?"

Got, maintained by Sindre Sorhus, targets Node.js specifically and provides features that native fetch lacks: retry logic, timeout handling, pagination, and hooks. It's the choice for Node.js applications with complex HTTP requirements. Axios remains dominant due to legacy adoption and its interceptor system.

Compare Any Packages

Search any npm package and build your own custom comparison.

Open npm Trends Tool