Skip to main content

Currency Formatter — Format Numbers as Money

Type a number, pick one of 60+ currencies and a locale — get the correctly formatted money string with the right symbol, decimal places and thousand separators. Batch mode, negative styles and copy buttons included. 100% client-side, no data leaves your browser.

Format a number as currency

$1,234,567.89
Currency
USD — US Dollar
Locale
en-US
Decimal places used
2 (currency default)

Worked examples (verified)

Each output below was verified byte-for-byte against Intl.NumberFormat:

InputCurrencyLocaleFormatted outputWhy
1234567.89USDen-US$1,234,567.89US dollar: symbol left, comma groups, 2 decimals.
1234567.89EURde-DE1.234.567,89 €Euro in German locale: dot groups, comma decimal, symbol after with no-break space.
1234567.89JPYen-US¥1,234,568Japanese yen: 0 decimals by ISO default — sen are obsolete.
1234567.89IDRid-IDRp 1.234.568Indonesian rupiah in its home locale: native Rp symbol, dot groups.
1234567.89KWDen-USKWD 1,234,567.890Kuwaiti dinar: 3 decimals (1 dinar = 1,000 fils).
1234567.89INRhi-IN₹12,34,567.89Indian rupee: lakh/crore digit grouping (12,34,567 not 1,234,567).

Why formatting is not conversion

A currency formatter answers “how should this number look as money?” — symbol, symbol position, decimal places, thousand separators. A currency converter answers “what is this worth in another currency?” using a live exchange rate. This page does the first job only: it formats, never converts, never fetches rates.

Currency formatting FAQ

What is the difference between currency formatting and currency conversion?
Formatting changes how a number looks; conversion changes what it is worth. Writing 1234.5 as $1,234.50 or as 1.234,50 € is formatting. Turning 100 USD into euros at an exchange rate is conversion. This tool only formats numbers — it never converts currencies, never fetches exchange rates, and makes zero network requests.
Why does the Japanese yen (JPY) show no decimal places?
Because the international default for JPY is zero fraction digits: the sen subunit is obsolete, so ¥1,234,568 is the correct standard rendering of 1234567.89. The same applies to KRW, VND, CLP, COP, HUF, ISK, IDR, PKR, MMK and LAK. If you need decimals anyway, set the decimal places override to 2.
Why do KWD, BHD and OMR show three decimal places?
Kuwaiti dinar, Bahraini dinar and Omani rial subdivide into 1,000 fils, so their ISO default is three fraction digits: KWD 1,234,567.890. Most currencies use two; a few use zero. The calculator applies each currency's official default automatically unless you override it.
Why do some currencies show a code like IDR instead of a symbol in en-US?
The symbol shown depends on the locale, not just the currency. In the en-US locale there is no local narrow symbol mapped for some currencies, so the formatter falls back to the ISO code (IDR 1,234,568). Switch the locale to id-ID and the same amount renders as Rp 1.234.568. Use each currency's home locale for its native symbol.
What does the locale setting change?
Locale controls the punctuation and symbol placement around the same number: en-US gives $1,234,567.89, de-DE gives 1.234.567,89 €, fr-FR uses narrow no-break spaces (1 234 567,89 €), and hi-IN gives ₹12,34,567.89 with Indian digit grouping. Pick the locale your audience reads.
How are negative amounts displayed?
Three styles: minus uses the locale's natural negative sign (-$42.50), parentheses wraps the amount the way accountants do (($42.50)), and accounting uses the Intl accounting-sign convention. Parentheses never alter the value — they are purely a display style.
Can I format many numbers at once?
Yes. Paste one number per line into batch mode and every line is formatted with the same currency, locale and options; the results appear as a list you can copy in one click. Blank lines are skipped automatically.

Free tool by NRTechStudio