Every world currency symbol you'll need to render — 95 distinct glyphs across 154 ISO 4217 currencies, each with its Unicode code point, HTML entity, LaTeX command and a click-to-copy button. Plus the ambiguity table that the other references skip: which currencies share $, which share £, which share ¥, and how to disambiguate them in your UI.
At first glance a currency symbol is a character you stick before or after a number. In practice it's three different things at once: a glyph (the visual mark), a Unicode code point (the underlying character your bytes represent), and a culturally-loaded display convention (placement, spacing, decimal punctuation). Most production currency-formatting bugs come from confusing the three.
Unicode added a dedicated Currency Symbols block (U+20A0–U+20CF) for marks that don't have a pre-existing ASCII representation. The recent additions matter for international apps: ₹ (Indian Rupee, U+20B9, added 2010), ₺ (Turkish Lira, U+20BA, added 2012), ₽ (Russian Ruble, U+20BD, added 2014), ₾ (Georgian Lari, U+20BE, added 2014), ₿ (Bitcoin, U+20BF, added 2017 — though Bitcoin still has no ISO 4217 code). Older systems with fonts predating these additions render them as a hollow box.
The classic ASCII-era symbols ($, ¢, £, ¥) live in Basic Latin and Latin-1 Supplement, are universally available, and are the source of every shared-glyph headache in the table below — 24 different currencies use the dollar sign $, 9 use the pound sign £, 5 use the rupee sign ₨ and several share the Arabic riyal ﷼. The cure isn't a different glyph — there isn't one — it's the ISO 4217 alpha code displayed alongside.
Below: the full searchable grid, then the ambiguity explainer, then a section on actually rendering currency in code (the only correct answer is locale-aware formatting, not hand-rolled symbol concatenation), then a quick reference of HTML entities for the symbols developers most commonly reach for.
Click any symbol to copy it to your clipboard. Click a column header to sort. Filter by code, name or symbol.
| Code ⇅ | Currency ⇅ | Symbol | Unicode | HTML entity | LaTeX | Notes |
|---|---|---|---|---|---|---|
| AED | UAE Dirham | U+062F+002E+0625 | د.إ | {\arabictext د.إ} | UAE Dirham. 'AED' or 'Dh' also appear in EN contexts. | |
| AFN | Afghan Afghani | U+060B | ؋ | {\arabictext ؋} | Afghan Afghani sign. | |
| ALL | Albanian Lek | — | ALL | ALL | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| AMD | Armenian Dram | U+058F | ֏ | {\armeniantext ֏} | Armenian Dram sign. | |
| ANG | Netherlands Antillean Guilder | — | ANG | ANG | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| AOA | Angolan Kwanza | — | AOA | AOA | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| ARS | Argentine Peso | U+0024 | $ | \$ | Argentine Peso uses the plain dollar sign. Often prefixed with AR$ for disambiguation. | |
| AUD | Australian Dollar | U+0041+0024 | A$ | A\$ | Australian Dollar. Plain $ is used locally; A$ is international convention. | |
| AWG | Aruban Florin | — | AWG | AWG | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| AZN | Azerbaijani Manat | U+20BC | ₼ | \textazerimanat | Azerbaijani Manat sign, adopted 2006. | |
| BAM | Bosnia-Herzegovina Convertible Mark | — | BAM | BAM | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BBD | Barbadian Dollar | U+0042+0064+0073+0024 | Bds$ | Bds\$ | Barbadian Dollar. | |
| BDT | Bangladeshi Taka | U+09F3 | ৳ | {\bengalitext ৳} | Bangladeshi Taka sign. | |
| BGN | Bulgarian Lev | U+043B+0432 | лв | {\cyrillictext лв} | Bulgarian Lev — Cyrillic letters 'lv'. | |
| BHD | Bahraini Dinar | U+0628+002E+062F | ب.د | {\arabictext ب.د} | Bahraini Dinar. | |
| BIF | Burundian Franc | — | BIF | BIF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BMD | Bermudan Dollar | U+0042+0044+0024 | BD$ | BD\$ | Bermudan Dollar. | |
| BND | Brunei Dollar | — | BND | BND | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BOB | Bolivian Boliviano | U+0042+0073 | Bs | Bs | Bolivian Boliviano. 'Bs.' with a period is also common. | |
| BRL | Brazilian Real | U+0052+0024 | R$ | R\$ | Brazilian Real. | |
| BSD | Bahamian Dollar | U+0042+0024 | B$ | B\$ | Bahamian Dollar. | |
| BTN | Bhutanese Ngultrum | — | BTN | BTN | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BWP | Botswanan Pula | — | BWP | BWP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BYN | Belarusian Ruble | — | BYN | BYN | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| BZD | Belize Dollar | U+0042+005A+0024 | BZ$ | BZ\$ | Belize Dollar. | |
| CAD | Canadian Dollar | U+0043+0024 | C$ | C\$ | Canadian Dollar. Plain $ inside Canada, C$ or CA$ internationally. | |
| CDF | Congolese Franc | — | CDF | CDF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| CHF | Swiss Franc | U+0043+0048+0046 | CHF | CHF | Swiss Franc has no special symbol — the three-letter code is the display convention. 'Fr.' or 'SFr.' also appear. | |
| CLP | Chilean Peso | U+0024 | $ | \$ | Chilean Peso uses the plain dollar sign. Internationally CLP$ is common. | |
| CNY | Chinese Yuan Renminbi | U+00A5 | ¥ | \textyen | Chinese Yuan uses the same ¥ glyph as JPY. Chinese-language contexts may also use 元 (U+5143) or 圆. | |
| COP | Colombian Peso | U+0024 | $ | \$ | Colombian Peso uses $. Internationally COL$ or COP$. | |
| CRC | Costa Rican Colón | U+20A1 | ₡ | \textcolonmonetary | Costa Rican Colón sign. | |
| CUP | Cuban Peso | U+0024+004D+004E | $MN | \$MN | Cuban Peso (moneda nacional). | |
| CVE | Cape Verdean Escudo | — | CVE | CVE | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| CZK | Czech Koruna | U+004B+010D | Kč | K\v{c} | Czech Koruna. 'č' is U+010D (Latin small letter c with caron). | |
| DJF | Djiboutian Franc | — | DJF | DJF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| DKK | Danish Krone | U+006B+0072 | kr | kr | Danish Krone. Same glyph as SEK / NOK / ISK. | |
| DOP | Dominican Peso | U+0052+0044+0024 | RD$ | RD\$ | Dominican Peso. | |
| DZD | Algerian Dinar | U+0044+0041 | DA | DA | Algerian Dinar. Arabic form is د.ج. | |
| EGP | Egyptian Pound | U+00A3 | £ | \pounds | Egyptian Pound — same £ glyph as GBP. Disambiguate with E£ or LE in international contexts. | |
| ERN | Eritrean Nakfa | — | ERN | ERN | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| ETB | Ethiopian Birr | U+0042+0072 | Br | Br | Ethiopian Birr. | |
| EUR | Euro | U+20AC | € | \euro | Euro sign. Placement varies by locale — pre-symbol in EN-IE, post-symbol in DE, FR, ES. | |
| FJD | Fijian Dollar | U+0046+004A+0024 | FJ$ | FJ\$ | Fijian Dollar. | |
| FKP | Falkland Islands Pound | — | FKP | FKP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| GBP | British Pound Sterling | U+00A3 | £ | \pounds | Pound sign. Also used for Egyptian, Lebanese, Syrian, Sudanese pounds — disambiguate with E£, L£, S£. | |
| GEL | Georgian Lari | U+20BE | ₾ | \textgeorgianlari | Georgian Lari sign, adopted 2014. | |
| GHS | Ghanaian Cedi | U+20B5 | ₵ | \textcedi | Ghanaian Cedi sign. Needs Unicode 5.2+ font. | |
| GIP | Gibraltar Pound | — | GIP | GIP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| GMD | Gambian Dalasi | — | GMD | GMD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| GNF | Guinean Franc | — | GNF | GNF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| GTQ | Guatemalan Quetzal | U+0051 | Q | Q | Guatemalan Quetzal. | |
| GYD | Guyanese Dollar | — | GYD | GYD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| HKD | Hong Kong Dollar | U+0048+004B+0024 | HK$ | HK\$ | Hong Kong Dollar. Plain $ is used locally. | |
| HNL | Honduran Lempira | U+004C | L | L | Honduran Lempira. | |
| HTG | Haitian Gourde | — | HTG | HTG | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| HUF | Hungarian Forint | U+0046+0074 | Ft | Ft | Hungarian Forint. | |
| IDR | Indonesian Rupiah | U+0052+0070 | Rp | Rp | Indonesian Rupiah. | |
| ILS | Israeli New Shekel | U+20AA | ₪ | \textnis | New Shekel sign. Displays as the Hebrew letter shin with two ascenders in good fonts. | |
| INR | Indian Rupee | U+20B9 | ₹ | \rupee | Indian Rupee sign, adopted by India in 2010. Requires Unicode 6.0+ font — older systems fall back to ₨ or 'Rs'. | |
| IQD | Iraqi Dinar | — | IQD | IQD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| IRR | Iranian Rial | U+FDFC | ﷼ | {\arabictext ﷼} | Iranian Rial. ﷼ is the generic 'rial/riyal' ligature (U+FDFC). | |
| ISK | Icelandic Króna | U+006B+0072 | kr | kr | Icelandic Króna. | |
| JMD | Jamaican Dollar | U+004A+0024 | J$ | J\$ | Jamaican Dollar. | |
| JOD | Jordanian Dinar | U+062F+002E+0623 | د.أ | {\arabictext د.أ} | Jordanian Dinar. 'JD' also common in EN. | |
| JPY | Japanese Yen | U+00A5 | ¥ | \textyen | Yen sign. Identical glyph to the Chinese Yuan ¥ — disambiguate with JPY vs CNY in the UI. | |
| KES | Kenyan Shilling | U+004B+0053+0068 | KSh | KSh | Kenyan Shilling. | |
| KGS | Kyrgyzstani Som | — | KGS | KGS | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| KHR | Cambodian Riel | U+17DB | ៛ | {\khmertext ៛} | Cambodian Riel sign. | |
| KMF | Comorian Franc | — | KMF | KMF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| KPW | North Korean Won | — | KPW | KPW | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| KRW | South Korean Won | U+20A9 | ₩ | \textwon | Won sign (South and North Korea). Some fonts render the double-bar variant; if it looks like a plain W, try Noto Sans CJK. | |
| KWD | Kuwaiti Dinar | U+062F+002E+0643 | د.ك | {\arabictext د.ك} | Kuwaiti Dinar. Highest-valued currency in the world as of 2026. | |
| KYD | Cayman Islands Dollar | — | KYD | KYD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| KZT | Kazakhstani Tenge | U+20B8 | ₸ | \texttenge | Kazakhstani Tenge sign. | |
| LAK | Laotian Kip | U+20AD | ₭ | \textkip | Laotian Kip sign. | |
| LBP | Lebanese Pound | U+0644+002E+0644 | ل.ل | {\arabictext ل.ل} | Lebanese Pound. £L and L£ also appear. | |
| LKR | Sri Lankan Rupee | U+20A8 | ₨ | \textrupee | Sri Lankan Rupee — same ₨ glyph as PKR/NPR. | |
| LRD | Liberian Dollar | — | LRD | LRD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| LSL | Lesotho Loti | — | LSL | LSL | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| LYD | Libyan Dinar | U+004C+0044 | LD | LD | Libyan Dinar. Arabic form is ل.د. | |
| MAD | Moroccan Dirham | U+0044+0048 | DH | DH | Moroccan Dirham. Arabic form is د.م. | |
| MDL | Moldovan Leu | — | MDL | MDL | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MGA | Malagasy Ariary | — | MGA | MGA | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MKD | Macedonian Denar | — | MKD | MKD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MMK | Myanmar Kyat | U+004B | K | K | Myanmar Kyat. 'Ks' also used. | |
| MNT | Mongolian Tögrög | U+20AE | ₮ | \texttugrik | Mongolian Tögrög sign. | |
| MOP | Macanese Pataca | — | MOP | MOP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MRU | Mauritanian Ouguiya | — | MRU | MRU | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MUR | Mauritian Rupee | U+20A8 | ₨ | \textrupee | Mauritian Rupee. | |
| MVR | Maldivian Rufiyaa | — | MVR | MVR | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MWK | Malawian Kwacha | — | MWK | MWK | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| MXN | Mexican Peso | U+0024 | $ | \$ | Mexican Peso uses the plain dollar sign locally. Internationally use MX$ or Mex$. | |
| MYR | Malaysian Ringgit | U+0052+004D | RM | RM | Malaysian Ringgit. | |
| MZN | Mozambican Metical | — | MZN | MZN | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| NAD | Namibian Dollar | — | NAD | NAD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| NGN | Nigerian Naira | U+20A6 | ₦ | \textnaira | Nigerian Naira sign. | |
| NIO | Nicaraguan Córdoba | U+0043+0024 | C$ | C\$ | Nicaraguan Córdoba. Same glyph as CAD — disambiguate by ISO code. | |
| NOK | Norwegian Krone | U+006B+0072 | kr | kr | Norwegian Krone. Same glyph as SEK / DKK / ISK. | |
| NPR | Nepalese Rupee | U+20A8 | ₨ | \textrupee | Nepalese Rupee — uses the generic Rupee sign ₨. | |
| NZD | New Zealand Dollar | U+004E+005A+0024 | NZ$ | NZ\$ | New Zealand Dollar. | |
| OMR | Omani Rial | U+0631+002E+0639 | ر.ع | {\arabictext ر.ع} | Omani Rial. | |
| PAB | Panamanian Balboa | — | PAB | PAB | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| PEN | Peruvian Sol | U+0053+002F | S/ | S/ | Peruvian Sol — 'S/' with a forward slash is the standard display. | |
| PGK | Papua New Guinean Kina | — | PGK | PGK | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| PHP | Philippine Peso | U+20B1 | ₱ | \textpeso | Philippine Peso sign. Shared with the historical Mexican peso glyph — context disambiguates. | |
| PKR | Pakistani Rupee | U+20A8 | ₨ | \textrupee | Pakistani Rupee — same glyph as the generic Rupee sign ₨. | |
| PLN | Polish Złoty | U+007A+0142 | zł | z\l | Polish Złoty. The 'ł' is U+0142 (Latin small letter l with stroke). | |
| PYG | Paraguayan Guaraní | U+20B2 | ₲ | \textguarani | Paraguayan Guaraní sign. | |
| QAR | Qatari Riyal | U+0631+002E+0642 | ر.ق | {\arabictext ر.ق} | Qatari Riyal. | |
| RON | Romanian Leu | U+006C+0065+0069 | lei | lei | Romanian Leu. | |
| RSD | Serbian Dinar | — | RSD | RSD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| RUB | Russian Ruble | U+20BD | ₽ | \textrubble | Russian Ruble sign, adopted 2014. Needs recent fonts; older renderers fall back to 'руб.' or the Cyrillic letter Р. | |
| RWF | Rwandan Franc | — | RWF | RWF | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SAR | Saudi Riyal | U+0631+002E+0633 | ر.س | {\arabictext ر.س} | Saudi Riyal. The generic riyal glyph ﷼ (U+FDFC) is also common. | |
| SBD | Solomon Islands Dollar | — | SBD | SBD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SCR | Seychellois Rupee | U+20A8 | ₨ | \textrupee | Seychellois Rupee. | |
| SDG | Sudanese Pound | — | SDG | SDG | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SEK | Swedish Krona | U+006B+0072 | kr | kr | Swedish Krona. 'kr' is shared with Norwegian, Danish, Icelandic krones — always pair with ISO code. | |
| SGD | Singapore Dollar | U+0053+0024 | S$ | S\$ | Singapore Dollar. | |
| SHP | Saint Helena Pound | — | SHP | SHP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SLE | Sierra Leonean Leone | — | SLE | SLE | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SOS | Somali Shilling | — | SOS | SOS | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SRD | Surinamese Dollar | — | SRD | SRD | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SSP | South Sudanese Pound | — | SSP | SSP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| STN | São Tomé and Príncipe Dobra | — | STN | STN | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SYP | Syrian Pound | — | SYP | SYP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| SZL | Swazi Lilangeni | — | SZL | SZL | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| THB | Thai Baht | U+0E3F | ฿ | \textbaht | Thai Baht sign. | |
| TJS | Tajikistani Somoni | — | TJS | TJS | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| TMT | Turkmenistani Manat | — | TMT | TMT | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| TND | Tunisian Dinar | U+0044+0054 | DT | DT | Tunisian Dinar. Arabic form is د.ت. | |
| TOP | Tongan Paʻanga | — | TOP | TOP | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| TRY | Turkish Lira | U+20BA | ₺ | \textliraturk | Turkish Lira sign, adopted 2012. Before adoption the Latin 'TL' was used. | |
| TTD | Trinidad and Tobago Dollar | U+0054+0054+0024 | TT$ | TT\$ | Trinidad and Tobago Dollar. | |
| TWD | New Taiwan Dollar | U+004E+0054+0024 | NT$ | NT\$ | New Taiwan Dollar. The Taiwanese $ or 圓 is also seen locally. | |
| TZS | Tanzanian Shilling | U+0054+0053+0068 | TSh | TSh | Tanzanian Shilling. | |
| UAH | Ukrainian Hryvnia | U+20B4 | ₴ | \texthryvnia | Ukrainian Hryvnia sign. | |
| UGX | Ugandan Shilling | U+0055+0053+0068 | USh | USh | Ugandan Shilling. | |
| USD | United States Dollar | U+0024 | $ | \$ | Dollar sign. Shared with 20+ currencies — always pair with ISO 4217 code in multi-currency UIs. | |
| UYU | Uruguayan Peso | U+0024+0055 | $U | \$U | Uruguayan Peso. | |
| UZS | Uzbekistani Sum | — | UZS | UZS | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| VES | Venezuelan Bolívar Soberano | U+0042+0073+002E+0053 | Bs.S | Bs.S | Venezuelan Bolívar Soberano. The plain 'Bs.' also appears in older systems. | |
| VND | Vietnamese Đồng | U+20AB | ₫ | \textdong | Vietnamese Đồng sign. | |
| VUV | Vanuatu Vatu | — | VUV | VUV | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| WST | Samoan Tala | — | WST | WST | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| XAF | Central African CFA Franc | U+0046+0043+0046+0041 | FCFA | FCFA | Central African CFA Franc — no Unicode code point; 'FCFA' is the written convention. | |
| XCD | East Caribbean Dollar | U+0045+0043+0024 | EC$ | EC\$ | East Caribbean Dollar. | |
| XOF | West African CFA Franc | U+0043+0046+0041 | CFA | CFA | West African CFA Franc — no Unicode code point; 'CFA' is the written convention. | |
| XPF | CFP Franc | U+20A3 | ₣ | \textfranc | CFP Franc (French Pacific) — uses the generic French franc sign ₣. | |
| YER | Yemeni Rial | — | YER | YER | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| ZAR | South African Rand | U+0052 | R | R | South African Rand — plain Latin R. | |
| ZMW | Zambian Kwacha | — | ZMW | ZMW | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. | |
| ZWL | Zimbabwean Dollar | — | ZWL | ZWL | No dedicated Unicode symbol — use the ISO 4217 alpha code in UI. |
Currencies without a dedicated Unicode glyph use the ISO 4217 three-letter code as their display form — that's the actual ISO recommendation, not a fallback. Examples: CHF for the Swiss Franc, RWF for Rwandan Franc, FCFA / CFA for the two CFA franc zones. Don't invent a glyph the standard does not assign.
This is the section the other reference pages skip. Five glyphs are shared across multiple national currencies, and treating the symbol as a unique identifier is one of the most common bugs in multi-currency UIs. The fix is not a different glyph — it's always pair the symbol with the ISO 4217 alpha code in any context where the user might encounter more than one currency.
Three patterns work, in roughly increasing order of correctness:
Intl.NumberFormat with the currency code picks the right symbol, decimal separator and placement for the user's locale. This is the right answer for almost every web app.What does not work: assuming the user's browser locale matches their currency preference (an American buying in EUR should still see EUR-formatted prices), or detecting currency from IP geolocation (VPN, travel, expat). The currency is part of the data, not the user.
The right answer is always: pass an ISO 4217 code to a locale-aware formatter and let the platform pick the glyph, decimal precision, and placement. Hand-coding "$" or "€" hard-wires assumptions that break in production. Three working examples follow — JavaScript, Python and LaTeX.
// One formatter per (locale, currency) pair.
const eur_de = new Intl.NumberFormat('de-DE', {
style: 'currency', currency: 'EUR'
});
eur_de.format(1234.5); // "1.234,50 €"
const jpy_jp = new Intl.NumberFormat('ja-JP', {
style: 'currency', currency: 'JPY'
});
jpy_jp.format(1234.5); // "¥1,235" (no decimals — JPY)
const kwd_ar = new Intl.NumberFormat('ar-KW', {
style: 'currency', currency: 'KWD'
});
kwd_ar.format(1234.5678); // "د.ك. 1,234.568" (3 decimals)
from babel.numbers import format_currency
format_currency(1234.5, 'EUR', locale='de_DE')
# '1.234,50\xa0€'
format_currency(1234.5, 'JPY', locale='ja_JP')
# '¥1,235'
format_currency(1234.5678, 'KWD', locale='ar_KW')
# 'د.ك.\xa01,234.568'
# Without Babel: locale module works but is single-locale-per-process
# and doesn't know per-currency decimal precision. Babel is worth
# the dependency.
% In your preamble:
\usepackage[utf8]{inputenc}
\usepackage{eurosym} % \euro
\usepackage{textcomp} % \textyen, \textcent, \textcurrency
\usepackage{pifont} % various symbol commands
% In the document body:
\$100 % $100
\pounds 100 % £100
\euro 100 % €100
\textyen 100 % ¥100
\rupee 100 % ₹100 (requires \usepackage{tipx})
Two anti-patterns that show up in code review again and again. String concatenation: "$" + amount.toFixed(2) hard-wires USD, two-decimal, prefix-placed, US-thousand-separators — wrong for every other locale. Locale detection from IP: a German user paying in EUR should see EUR formatted by their browser locale, regardless of which country their datacentre exit node lives in. Currency is a property of the transaction; locale is a property of the user. Don't conflate them.
In modern UTF-8 documents you can paste the literal currency character into your HTML — no entity required. Entities still matter for legacy ASCII-only contexts (some email clients, ancient CMS systems, hand-edited XML). The five currency entities people actually search for:
| Symbol | Named entity | Numeric entity | Hex entity | Currencies |
|---|---|---|---|---|
| € | € | € | € | EUR |
| £ | £ | £ | £ | GBP, EGP, LBP, SHP, GIP, FKP, SDG, SSP |
| ¥ | ¥ | ¥ | ¥ | JPY, CNY |
| ¢ | ¢ | ¢ | ¢ | USD subunit (and others) |
| $ | $ | $ | $ | USD + 23 others — see ambiguity table |
| ₹ | — (no named entity) | ₹ | ₹ | INR |
| ₽ | — (no named entity) | ₽ | ₽ | RUB |
| ₩ | — (no named entity) | ₩ | ₩ | KRW, KPW |
| ₺ | — (no named entity) | ₺ | ₺ | TRY |
| ฿ | — (no named entity) | ฿ | ฿ | THB |
| ₪ | — (no named entity) | ₪ | ₪ | ILS |
| ₨ | — (no named entity) | ₨ | ₨ | PKR, LKR, NPR, MUR, SCR |
Only €, £, ¥, ¢ and $ have named HTML entities — the rest require numeric or hex form. In any UTF-8 document you can paste the literal character and skip entities entirely; modern browsers, terminals and editors handle it correctly. Entities are an artefact of the ASCII era that's still occasionally useful for systems that aren't fully Unicode-clean.
Not every currency symbol renders in every font. The pattern is straightforward: a font shipped before a symbol's Unicode addition won't have a glyph for it, and the user sees a "tofu" box (☐) or a missing-glyph rectangle. The recently-added symbols most likely to need a fallback font:
The fix is a CSS font-family stack with a Unicode-coverage fallback. Noto Sans, DejaVu Sans and Symbola all cover the entire Currency Symbols block. Keep the brand font as the primary and the fallback for missing glyphs:
body {
font-family: "YourBrandFont", "Noto Sans", -apple-system,
BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
For Arabic-script currency marks (د.إ, ر.س, ﷼, ؋) you also want an Arabic-coverage font in the stack — Noto Sans Arabic or Amiri. Right-to-left layout is handled separately via dir="rtl" or the direction CSS property; the symbol itself still flows in RTL when the surrounding text is RTL.
€ or numeric reference € (Unicode code point U+20AC). In modern UTF-8 documents you can paste the literal € character directly — entities are only needed in legacy ASCII-only contexts.₹ (HTML), "\u20B9" (JS / Python), or "₹" directly in any UTF-8 source file.Intl.NumberFormat with the currency code — it picks the right symbol, the right decimal places (JPY has none, KWD has three) and the right placement for the user's locale. Example: new Intl.NumberFormat("de-DE", {style: "currency", currency: "EUR"}).format(1234.5) returns "1.234,50 €". Hand-coding the symbol breaks every locale that is not yours.font-family.Other reference pages in this collection — pair these with your integration when you need a single source of truth for currency metadata.
Full alpha + numeric + subunit table for every active and retired ISO 4217 code.
Standard + reduced VAT / GST for 120 countries, EU rates pulled live from the EC feed.
Current policy rates for 30 major central banks with rate-name and next-meeting dates.
Live and historical FX rates for 170+ currencies. Code samples in 5 languages.
The same currency metadata that powers this page is available via the API — live rates, ISO 4217 codes, supported currencies. Free key, 200 requests/day, no card required.
200 requests/day free · No card required · Pro plan from $9/mo