← All Tools ZeroDataUpload Home
💱

CurrencyX

30 currencies with live ECB rates, historical charts, conversion history & CSV export

Launch CurrencyX →
CurrencyX

Table of Contents

  1. Overview
  2. Key Features
  3. The Three Tabs
  4. Supported Currencies
  5. Exchange Rate API
  6. Technical Details
  7. How to Use
  8. Frequently Asked Questions
  9. Privacy & Security

Overview

CurrencyX is a privacy-first currency converter and rate tracker that supports 30 fiat currencies with country flag emojis, powered by live exchange rates from the European Central Bank (ECB) via the Frankfurter API. It features three dedicated tabs -- Converter, Rate Tracker, and History -- each designed to give you comprehensive insight into global currency markets without ever compromising your privacy.

The Converter tab provides instant currency conversion with 6-decimal precision, a swap button for quick pair reversal, 12 quick pair buttons for the most popular currency combinations, and a multi-currency overview table that shows your amount converted to all 29 other currencies simultaneously. The Rate Tracker tab renders historical exchange rate charts using Chart.js 4.4.4 with gradient fill and the date-fns adapter, supporting four time periods (7 days, 30 days, 90 days, and 1 year) along with six statistical metrics including annualized volatility. The History tab records up to 200 conversions in localStorage with full CSV export and drag-drop CSV import capabilities.

Exchange rates are fetched from the Frankfurter API (api.frankfurter.dev), which is backed by the European Central Bank and updated daily at 16:00 CET on business days. CurrencyX auto-refreshes rates every 5 minutes (300,000ms interval) while the page is open, maintains an in-memory cache per base currency to minimize API calls, and provides graceful offline fallback to cached rates with a visual status indicator. Aside from this anonymous public API call to fetch rates, all processing -- including amount calculations, chart rendering, history management, and CSV generation -- happens entirely in your browser. No personal data, no authentication tokens, and no conversion details are ever transmitted.

Key Features

30 World Currencies

USD, EUR, GBP, JPY, INR, CNY and 24 more fiat currencies, each with its country flag emoji for instant visual recognition. All rates are sourced from the European Central Bank, one of the most trusted rate providers in the world.

Live ECB Exchange Rates

Rates are updated daily at 16:00 CET via the Frankfurter API, backed by ECB reference data. CurrencyX auto-refreshes every 5 minutes while the page is open. In-memory caching per base currency reduces redundant API calls, and an offline fallback uses cached rates when connectivity is lost.

Historical Rate Charts

Built with Chart.js 4.4.4 featuring a gradient-filled line chart and the date-fns adapter for time-based X-axis rendering. Choose from four time periods -- 7 days, 30 days, 90 days, or 1 year -- with the X-axis dynamically adjusting its unit (day, week, or month) based on your selection.

Rate Statistics

Six statistical metrics displayed alongside the chart: Current Rate, Period High, Period Low, Average Rate, Annualized Volatility (calculated as the square root of the variance of daily returns multiplied by 252, then multiplied by 100), and Percentage Change with green for positive and red for negative movements.

Multi-Currency Overview

Below the main conversion result, a scrollable table displays your entered amount converted to all 29 other supported currencies simultaneously. This overview updates in real time whenever you change the amount or base currency, giving you a complete snapshot of global rates at a glance.

Conversion History

Every conversion is automatically saved to localStorage (up to 200 records, oldest removed when full). Export your complete history as a CSV file named currencyx-history.csv with columns for Date, From, To, Amount, Result, and Rate. Import CSV files via drag-and-drop with a preview before committing, and clear all history with a double-click confirmation.

12 Quick Pairs

One-click buttons for the 12 most popular currency pairs: USD/EUR, USD/GBP, USD/JPY, EUR/GBP, USD/INR, USD/CAD, EUR/JPY, GBP/EUR, USD/CNY, USD/AUD, USD/CHF, and EUR/CHF. Clicking a quick pair button instantly sets the From and To currencies, triggering an immediate conversion with the current amount.

Smart Number Formatting

Exchange rates are displayed with 6-decimal precision for accuracy. Conversion results use 2 to 4 decimal places depending on the currency. Very small rates (below 1) show up to 8 decimal places to maintain precision. All numbers use locale-aware comma formatting for readability across different regional number conventions.

The Three Tabs

Tab 1: Converter

The Converter tab is the primary interface for currency conversion. At the top, you will find two currency selectors -- From and To -- each displaying all 30 currencies with their country flag emojis. Between the selectors is a swap button (⇔) that instantly reverses the currency pair. Below the selectors is the amount input field, which triggers conversion automatically with a 600-millisecond debounce to prevent excessive API calls while you type.

The conversion result is displayed prominently with the exchange rate shown at 6-decimal precision. You can download any individual conversion result as a .txt file for your records. Below the result area, 12 quick pair buttons provide one-click access to the most common currency combinations: USD/EUR, USD/GBP, USD/JPY, EUR/GBP, USD/INR, USD/CAD, EUR/JPY, GBP/EUR, USD/CNY, USD/AUD, USD/CHF, and EUR/CHF.

Scrolling further down reveals the multi-currency overview table, which simultaneously shows your entered amount converted to all 29 other currencies. Each row displays the currency code, country flag, and the converted amount -- giving you a comprehensive view of what your money is worth across the globe in a single glance.

Tab 2: Rate Tracker

The Rate Tracker tab provides historical exchange rate visualization and statistical analysis. The centerpiece is a Chart.js 4.4.4 line chart with a gradient fill (the area below the line is filled with a semi-transparent gradient that fades from the line color to transparent). The chart uses the date-fns adapter for its time-based X-axis, which automatically adjusts its unit display -- showing individual days for 7D and 30D periods, weeks for 90D, and months for 1Y.

Four period selection buttons let you choose your analysis window: 7D (seven days), 30D (thirty days), 90D (ninety days), and 1Y (one year). Historical data is fetched from the Frankfurter API using the date range endpoint (/v1/{date1}..{date2}?base={from}&symbols={to}), and the chart updates dynamically when you change the period or currency pair.

Below the chart, six statistical metrics provide quantitative insights into the rate movement over your selected period:

Tab 3: History

The History tab maintains a log of up to 200 past conversions, stored in your browser's localStorage under the key cx_history. When the 200-record limit is reached, the oldest conversions are automatically removed to make room for new ones. Each history record displays the country flag, currency pair (e.g., USD → EUR), the original amount and converted result, the date and time of the conversion, and the exchange rate used.

The CSV export button generates a file named currencyx-history.csv containing six columns: Date, From, To, Amount, Result, and Rate. This file is compatible with any spreadsheet application including Microsoft Excel, Google Sheets, and LibreOffice Calc. For CSV import, you can either click the import button to select a file or drag and drop a CSV file directly onto the import area. A preview of the imported data is shown before you confirm the import, allowing you to verify the contents before they are merged into your existing history.

To clear all history records, you must double-click the Clear All button. This double-click confirmation prevents accidental deletion -- a single click displays a warning prompt, and only a second click within the confirmation window actually deletes the data.

Supported Currencies

CurrencyX supports 30 fiat currencies, all sourced from the European Central Bank reference rates. No cryptocurrencies are included -- this is strictly a fiat currency converter. The complete list:

Exchange Rate API

CurrencyX uses the Frankfurter API (api.frankfurter.dev) as its sole data source. This is a free, open-source API backed by the European Central Bank (ECB), which publishes reference exchange rates daily at 16:00 CET on business days (Monday through Friday, excluding ECB holidays). The API requires no authentication, no API keys, and collects no user data -- making it ideal for a privacy-first application.

Three API endpoints are used:

CurrencyX maintains an in-memory cache of rates keyed by base currency. When you request a conversion for a base currency that has already been fetched during the current session, the cached rates are used immediately without making another API call. The cache is refreshed automatically every 5 minutes (300,000ms setInterval) to keep rates current. If the API is unreachable -- due to network issues, server downtime, or being offline -- CurrencyX falls back to the most recently cached rates and displays the last successful update timestamp so you know how current the data is.

Technical Details

CurrencyX is built entirely with vanilla JavaScript, HTML, and CSS -- no frameworks, no build tools, no server-side processing. Here are the key technical implementation details:

How to Use

  1. Open CurrencyX -- Navigate to the tool in your browser. No installation, no account creation, no sign-up required. Your local currency is automatically detected from your browser settings and pre-selected as the "From" currency on the Converter tab.
  2. Select Your Target Currency -- Use the "To" currency dropdown to choose your target currency from the list of 30 supported fiat currencies. Each currency is displayed with its three-letter ISO code and country flag emoji for easy identification. You can also click any of the 12 quick pair buttons (USD/EUR, USD/GBP, USD/JPY, EUR/GBP, USD/INR, USD/CAD, EUR/JPY, GBP/EUR, USD/CNY, USD/AUD, USD/CHF, EUR/CHF) to instantly set both the From and To currencies.
  3. Enter an Amount -- Type your amount into the input field. Conversion happens automatically with a 600-millisecond debounce -- just stop typing and the result appears. You can also use the swap button (⇔) between the currency selectors to reverse the conversion direction without re-entering the amount.
  4. View the Conversion Result -- The exchange rate is displayed at 6-decimal precision, and the converted amount appears below with smart formatting (2-4 decimals depending on the currency). Scroll down to see the multi-currency overview table showing your amount converted to all 29 other currencies simultaneously.
  5. Analyze Historical Trends -- Switch to the Rate Tracker tab to see a Chart.js line chart of historical exchange rates for your selected pair. Choose from four time periods: 7D (one week), 30D (one month), 90D (three months), or 1Y (one year). Review the six statistics below the chart -- Current Rate, Period High, Period Low, Average, Volatility, and Change % -- to understand the rate's recent behavior.
  6. Review Your Conversion History -- Switch to the History tab to see all your past conversions (up to 200 records). Each entry shows the currency pair with flags, the amounts, the date and time, and the rate used. Click the CSV export button to download your complete history as currencyx-history.csv, or use drag-and-drop CSV import to restore history from a previous session.
  7. Download or Share Results -- On the Converter tab, use the download button to save individual conversion results as a .txt file. The file includes the currency pair, exchange rate, input amount, and converted result for your records.

Frequently Asked Questions

Where do the exchange rates come from?
CurrencyX uses the Frankfurter API (api.frankfurter.dev), which sources its data directly from the European Central Bank (ECB). The ECB publishes reference exchange rates for major world currencies every business day at 16:00 CET (Central European Time). These are the same reference rates used by financial institutions, central banks, and government agencies across Europe. Weekend and holiday rates reflect the last published business-day rates.
How often do exchange rates refresh?
While the ECB updates rates once daily at 16:00 CET, CurrencyX auto-refreshes its local cache every 5 minutes (300,000ms interval) while the page is open. This ensures that if a new ECB update becomes available during your session, CurrencyX picks it up promptly. Previously fetched rates are cached in memory per base currency to minimize redundant API calls. The status bar at the bottom of the interface always shows the ECB reference date and the local time of your last successful rate update.
What does the volatility statistic mean?
Volatility represents the annualized standard deviation of daily returns for a currency pair over the selected time period. It measures how much the exchange rate fluctuates from day to day. Technically, CurrencyX calculates the percentage change between each consecutive day's rate (daily returns), computes the variance of those returns, multiplies by 252 (approximate trading days per year) to annualize, takes the square root, and multiplies by 100 to express it as a percentage. A volatility of 10% means daily rate movements annualize to roughly 10% variation. Higher values indicate a more volatile (less stable) currency pair; lower values indicate a more stable relationship.
Can I see historical exchange rates?
Yes. The Rate Tracker tab displays a fully interactive Chart.js 4.4.4 line chart with gradient fill showing historical rates for any supported currency pair. You can select from four time periods: 7 days (7D) for recent short-term movement, 30 days (30D) for a monthly view, 90 days (90D) for a quarterly perspective, or 1 year (1Y) for long-term trend analysis. The chart's X-axis automatically adjusts its time unit (day, week, or month) based on the selected period for optimal readability. Historical data is fetched directly from the Frankfurter API's date range endpoint.
How many conversions are saved in history?
CurrencyX stores up to 200 conversion records in your browser's localStorage under the key cx_history. When the 200-record limit is reached, the oldest conversion is automatically removed each time a new one is added, maintaining a rolling window of your most recent conversions. Each record includes the currency pair, amounts, exchange rate used, and the exact date and time of the conversion. History persists across browser sessions but is deleted if you clear your browser's local storage or site data.
Can I export and import my conversion history?
Yes. The History tab includes a CSV export button that generates a file named currencyx-history.csv with six columns: Date, From, To, Amount, Result, and Rate. This file opens in any spreadsheet application (Excel, Google Sheets, LibreOffice Calc, Numbers). For importing, you can either click the import button to select a CSV file from your device or drag and drop a CSV file directly onto the import area. CurrencyX shows a preview of the imported data before committing, so you can verify the contents. This makes it easy to transfer your history between devices or restore it after clearing browser data.
What currencies are supported?
CurrencyX supports 30 fiat currencies: USD (US Dollar), EUR (Euro), GBP (British Pound), JPY (Japanese Yen), AUD (Australian Dollar), CAD (Canadian Dollar), CHF (Swiss Franc), CNY (Chinese Yuan), SEK (Swedish Krona), NZD (New Zealand Dollar), MXN (Mexican Peso), SGD (Singapore Dollar), HKD (Hong Kong Dollar), NOK (Norwegian Krone), KRW (South Korean Won), TRY (Turkish Lira), INR (Indian Rupee), BRL (Brazilian Real), ZAR (South African Rand), DKK (Danish Krone), PLN (Polish Zloty), THB (Thai Baht), IDR (Indonesian Rupiah), HUF (Hungarian Forint), CZK (Czech Koruna), ILS (Israeli Shekel), PHP (Philippine Peso), MYR (Malaysian Ringgit), RON (Romanian Leu), and ISK (Icelandic Krona). Cryptocurrencies are not supported -- CurrencyX is strictly a fiat currency tool.
Does CurrencyX work offline?
Partially. CurrencyX requires an internet connection to fetch exchange rates from the Frankfurter API. However, if you lose connectivity after rates have been loaded, the app gracefully falls back to its in-memory cached rates and continues to function for conversions. The status bar dot turns red to indicate the offline state, and the last successful update timestamp is displayed so you know how current your cached rates are. Historical chart data also uses cached data when available. Full offline functionality without any cached data is not possible since rates must be fetched at least once.
What do the status dot colors mean?
The animated status dot in the status bar indicates CurrencyX's connection health at a glance. A green dot means the app is successfully connected to the Frankfurter API and exchange rates are up to date. A yellow dot means rates are currently being loaded or refreshed -- you will see this briefly on page load and during the 5-minute auto-refresh cycle. A red dot means an error occurred (API unreachable, network timeout, or the device is offline). When the dot is red, CurrencyX continues to use its most recently cached rates, and the status bar displays when those rates were last successfully updated.
Is my financial data safe?
Absolutely. CurrencyX is designed with privacy as a core principle. Your conversion history is stored exclusively in your browser's localStorage on your own device -- it is never uploaded, synced, or transmitted to any server. The only network request CurrencyX makes is to the public Frankfurter API to fetch exchange rates, which is an anonymous, unauthenticated public endpoint that does not track users or log requests. Your amounts, currency selections, conversion results, and calculation details never leave your browser. There are no user accounts, no cookies for tracking, no third-party analytics within the converter itself, and no fingerprinting. You are in complete control of your data, and you can delete all stored data at any time by clearing your browser's localStorage or using the double-click Clear All button on the History tab.

Privacy & Security

Your Data Never Leaves Your Device

CurrencyX fetches anonymous exchange rates from the public Frankfurter API (backed by the European Central Bank) -- no personal data, no authentication, no tracking. Your conversion history is stored exclusively in your browser's localStorage and is never transmitted. The only network request is the public rate API -- your amounts, currencies, and calculations never leave your device. There are no user accounts, no tracking cookies, and no third-party data collection within the converter. The Frankfurter API is a public, open-source service that does not log individual requests or track users. You can verify this yourself: open your browser's developer tools Network tab and observe that only requests to api.frankfurter.dev are made, with no personal data in any request parameters.

Ready to convert currencies with complete privacy? CurrencyX is free, fast, and runs entirely in your browser.

Launch CurrencyX →

Related

Milan Salvi

Milan Salvi

Founder, Leena Software Solutions

Milan is the founder of ZeroDataUpload and Leena Software Solutions, building privacy-first browser tools that process everything client-side. View all articles ยท About the author.

Last Updated: March 26, 2026