Currency Converter
Convert between major world currencies using ECB-sourced rates from the free Frankfurter API.
About the Currency Converter
Currency conversion looks like simple arithmetic - multiply the amount by a rate - but the rate you use determines whether the answer is theoretical or real. This calculator uses a static set of indicative rates: USD=1, EUR=0.92, GBP=0.79, JPY=149, INR=83.2, PKR=278, CAD=1.36, AUD=1.52. These are mid-market reference points compiled from public central-bank and FX-source data and refreshed periodically. They are not the rates a bank, card network, or money-transfer operator will give you on an actual transaction.
The spread between the indicative rate and the rate you actually receive is how most retail FX providers make money. Visa and Mastercard typically add a 1% network fee on foreign-card transactions; the issuing bank may add another 1-3% foreign-transaction fee on top. Money-transfer operators like Western Union and Wise apply margins that vary by corridor and direction - Wise publishes a mid-market rate with a transparent fee, while Western Union's spread is embedded in the displayed rate. The practical consequence: $500 converted to EUR on this calculator returns about EUR 460, but a card transaction at the same moment might deliver EUR 446-455 once fees are layered in.
For real-time data, this tool's documentation points to the Frankfurter API (https://api.frankfurter.app), a free, open-source service hosted by the European Central Bank. Frankfurter returns daily reference rates published by the ECB at around 16:00 CET on each business day. Those rates are the same ones this calculator approximates with the static values above - so for a same-day estimate, Frankfurter is the authoritative source. The static table is for quick mental math and budgeting.
The default $500 USD to EUR conversion at the indicative 0.92 rate returns EUR 460.00. A traveler who runs the same $500 through a US-issued credit card with a 3% foreign-transaction fee will see EUR 446.20 of spending power at the merchant - a $14.68 effective spread. The calculator surfaces this gap explicitly so users do not budget at the mid-market rate and then overspend abroad.
How It Works
The calculator maintains a static lookup table of indicative rates expressed as "1 USD = X units of foreign currency" (or, for currencies quoted differently, the same convention normalized to USD=1):
Indicative rates (USD = 1):
USD = 1.0000
EUR = 0.9200 (1 USD buys 0.92 EUR)
GBP = 0.7900
JPY = 149.00
INR = 83.20
PKR = 278.00
CAD = 1.3600
AUD = 1.5200
Conversion via USD cross-rate:
usd_amount = amount / rates[from_currency]
output = usd_amount x rates[to_currency]
For the default $500 USD to EUR: usd_amount = 500 / 1.0 = 500, output = 500 x 0.92 = EUR 460.00. The conversion flows through USD as the intermediate currency, which is how most retail FX is quoted in practice.
Cross-currency example: EUR 1,000 to GBP. First, usd_amount = 1000 / 0.92 = $1,086.96. Then output = 1086.96 x 0.79 = GBP 858.70. The cross-rate implied by these two conversions is 0.79 / 0.92 = 0.8587 GBP per EUR, which matches the direct EUR-GBP rate quoted on most FX platforms to four decimal places.
The calculator uses JavaScript's Intl.NumberFormat to format the output in the target currency's conventional symbol and decimal places - JPY shows no decimals, USD and EUR show two, and so on. This matches what a receipt or bank statement will display.
Worked Examples
Default example: $500 USD to EUR. usd_amount = 500 / 1.0 = $500.00, output = 500 x 0.92 = EUR 460.00. This is the indicative mid-market conversion; expect a real card transaction to deliver EUR 446-455 after a 1-3% foreign-transaction fee.
Cross-currency example: EUR 1,000 to GBP. usd_amount = 1000 / 0.92 = $1,086.96, output = 1086.96 x 0.79 = GBP 858.70. The implied cross-rate is 0.8587 GBP per EUR. A direct EUR-GBP conversion on a typical retail FX platform would land within a fraction of a percent of this figure.
JPY example: $1,000 USD to JPY. usd_amount = 1000 / 1.0 = $1,000, output = 1000 x 149 = JPY 149,000. The JPY rate has no decimal places (the yen is the only major currency with no subunit), so the calculator formats the output as a whole number. A traveler exchanging $1,000 in cash at a Tokyo airport kiosk might receive JPY 144,000-147,000 once the operator's spread is applied.
Reverse direction: INR 50,000 to USD. usd_amount = 50000 / 83.2 = $600.96, output = 600.96 x 1.0 = $600.96. The same INR 50,000 routed through a remittance corridor like Wise or Western Union will deliver $590-$598 after fees, with Wise typically within 0.5% of mid-market and Western Union varying by 1-3% depending on the payment method.
When to Use This Tool
Use the currency converter when you need to:
- Estimate how much foreign currency your USD will buy abroad for travel budgeting.
- Convert a foreign-currency invoice or expense into USD for accounting or tax reporting.
- Compare the indicative rate to the rate quoted by a bank, card network, or money-transfer operator to assess the spread.
- Plan a cross-border purchase by estimating the converted amount before fees and taxes.
- Teach the concept of cross-rates and USD as the world's reserve currency in an economics or finance class.
- Sanity-check the conversion quoted by an e-commerce site that prices in your home currency but settles in foreign currency.
- Estimate the USD value of a foreign-currency salary or freelance payment before receiving it.
Limitations & Disclaimer
The exchange rates used by this calculator are static, indicative, mid-market reference points, not live rates. Real transactions will differ because banks, card networks, and money-transfer operators apply spreads and fees of 0.5-3% depending on the corridor and provider. For live data, query the Frankfurter API (https://api.frankfurter.app) or a paid FX data service. This calculator does not model forward contracts, hedging, or intraday volatility. This tool is not financial, investment, or currency-trading advice. See our disclaimer for full terms.
Frequently Asked Questions
Are these exchange rates live?
No. The rates used by this calculator (USD=1, EUR=0.92, GBP=0.79, JPY=149, INR=83.2, PKR=278, CAD=1.36, AUD=1.52) are indicative mid-market reference points, refreshed periodically. They are suitable for budgeting and quick mental math but will not match the live rate you receive on an actual transaction. For live data, use the Frankfurter API at https://api.frankfurter.app, which returns daily reference rates published by the European Central Bank.
Why does the converted amount not match what my bank or card gives me?
Banks, card networks (Visa, Mastercard), and money-transfer operators apply a spread between the mid-market rate and the rate they offer retail customers. Visa and Mastercard typically add a 1% network fee; the issuing bank may add another 1-3% foreign-transaction fee. Wise publishes the mid-market rate with a transparent fee; Western Union embeds the margin in the displayed rate. Expect to receive 1-3% less than this calculator shows on a card transaction.
What is a foreign-exchange spread?
The spread is the difference between the bid (the rate at which the bank buys foreign currency from you) and the ask (the rate at which the bank sells foreign currency to you). The mid-market rate sits between them. The spread is how retail FX providers make money on transactions that appear "fee-free" - the fee is embedded in the rate. This calculator reports only the mid-market rate; it does not model spreads.
How do I get real-time exchange rates?
Use a free public API such as Frankfurter (https://api.frankfurter.app), which is hosted by the European Central Bank and returns daily reference rates for about 30 currencies. For higher-frequency data, paid services like Open Exchange Rates, Fixer, or XE offer intraday updates. The ECB publishes its reference rates once per business day at around 16:00 CET - so even "live" APIs that source from the ECB will not update between publications.
What is the Frankfurter API and why is it free?
Frankfurter is a free, open-source API that serves the European Central Bank's daily reference exchange rates. It is hosted by the ECB and does not require an API key for moderate usage. It returns JSON for current rates, historical rates back to 1999, and time-series. Because it sources from the ECB, it updates once per business day and covers about 30 major currencies - sufficient for most consumer and small-business use cases.
How are cross-rates (e.g., EUR to GBP) computed when neither currency is USD?
Cross-rates are computed via a common intermediate currency, usually USD. To convert EUR to GBP: first convert EUR to USD (divide by the EUR rate), then convert USD to GBP (multiply by the GBP rate). The implied cross-rate is GBP rate divided by EUR rate. This is how this calculator handles non-USD pairs, and it is how most retail FX platforms compute cross-rates internally.
Why is the JPY rate shown without decimal places?
The Japanese yen is the only major currency with no subunit (no "yen cents"). Amounts are rounded to the nearest whole yen. JavaScript's <code>Intl.NumberFormat</code> handles this automatically based on the ISO 4217 currency code. Other currencies with no subunits include the Icelandic krona, the Hungarian forint, and the Korean won.
Last updated: September 9, 2026 · Author: HT99 Tools Editorial Team