Skip to main content
Utily
Finance

Currency Converter

Convert between world currencies using daily reference exchange rates from official central banks. Type something like 100 USD to EUR or use the selectors below.

Try: 100 USD to EUR or 5000 yen in usd

How it works

  1. 1

    Type or select

    Type a phrase like 100 USD to EUR straight into the smart input, or pick the currencies and amount from the dropdowns.

  2. 2

    Swap direction

    Use the swap button to reverse the direction of the conversion with one click.

  3. 3

    See every rate

    Open Show All Currencies and your amount is quoted against every supported currency in one grid.

Where the rates come from

Every number in the converter begins at one constant: API_BASE = "https://api.frankfurter.dev/v2" (src/app/currency-converter/lib.ts). Two requests do the work. Choosing a pair calls /rate/{from}/{to} for that direction's figure, and the all-currencies grid calls /rates?base= to fetch everything quoted against your base at once. Frankfurter is an open-source aggregator of official reference rates, blending figures from central banks and statistical authorities — the European Central Bank was its original source, which is where the name comes from — and it publishes mid-market values, taking the midpoint wherever a source reports separate buy and sell prices.

The currency dropdown lists 164 codes, and the live feed answered for 163 of them on the day this page was written; the Bulgarian lev had no current print, and the card reports such a pair as unavailable rather than guessing. Each answer carries the date of the underlying observation, and the result card prints it as 'Rates as of …'. Those dates do not all move together: in that same pull, the euro-dollar figure was stamped 2026-10-08 while a less-traded code beside it still read 2026-10-07, because publishers release on their own schedules. A ten-minute cache (the lib's CACHE_TTL) sits in front of the API, so repeating a conversion inside that window reuses the stored figure instead of re-fetching it.

Reference rates are daily by design, not a live trading feed. The ECB publishes its euro reference rates once per TARGET business day, at about 16:00 Central European Time; over a weekend the newest observation remains Friday's until Monday evening. Treat the displayed date as part of the answer. A figure a day or three old is normal here, and refreshing the page cannot hurry the publishers — the stamp changes when the next print lands, not when you press the button.

Mid-market vs the rate you actually get

The mid-market rate is the midpoint between what sellers ask and what buyers bid for a currency — the price two banks settling large amounts with each other would land on. It is what data screens quote, what this tool shows, and what almost no retail customer transacts at, because providers earn their margin by quoting one side of the market or by widening the gap between the two. The reference figure is a genuine midpoint; the distance between it and your statement is the cost of access, not an error in the conversion.

A worked example fixes the idea. On 2026-10-08 the feed behind this tool quoted 1 EUR = 1.1236 USD, so converting 1,000 euros at the midpoint yields 1,123.60 USD. Suppose the card or bank completing the payment applies a 3 percent spread: it converts at an effective 1.0899, the same 1,000 euros returns 1,089.89 USD, and the missing 33.71 is the spread's share of the transaction. The table runs the identical example with a milder spread beside it for contrast.

ScenarioRate appliedYou receiveShortfall vs mid-market
Reference midpoint (2026-10-08)1.12361,123.60 USD—
Provider at a 1% spread1.11241,112.36 USD11.24 USD
Provider at a 3% spread1.08991,089.89 USD33.71 USD

Spreads vary by provider, by card, and by transaction type; 1 to 3 percent covers common card and bank ground without being a bound, and wire services can sit further out. One retail pattern deserves naming: dynamic currency conversion, where a foreign payment terminal offers to bill you in your home currency rather than the local one. Accepting hands the exchange to the merchant's processor, whose rate typically carries a wider margin than your own card's — the terminal shows a number but never the comparison. The converter models none of this deliberately: it prices the currency, not access to it, which keeps its figure a baseline you can hold any offer against.

Reading cross rates

Reference data, the ECB's included, is published euro-first: each currency is quoted as its value in euros. When you ask for a pair with no euro in it, the tool's request — /rate/USD/JPY, for instance — is answered by computing the cross through those euro-centered figures. You can reproduce the chain from published numbers: with the euro at 1.1236 dollars and 177.82 yen, the implied dollar price is 177.82 ÷ 1.1236 = 158.26 yen, which is precisely what the API returned for the direct USD/JPY request. Two euro legs, one division.

Ask for both directions of the same pair and the answers agree only to about four significant digits. On the date above, EUR/USD printed 1.1236 while USD/EUR printed 0.88996; the exact inverse of the first is 0.89000, which misses the second in the fifth digit. Underlying figures are stored with varying precision, so the tail of a reverse quote is rounding rather than information, and five printed digits are not five digits of quality. The display rounds harder still: the converter shows the pair rate to four decimals but multiplies your amount with the full-precision value, so 1,000 USD displays a rate of 0.8900 yet converts to 889.96 EUR. Where the printed rate and the converted amount appear to disagree, the amount is the accurate one.

Requesting the pair directly also keeps each answer tied to a single observation: the API resolves the exact direction you asked for and stamps it with the date of the figure that produced it, which is the date the card shows. The all-currencies grid is the exception by design — it asks once for a base (/rates?base=) and applies that one snapshot to every quote at once, which is the correct behavior when a single publication date should govern a whole table.

What this tool is not

It is not a booking rate. The figure on screen is a daily reference midpoint; any real transaction adds a spread or a fee on top, so treat the number as the baseline for judging an offer and take the true cost from your card's or bank's own quote for the same day.

It is not a remittance comparator. Sending money abroad stacks transfer fees, receiving fees, and delivery times on top of the rate, none of which a spot figure sees — a specialist money-transfer comparison service is the instrument for pricing a remittance.

It is not a cryptocurrency price. The 164-code list holds national currencies plus the few non-national codes the feed publishes — the IMF's XDR and the precious-metal units such as XAU among them — and no Bitcoin or stablecoin pair exists anywhere in it, so a crypto price tracker is where those belong.

It is not a market-timing aid. Prints arrive once a day, intraday movement never reaches them, and the spread around any actual transaction dwarfs the day-to-day drift visible here; for live prices, a market data feed is what to consult.

It is not an archive. The API underneath can answer dated historical queries, but this tool always requests the latest figure and stores nothing, so it cannot show where a pair stood on a past date — for that, query the API's historical endpoints or the ECB's statistical warehouse directly.

Frequently asked questions

How do I convert currencies?
Type an amount and two currencies in the smart input (e.g. "100 USD to EUR") or use the dropdown selectors below. The result appears as you type, using the latest available exchange rate.
Where do the exchange rates come from?
Rates come from the Frankfurter API, an open-source aggregator of official central-bank reference rates. The European Central Bank was its original data source and remains one of its providers; figures update each business day. The converter caches each pair for 10 minutes and shows the date of the rate it used.
How many currencies are supported?
The converter lists world currencies including USD, EUR, GBP, INR, JPY, and more. The feed carries daily reference rates for the major currencies; some less-traded codes may not have a rate available and will show a notice if so.
How often are the exchange rates updated?
The feed refreshes once per business day, tracking the daily prints of the central banks it aggregates; the ECB — the original source — prints its euro reference rates around 16:00 CET. These are not real-time trading prices — they are daily reference rates meant for accounting and information purposes.
Can I see all conversion rates at once?
Yes. Click the "Show All Currencies" button below the result to see your amount converted to every supported currency in a grid view.
Is this currency converter free?
Yes, completely free with no signup required. Calculations run in your browser; only the currency pair is sent to the rate API to fetch the result.

Related tools

Last updated: October 8, 2026