Convert cURL to Node.js

Generate server-side Node.js code from cURL commands. Choose from three popular HTTP libraries: Native HTTP, Axios, or Got.

Library Comparison

Native HTTP Module

  • ✅ No dependencies - built into Node.js
  • ✅ Lightweight and fast
  • ❌ More verbose syntax
  • ❌ Manual JSON parsing

Axios

  • ✅ Most popular HTTP client (50M+ downloads/week)
  • ✅ Promise-based, clean API
  • ✅ Automatic JSON transformation
  • ✅ Request/response interceptors

Got

  • ✅ Modern, TypeScript-friendly
  • ✅ Retry mechanism built-in
  • ✅ Stream support
  • ✅ Better error handling

Quick Example with Axios

curl -X POST https://api.example.com/data \
  -H "Content-Type: application/json" \
  -d '{"key":"value"}'

Converts to:

const axios = require('axios');

const url = 'https://api.example.com/data';
const data = {
  key: 'value'
};

axios.post(url, data, {
  headers: {
    'Content-Type': 'application/json'
  }
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });

Installation

Axios

npm install axios

Got

npm install got

Common Patterns

GET with Query Parameters

const axios = require('axios');

axios.get('https://api.example.com/search', {
  params: {
    q: 'nodejs',
    limit: 10
  }
})
  .then(response => console.log(response.data));

File Upload

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const form = new FormData();
form.append('file', fs.createReadStream('document.pdf'));

axios.post('https://api.example.com/upload', form, {
  headers: form.getHeaders()
})
  .then(response => console.log(response.data));

Authentication Headers

const axios = require('axios');

const headers = {
  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
  'Content-Type': 'application/json'
};

axios.get('https://api.example.com/protected', { headers })
  .then(response => console.log(response.data));

Error Handling

const axios = require('axios');

async function fetchData() {
  try {
    const response = await axios.get('https://api.example.com/data');
    console.log(response.data);
  } catch (error) {
    if (error.response) {
      // Server responded with error status
      console.error('Status:', error.response.status);
      console.error('Data:', error.response.data);
    } else if (error.request) {
      // Request made but no response
      console.error('No response received');
    } else {
      // Error in request setup
      console.error('Error:', error.message);
    }
  }
}

Try It Live

Open the converter to transform your cURL commands, or use RequestBin to test with real HTTP endpoints.


Related docs: Python | JavaScript | How It Works

Try it live with RequestBin

Test your converted code with real HTTP endpoints. RequestBin gives you unique URLs to inspect requests, debug webhooks, and validate API calls.