Image Processing: How to download and save an image using Node.js

Join the AI Workshop to learn more about AI and how it can be applied to web development. Next cohort February 1st, 2026

The AI-first Web Development BOOTCAMP cohort starts February 24th, 2026. 10 weeks of intensive training and hands-on projects.


I had the need of downloading a file from the Internet, and I also wanted to use await to do something else after in an easy way.

You can do that using Axios.

import axios from 'axios'

Then write a download() function like this:

async function download(url, filepath) {
  const response = await axios({
    url,
    method: 'GET',
    responseType: 'stream',
  })
  return new Promise((resolve, reject) => {
    response.data
      .pipe(fs.createWriteStream(filepath))
      .on('error', reject)
      .once('close', () => resolve(filepath))
  })
}

Then call it using

const remote_url = 'https://...'
const local_path = './images/test.png'

await download(remote_url, local_path)

Lessons in this unit:

0: Introduction
1: How to create and save an image with Node.js and Canvas
2: How to download an image from URL in Node
3: ▶︎ How to download and save an image using Node.js
4: How to get an image width and height using Node
5: How to turn an image into a data URI string
6: How to download an image using Node.js
7: How to print a canvas to a data URL
8: Optimize images from a Node.js script
9: Calling the ImageOptim macOS app from a Node.js script