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

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:

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

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.