🌐
GitHub
gist.github.com › gp187 › 4393cbc6dd761225071270c29b341b7b
All currencies in JSON -- Array of Objects · GitHub
Clone this repository at <script src="https://gist.github.com/gp187/4393cbc6dd761225071270c29b341b7b.js"></script> Save gp187/4393cbc6dd761225071270c29b341b7b to your computer and use it in GitHub Desktop. Download ZIP · All currencies in JSON -- Array of Objects ·
🌐
Scurker
scurker.github.io › currency.js
currency.js
When working with currencies, decimals only need to be precise up to the smallest cent value while avoiding common floating point errors when performing basic arithmetic. currency.js resolves this issue by working with integers behind the scenes, so you don't have to be concerned about decimal ...
🌐
HTML Code Generator
html-code-generator.com › javascript › array › currency-name
Array Of World Currency Names In JavaScript
A complete list of all world currency names and their codes, formatted for use in a JavaScript array or an array of objects.
🌐
npm
npmjs.com › search
currency - npm search
A small, lightweight javascript library for working with currency values.
🌐
npm
npmjs.com › package › @rusirunethmina › world-currencies-js
@rusirunethmina/world-currencies-js - npm
June 17, 2025 - const currencies = require('@rusirunethmina/world-currencies-js'); // Get all currencies console.log(currencies.getAll()); // Get currency by ISO code console.log(currencies.getByCode('USD')); // Output: { code: 'USD', name: 'United States Dollar', symbol: '$' } // Get currency by name console.log(currencies.getByName('Euro')); // Output: { code: 'EUR', name: 'Euro', symbol: '€' } Returns a list of all currencies in the dataset.
      » npm install @rusirunethmina/world-currencies-js
    
Published   Jun 17, 2025
Version   1.0.0
Author   rusirunethmina
🌐
jsDelivr
jsdelivr.com › package › npm › currency-list
currency-list CDN by jsDelivr - A CDN for npm and GitHub
March 30, 2022 - A free, fast, and reliable CDN for currency-list. Localized currency list
Published   Dec 05, 2020
🌐
DEV Community
dev.to › headlesstech › managing-countries-and-currencies-with-js-36ff
Managing countries and currencies with JS - DEV Community
December 27, 2024 - Managing list of countries and currencies along with formatting different currency formats for all...
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat › NumberFormat
Intl.NumberFormat() constructor - JavaScript | MDN
January 25, 2026 - The minimum number of fraction digits to use. Possible values are from 0 to 100; the default for plain number and percent formatting is 0; the default for currency formatting is the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information).
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › supportedValuesOf
Intl.supportedValuesOf() - JavaScript | MDN
February 27, 2026 - The Intl.supportedValuesOf() static method returns an array containing the supported calendar, collation, currency, numbering systems, or unit values supported by the implementation.
🌐
Openexchangerates
openexchangerates.github.io › accounting.js
accounting.js: JavaScript number and currency formatting library
This table demonstrates how accounting.js can take a list of numbers and money-format them with padding to line up currency symbols and decimal places
Find elsewhere
🌐
IBAN Checker
iban.com › currency-codes
List of Currency Codes by Country (ISO 4217)
January 9, 2026 - Updated list of currency names. 3 character alphabetic and 3 digit numeric ISO 4217 codes for each country.
Top answer
1 of 2
6

Right now, exhaustive testing, as the accepted answer offers, is probably the most reasonable practical tack here. Moreover, new currencies do not arise, and old currencies do not die, with particular frequency. The currencies supported by any implementation being kept up to date, are going to reflect reality almost always. So the try-and-see approach really isn't going to fail much.

But to elaborate further on this from the spec side, the spec really only cares about currencies being "well-formed": three ASCII letters. If the resulting code is a known currency, you will get congenial behavior. Otherwise, you get roughly graceful fallback to the code itself. So there's debatably not a need to expose the supported list: currency codes are at least a relatively understandable thing to many users, probably, as in most UI seeing something like "3 USD" or "5 CAD" where prices or costs are implicated is going to connote the user's currency generally.

In the future, however, a spec proposal that exposes the set of recognized currencies is well on the way to standardization. Initial implementations will probably start showing up in web browsers' JS implementations before the end of 2021, letting you do this:

// This will return an array of currency codes supported
// by Intl.NumberFormat and Intl.DisplayNames, e.g.:
//   ["ADP", "AED", ..., "JPY", ..., "USD", ...]
var currencies = Intl.supportedValuesOf("currency");
console.log(currencies);

2 of 2
2

You could load a known list via this XML:

https://www.currency-iso.org/dam/downloads/lists/list_one.xml

The list was found here: https://www.currency-iso.org/en/home/tables/table-a1.html

<ISO_4217 Pblshd="2018-08-29">
  <CcyTbl>
    <CcyNtry>
      <CtryNm>
        UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)
      </CtryNm>
      <CcyNm>Pound Sterling</CcyNm>
      <Ccy>GBP</Ccy>
      <CcyNbr>826</CcyNbr>
      <CcyMnrUnts>2</CcyMnrUnts>
    </CcyNtry>
    <CcyNtry>
      <CtryNm>UNITED STATES OF AMERICA (THE)</CtryNm>
      <CcyNm>US Dollar</CcyNm>
      <Ccy>USD</Ccy>
      <CcyNbr>840</CcyNbr>
      <CcyMnrUnts>2</CcyMnrUnts>
    </CcyNtry>
  </CcyTbl>
</ISO_4217>

var xmlString = getSampleCurrencyXml();
var xmlData = (new window.DOMParser()).parseFromString(xmlString, "text/xml");
var knownCodes = [].slice.call(xmlData.querySelectorAll('Ccy')).map(n => n.textContent)

// Fetch the XML instead?
fetch('https://www.currency-iso.org/dam/downloads/lists/list_one.xml', { cache: 'default' })
  .then(response => response.text())
  .then(xmlStr => (new window.DOMParser()).parseFromString(xmlStr, "text/xml"))
  .then(data => knownCodes = data); // This may not work in the Stack Snippet

console.log(getSupportedCurrencies().map(c => c.code + '\t' + c.name).join('\n'));

function getSupportedCurrencies() {
  function $(amount, currency) {
    return Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: currency,
      currencyDisplay: 'name'
    }).format(amount);
  }
  return knownCodes.reduce((currencies, cur) => {
    return (output => {
      return output.replace(/^[^ ]+ /, '') !== cur ?
        currencies.concat({
          code: cur,
          name: output.match(/(?<= ).+/)[0]
        }) :
        currencies;
    })($(0, cur).trim());
  }, []);
}

function getSampleCurrencyXml() {
  return `
    <ISO_4217 Pblshd="2018-08-29">
      <CcyTbl>
        <CcyNtry>
          <CtryNm>
            UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)
          </CtryNm>
          <CcyNm>Pound Sterling</CcyNm>
          <Ccy>GBP</Ccy>
          <CcyNbr>826</CcyNbr>
          <CcyMnrUnts>2</CcyMnrUnts>
        </CcyNtry>
        <CcyNtry>
          <CtryNm>UNITED STATES OF AMERICA (THE)</CtryNm>
          <CcyNm>US Dollar</CcyNm>
          <Ccy>USD</Ccy>
          <CcyNbr>840</CcyNbr>
          <CcyMnrUnts>2</CcyMnrUnts>
        </CcyNtry>
      </CcyTbl>
    </ISO_4217>
  `;
}
.as-console-wrapper { top: 0; max-height: 100% !important; }


If you want to generate the codes still, you can use a product iterable.

The following is based on Python's itertools.product function.

let ary = product('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''), 3).map(a => a.join(''));

function product(iterables, repeat) {
  var argv = Array.prototype.slice.call(arguments), argc = argv.length;
  if (argc === 2 && !isNaN(argv[argc - 1])) {
    var copies = [];
    for (var i = 0; i < argv[argc - 1]; i++) { copies.push(argv[0].slice()); }
    argv = copies;
  }
  return argv.reduce((accumulator, value) => {
    var tmp = [];
    accumulator.forEach(a0 => value.forEach(a1 => tmp.push(a0.concat(a1))));
    return tmp;
  }, [[]]);
}

Demo

console.log(getSupportedCurrencies().map(c => c.code + '\t' + c.name).join('\n'));

function getSupportedCurrencies() {
  function $(amount, currency) {
    return Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: currency,
      currencyDisplay: 'name'
    }).format(amount);
  }
  let ary = product('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''), 3).map(a => a.join(''));
  return ary.reduce((currencies, cur) => {
    return (output => {
      return output.replace(/^[^ ]+ /, '') !== cur
        ? currencies.concat({ code : cur, name : output.match(/(?<= ).+/)[0] })
        : currencies;
    })($(0, cur).trim());
  }, []);
}

function product(iterables, repeat) {
  var argv = Array.prototype.slice.call(arguments), argc = argv.length;
  if (argc === 2 && !isNaN(argv[argc - 1])) {
    var copies = [];
    for (var i = 0; i < argv[argc - 1]; i++) { copies.push(argv[0].slice()); }
    argv = copies;
  }
  return argv.reduce((accumulator, value) => {
    var tmp = [];
    accumulator.forEach(a0 => value.forEach(a1 => tmp.push(a0.concat(a1))));
    return tmp;
  }, [[]]);
}
.as-console-wrapper { top: 0; max-height: 100% !important; }

🌐
npm
npmjs.com › package › currency-codes
currency-codes - npm
October 23, 2024 - var cc = require('currency-codes'); console.log(cc.country('colombia')); /* [ { code: 'COP', number: 170, digits: 2, currency: 'Colombian peso', countries: [ 'colombia' ] }, { code: 'COU', number: 970, digits: 2, currency: 'Unidad de Valor Real', countries: [ 'colombia' ] } ] */
      » npm install currency-codes
    
Published   Oct 23, 2024
Version   2.2.0
🌐
Best of JS
bestofjs.org › projects › currencyjs
Best of JS • currency.js
Trends and data about currency.js project. A javascript library for handling currencies
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat
Intl.NumberFormat - JavaScript | MDN
js · const number = 123456.789; // request a currency format console.log( new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format( number, ), ); // 123.456,79 € // the Japanese yen doesn't use a minor unit console.log( new Intl.NumberFormat("ja-JP", { style: "currency", currency: "JPY" }).format( number, ), ); // ¥123,457 // limit to three significant digits console.log( new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format( number, ), ); // 1,23,000 // Formatting with units console.log( new Intl.NumberFormat("pt-PT", { style: "unit", unit: "kilometer-per-hour", }).format(50), ); // 50 km/h console.log( (16).toLocaleString("en-GB", { style: "unit", unit: "liter", unitDisplay: "long", }), ); // 16 litres ·
🌐
Currencyapi.com
currencyapi.com › docs › currency-list
Currency List | currencyapi Documentation
The list of all currencies that are suppored by the currencyapi API.
🌐
Medusa
docs.medusajs.com › currencies
Currency Architecture | Medusa
September 1, 2024 - Currencies are defined in the core of your Medusa backend under utils/currencies.js (or packages/medusa/src/utils/currencies.ts if you’re using the Medusa mono-repository).
🌐
Yarn
yarnpkg.com › package
currency-codes
Yarn is a package manager that doubles down as project manager. Whether you work on simple projects or industry monorepos, whether you're an open source developer or an enterprise user, Yarn has your back · First package manager built specifically around workspaces, Yarn lets you split your ...