Also available in: Español · Português · Français · العربية
Currency Symbols
All 178 currencies with their symbols, codes and decimal places, and an honest account of why the symbol is the least reliable part.
What are currency symbols?
A currency symbol is the mark written in front of an amount — $, €, £, ¥. Everyone knows what they are, and almost every table of them on the web is headed “ISO 4217”. That attribution is wrong in an interesting way: ISO 4217 does not define a single currency symbol.
The standard is maintained by SIX Financial Information on behalf of ISO, and its published list has exactly five fields per entry: country name, currency name, the three-letter alphabetic code, the three-digit numeric code, and the number of minor units. There is no symbol column. We check this in the generator rather than take it on trust, so if a future edition adds one, the build fails instead of the page quietly becoming wrong.
So where do symbols come from? Unicode CLDR — the same data your operating system and browser use to format money. That is a different kind of authority answering a different question. ISO says what a currency is called and how it divides; CLDR says how people in a particular place write it. This page carries both, side by side, which is the only honest way to present them.
The table covers all 178 currency codes in the current ISO list, including the ones people forget: gold is XAU, the IMF's special drawing right is XDR, and XXX is the code that formally means “no currency”.
How to use this page
- Search for a currency by anything you know. The box matches names, three-letter codes, numeric codes and symbols. Exact code matches rank first, which matters more than it sounds: searching “eur” would otherwise return the WIR Euro and four European units of account ahead of the euro itself.
- Change the locale to see the symbol move. The selector switches which reader the symbols are written for. Watch the Australian dollar as you do it: it is A$ to an American, a plain $ to an Australian, AU$ to a Canadian and “$ AU” in French. The same currency, six different renderings across thirteen locales.
- Click any code or symbol to copy it. Everything in the table is a copy button. Nothing is uploaded when you use it — the whole dataset is already in your browser.
The symbol depends on who is reading
This is the fact that breaks most currency tables. A symbol is not a property of a currency; it is a property of a currency and a reader together. Across only thirteen locales, 60 of the 178 currencies — about a third — are written more than one way.
The Australian dollar is the clearest case, with six distinct renderings: A$, $, AUD, AU$, $AU and “$ AU”. The US dollar has five, the Canadian dollar four. Even the euro is not universal: it is € in most places, but Australian English and Mexican Spanish both write it as the bare code EUR, because in those places it is a foreign currency that benefits from being spelled out.
CLDR actually publishes two symbols per currency for exactly this reason. There is a short form — the least a local reader needs, which for the Australian dollar in Australia is simply $ — and a disambiguated form that adds whatever prefix stops it being confused with someone else's dollar. Both columns are in the table above. The short one is what you want inside a price on a page where the currency is already obvious; the long one is what you want in a list where it is not.
One detail worth knowing if you ever compare symbols as strings: the yen is not the same character everywhere. Outside Japan it is U+00A5, the yen sign. In Japanese it is U+FFE5, the fullwidth yen sign — a different code point that looks nearly identical. A byte comparison of “the yen symbol” will fail across those two locales, and no amount of trimming will fix it.
Symbols collide, and often do not exist
In English, the short symbol $ stands for 29 different currencies. Not just the American and Australian and Canadian dollars, but the Argentine, Bahamian, Barbadian, Belize, Bermudian, Brunei, Chilean, Colombian, Cuban, Fijian, Guyanese, Hong Kong, Jamaican, Liberian, Mexican, Namibian, New Zealand, Singapore, Solomon Islands, Surinamese, Taiwanese, Trinidadian and Uruguayan ones, plus the East Caribbean and Cayman Islands dollars.
It is not the only one. The pound sign stands for six currencies, “kr” for the Danish, Icelandic, Norwegian and Swedish crowns, “Rs” for the Sri Lankan, Mauritian, Nepalese and Pakistani rupees, ¥ for both the Chinese yuan and the Japanese yen, and ₩ for both Korean wons. A symbol is therefore never safe as an identifier. The three-letter code always is, which is the whole reason ISO 4217 exists.
The other half of this is quieter: 78 of the 178 currencies have no symbol at all in English. CLDR simply writes the code, because no distinct mark is in common use. If you have ever built a dropdown that shows a symbol beside every currency, roughly forty per cent of your rows were showing the code and pretending it was a symbol. This page lists them explicitly rather than hiding the gap.
Not every currency has two decimal places
Two decimals is the default and it is far from universal. Of the 178 codes, ISO gives 139 two decimals, 17 none at all, seven three decimals, and two four decimals. The Japanese yen, Korean won and Icelandic króna have no subunit, so a yen amount with a decimal point is simply wrong. The Bahraini, Iraqi, Jordanian, Kuwaiti, Libyan, Omani and Tunisian dinars divide into a thousand, so a Kuwaiti price carries three decimals. The Chilean unidad de fomento and the Uruguayan nominal wage index carry four.
Anything storing money in a fixed two-decimal column is therefore wrong at both ends: it cannot represent a Kuwaiti dinar exactly, and it invites a half-yen that cannot exist. Storing minor units as an integer along with the code is the fix, and the minor-unit column is the number you need to do it.
There is a subtler complication, and this page shows it rather than choosing a side. ISO and Unicode disagree about the decimals for sixteen currencies. Every disagreement has the same shape — Unicode says zero where ISO says two or three — and one cause: the subunit legally exists but inflation has made it worthless, so nobody writes it. The Iraqi dinar is the sharpest case, legally divided into a thousand fils that no longer circulate. ISO is right about the law and Unicode is right about the practice, and which one you want depends on whether you are settling a contract or printing a price.
Honest limits
This is a snapshot of a list that moves. The ISO file it was built from carries its own publication date, and codes change when countries redenominate or join a currency union. Nothing is fetched at runtime, so a change after this page was built is not reflected here; the generator is in the repository and regenerating is one command.
The two sources also disagree about membership, not just decimals. Unicode's own list of currency codes has 162 entries where ISO's has 178. The 22 ISO codes it omits are mostly funds, precious metals and test codes — gold, silver, palladium, the European units of account, and XXX itself. Worth knowing: Unicode still accepts every one of those codes if you pass it explicitly, it just does not list them. A runtime's list of valid values and the set of values it accepts are different sets.
In the other direction, Unicode still carries six codes ISO has withdrawn, including the Croatian kuna and the Netherlands Antillean guilder, because software has to keep formatting historical amounts after a currency dies. Those are not in the table here, since this is the current standard, but if your code accepts them from CLDR that is why.
Finally, this page has no exchange rates and will not get them. A rate is a live external dependency that would have to be fetched, cached and paid for, and a stale rate is worse than no rate. Everything here is a fact that only changes when a standards body says so.
Why is it free?
Because it is a table and a search box. The dataset is in the page you have already loaded, everything runs in your browser, and nothing you type leaves it — there is no server involved in looking up a currency code.
So there is no account, no sign-up and nothing held back. The generator that builds this from the ISO 4217 published list and Unicode CLDR is in the repository beside the page, together with the 1,006-assertion test suite that checks the codes, the decimals, the symbol collisions and the locale variation — including the negative controls that stop those tests passing for the wrong reason.