About
A dated snapshot, a USD base and one division. The limits are part of the tool.
Where the numbers come from
The table is a snapshot taken on 6 Nov 2026 from open.er-api.com, kept as an offline fallback. The page also asks this site's server for the latest published rates on load and on every change, so the calculator does not stay frozen on the build date.
The snapshot has a date because a rate without one is not a fact. A static fallback keeps the page useful offline; the live request keeps the numbers current when the network is available.
How the cross rate is calculated
value in target = amount × (rate[target] ÷ rate[source])Both rates are units per US dollar. The dollar cancels, leaving the target per source. The inverse shown in the result is 1 ÷ that number. No separate pair table is stored, which is why adding a currency adds one line rather than one line per existing currency.
Rounding
- Rates are shown with two decimals above 1,000, four between 1 and 1,000, and up to eight below 1. The underlying value keeps full precision; only the display is rounded.
- Converted amounts use two decimals at or above 1, four between 0.01 and 1, and six below 0.01. A large amount in a low-value currency is rounded at the last displayed digit, not earlier.
- The cross table applies the same rule to every row, so the rows are consistent with each other even if one of them looks over-precise.
Rounding is a display decision. If you need an exact figure for a contract, use the unrounded rate your counterparty specifies and round once, at the end.
Which currencies are included
153 codes are included, covering the currencies of most countries and several territories and pegs. The selection favours currencies with a published market rate. A few are deliberately absent:
- Obsolete codes such as the Croatian kuna, the Sierra Leonean old leone and the Zimbabwean dollar, which have been replaced.
- Units of account such as the IMF's special drawing right, which is not a currency you can hold in a wallet.
- Currencies without a reliable public quote, which are left out rather than filled with an estimate.
If a country uses another country's currency, the currency is in the table even if the country's name is not. Ecuador and El Salvador use the US dollar; Kosovo and Montenegro use the euro.
What the tool does not know
- Your provider's rate. Banks, cards and transfer services add a margin. The page has no access to your account or their pricing.
- The live rate. The server fetches the latest published rates and caches them briefly; the embedded snapshot is used only when that request fails. Even then this is a reference rate, not a tradable quote.
- Fees and taxes. A foreign-transaction fee, a wire fee or a withholding tax is outside the arithmetic.
- History and forecasts. There is no chart and no prediction. A single rate is not a trend.
How the pages are built
Four static pages, one stylesheet and one generated script, served from this domain. The engine carries the fallback rate object inline and asks this site's /api/rates for the current table; there is no third-party script, no analytics and no cookie. The visible table is generated at build time from the same fallback file.
Updating the rates
Replace assets/rates.json with a new snapshot, keep the same shape, set as_of to the snapshot date, then run python3 build.py. The table, the engine and the date in the result panel update together. Do not edit the generated files under site/; the next build overwrites them. The live endpoint refreshes on its own; this file only sets the fallback used when it is unreachable.
Corrections
If a currency is mislabelled or a conversion is wrong, the fix belongs in the JSON or the script, not in a hand-edited page. The worked example on the main page (EUR to JPY at the published snapshot) is the check used for a change.