Currency Format Converter guide
Check how an amount should look in another country before it goes on an invoice, price page, or spreadsheet: symbol position, thousands separator, decimal mark, and rounding, all from the browser's built-in Intl formatter.
Three things change between locales
Writing money correctly for another country comes down to three decisions: which character separates thousands, which character marks the decimal, and where the currency symbol sits. The US writes $1,234,567.89. Germany writes 1.234.567,89 €. France writes 1 234 567,89 € with a narrow non-breaking space as the thousands separator. Switzerland writes CHF 1'234'567.89. Same number, four different strings.
This tool uses Intl.NumberFormat, the formatter built into every modern browser. It draws on the Unicode CLDR database, which is the same locale data Apple, Google, and Microsoft use in their operating systems, so the output matches what people in each country see in their banking apps.
Locale is not the same as currency
The currency decides the symbol and the number of decimals. The locale decides the separators and symbol position. A euro amount looks different in Dublin (€1,234.50), Amsterdam (€ 1.234,50), and Paris (1 234,50 €). A US dollar shown to a Canadian reader becomes US$1,234.50 so it is not mistaken for Canadian dollars.
That is why the tool lists the euro twice, once for Germany and once for France, and why the "US-style separators, local symbol" option exists. If your audience is American but you are quoting a foreign price, US separators with the foreign symbol (€1,234.50) are usually the clearest choice.
Worked example: one invoice, three clients
Say you bill 1,234,567.89 in each client's currency. For a US client, the line reads $1,234,567.89. For a German client, 1.234.567,89 €. For an Indian client, ₹12,34,567.89, because Indian grouping uses the lakh (100,000) and crore (10,000,000) system: three digits, then pairs.
Now a yen invoice for 1,234.50. Yen has no everyday minor unit, so it displays as ¥1,235. The formatter rounds half away from zero, so .50 goes up. If you store yen amounts with decimals in a database, decide on rounding before you invoice, not after.
When the $ sign is ambiguous
The dollar sign is shared by more than 20 currencies, including the US, Canadian, Australian, New Zealand, Singapore, and Hong Kong dollars, and the Mexican peso uses it too. On a website served only to US visitors, $ is fine. On an international invoice, contract, or price list, use the ISO 4217 code: USD 1,200.00, CAD 1,200.00, AUD 1,200.00. The ISO code option in the Style menu produces exactly that.
The same goes for ¥, which covers both the Japanese yen and the Chinese yuan. Chinese locale formatting uses a full-width ¥ in some contexts, so if precision matters, JPY and CNY codes remove the guesswork.
Accounting format for US financials
US financial statements, budgets, and most spreadsheets exported from QuickBooks or Excel show negatives in parentheses: ($1,234.50) rather than -$1,234.50. Parentheses are harder to miss than a small minus sign in a column of numbers. Pick Accounting in the Style menu and enter a negative amount to see it.
For code, the equivalent is one line: new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", currencySign: "accounting" }).format(-1234.5). Excel's built-in Accounting format goes a step further and aligns the currency symbol to the left edge of the cell, which Intl does not do; that is a spreadsheet display feature, not part of the number string.
Common mistakes
Building the string by hand. Code like "$" + amount.toFixed(2) gives $1234567.89 with no separators, and breaks completely for locales that put the symbol after the number. Use Intl.NumberFormat(locale, { style: "currency", currency }) in JavaScript, or the equivalent in your language, and let locale data do the work.
Copying a French amount into a spreadsheet. The narrow non-breaking space in 1 234,56 € is a real character, not a normal space, and Excel may treat the cell as text. Strip it, or store the raw number and format it on display.
Storing formatted strings. Save amounts as integers in minor units (cents) or as decimals, plus a currency code. Format only when you show them. Otherwise sorting, math, and conversion all get painful.
Frequently asked questions
Does this convert between currencies?
No. It formats the same number in each currency's local style. To convert dollars to euros you need a live exchange rate from your bank or a rates provider, and the result can then be formatted here.
Why do Europeans write 1.234,56 instead of 1,234.56?
Germany, Spain, Italy, Brazil, and many other countries use a comma as the decimal mark and a period (or a space) to group thousands. France uses a narrow space: 1 234,56 €. Switzerland uses an apostrophe: CHF 1'234.56.
Does the currency symbol go before or after the number?
It depends on the locale, not the currency. The US and UK put it before ($12, £12). Germany and France put the euro after with a space (12 €). Irish and Dutch sites often write €12. Pick the style your audience reads.
Why does the yen show no decimals?
The Japanese yen and South Korean won have no minor unit in everyday use, so amounts are rounded to whole numbers. 1,234.50 yen displays as ¥1,235.
How are amounts in Indian rupees grouped?
India groups the last three digits, then every two: ₹12,34,567.89. That is 12 lakh 34 thousand. Ten lakh is one million, and one crore is ten million.
What is accounting format?
Accounting format shows negative amounts in parentheses, like ($1,234.50), instead of a minus sign. It is the standard in US financial statements and a built-in number format in Excel.
When should I use ISO codes like USD instead of $?
Whenever the symbol is ambiguous. The $ sign is used by the US, Canada, Australia, Mexico, and more than 20 other currencies. On invoices and international price lists, USD 1,200.00 removes the doubt.
Is my data kept private?
Everything runs in your browser. Nothing you enter is uploaded to a server or stored by us.