node-fetch vs axios
node-fetch is an implementation of the Fetch API for Node.js, built on Node's http module, and axios is a promise-based HTTP client for the browser and Node.js.
Implementation of the Fetch API for Node.js, built on Node's http module.
$ npm install node-fetch| Metric | node-fetch | axios | Difference |
|---|---|---|---|
| Weekly downloads | 141,855,676 | 85,399,829 | node-fetch 1.7x higher |
| 12-month download growth | +109% | +47% | node-fetch +62 pts |
| Gzip size | - | - | - |
| Minified size | - | - | - |
| Dependencies | 3 | 4 | axios 1 more |
| Unpacked size | 105 kB | 1.9 MB | node-fetch 18.5x smaller |
| Latest release | 3.3.2, 25 Jul 2023 | 1.20.0, 26 Aug 2026 | axios 3.1 years more recent |
| Releases, last 12 months | 0 | 25 | axios 25 more |
| First published | 27 Jan 2015 | 29 Aug 2014 | axios 5 months earlier |
| GitHub stars | 8,855 | 109,212 | axios 12.3x higher |
| Open issues | 190 | 48 | node-fetch 142 more |
| Open pull requests | 59 | 47 | node-fetch 12 more |
| Contributors | 116 | 665 | axios 5.7x higher |
| Commits, last 52 weeks | 0 | 466 | axios higher |
| TypeScript types | Bundled | Bundled | Same |
| Module format | ESM only | ESM + CommonJS | Differs |
| Runtimes | Node.js | Browser, Node.js, Deno, Bun | Only axios: Browser, Deno, Bun |
| License | MIT | MIT | Same |
Green marks the smaller size or the more recent release. Bold marks the higher count, with no judgement implied. Sizes are for the whole package per Bundlephobia. Growth compares the average of the last 4 weeks with the first 4 weeks of the 52-week series.
node-fetch
- 0.1.027 Jan 2015
- 1.0.027 Jan 2015
- 2.0.03 Feb 2018
- 3.0.031 Aug 2021
- 2.7.023 Aug 2023
- 2.6.1318 Aug 2023
- 3.3.225 Jul 2023
- 2.6.1229 Jun 2023
- 2.6.119 May 2023
axios
- 0.1.029 Aug 2014
- 1.0.04 Oct 2022
- 0.34.016 Sept 2026
- 1.20.026 Aug 2026
- 1.19.029 Jul 2026
- 1.18.122 Jun 2026
- 1.18.014 Jun 2026
Fetch API (window.fetch-compatible)
Promise-based, configurable instances with request and response interceptors
- v3 is ESM-only and cannot be loaded with require(). v2 remains CommonJS and still receives critical bug fixes.
- Response bodies are Node.js Readable streams, not WHATWG ReadableStreams as the Fetch standard specifies.
- Node.js has a built-in global fetch, powered by undici, from v18.
- Uses XMLHttpRequest in the browser and the Node.js http module on the server.
- Has a fetch adapter since v1.7.0, used by default when the xhr and http adapters are unavailable.
- Request and response interceptors can modify or transform data before it is sent or handled.
- The README gives install commands for npm, Bun and Deno.
- Need both ESM and CommonJS entry pointsaxios (node-fetch: ESM only; axios: ESM + CommonJS)
- Need to load it with require()axios
- Need TypeScript types in the package itselfBoth
- Need to run in Browseraxios (as listed in its README)
- Need to run in Denoaxios (as listed in its README)
- Need to run in Bunaxios (as listed in its README)
- Only targeting Node.jsBoth run in Node.js (node-fetch is Node.js only)
- Node.js version requirementnode-fetch: ^12.20.0 || ^14.13.1 || >=16.0.0; axios: none declared (engines field in package.json)
- Need the more recent releaseaxios (1.20.0 on 26 Aug 2026 vs 3.3.2 on 25 Jul 2023)
- Higher weekly npm downloadsnode-fetch (141.9m vs 85.4m)
Each line is generated from the data above.
- node-fetch vs got20 searches/mo
- axios vs got20 searches/mo
- axios vs superagent20 searches/mo
Indexability: Indexed: 30 US searches/month across both orderings ("node-fetch vs axios", "axios vs node-fetch").