Codectionary / Developer documentation / JavaScript

Intl API: Number & Date Formatting

The Intl object provides language-sensitive formatting for numbers, currencies, dates, and more, correctly following the conventions of a specified locale. Intl.NumberFormat handles numbers and currency, and Intl.DateTimeFormat handles dates - both far more robust than manually formatting strings.

Syntax

new Intl.NumberFormat(locale, options).format(value)

Examples

Formatting Numbers and Currency

Correctly formatted numbers respecting locale conventions.

const number = 1234567.891;

console.log(new Intl.NumberFormat("en-US").format(number));
// "1,234,567.891"
console.log(new Intl.NumberFormat("de-DE").format(number));
// "1.234.567,891" - different separators for German locale

const price = new Intl.NumberFormat("en-GB", {
  style: "currency", currency: "GBP"
});
console.log(price.format(49.99)); // "£49.99"

Formatting Dates

Locale-aware date formatting without manual string building.

const date = new Date(2026, 6, 20); // July 20, 2026

console.log(new Intl.DateTimeFormat("en-US").format(date));
// "7/20/2026"
console.log(new Intl.DateTimeFormat("en-GB").format(date));
// "20/07/2026"

const formatter = new Intl.DateTimeFormat("en-US", {
  weekday: "long", year: "numeric", month: "long", day: "numeric"
});
console.log(formatter.format(date)); // "Monday, July 20, 2026"

Best practices

  • Use Intl.NumberFormat/DateTimeFormat instead of manually building formatted strings - locale conventions (separators, currency symbols, date order) vary in ways that are easy to get wrong by hand
  • Reuse a single formatter instance for repeated formatting calls rather than creating a new one every time, for better performance
  • Detect the user's locale with navigator.language rather than hardcoding one, for genuinely internationalized applications
  • Use the currency and style options for money values rather than manually prepending a currency symbol

At a glance

Purpose
Application logic and interaction
File extension
.js · .mjs
Runs in
Browsers and JavaScript runtimes
Usually used with
HTML, CSS and Web APIs

Specifications & further reading

Related JavaScript documentation