Every "free forex data" listicle tells you where to download. None tell you what is missing once you do, which is the only thing that matters — a backtest run across a silent three-day hole produces a confident number built on absent history. So this page compares sources by their gaps, and it starts by publishing the gaps in our own archive.
It would be convenient to skip this section. Publishing your own flaws in a page that recommends your own tool is not standard practice, but a gap audit that exempts the author is worthless.
Running a coverage check across 1,911,141 EURUSD one-minute bars spanning 3 January 2021 to 30 April 2026, on 17 August 2026, produced these holes — stretches where the archive simply has no bars:
| Last bar before hole | Next bar after | Days missing |
|---|---|---|
| 2023-12-29 | 2024-01-01 | 3 |
| 2025-06-25 | 2025-06-30 | 4 |
| 2025-07-02 | 2025-07-07 | 4 |
| 2025-07-22 | 2025-07-28 | 5 |
| 2025-09-24 | 2025-09-28 | 4 |
| 2025-11-20 | 2025-11-24 | 3 |
| 2026-03-06 | 2026-03-12 | 5 |
Seven holes across five years. Some are ordinary — the 2023-12-29 to 2024-01-01 gap is the New Year weekend and correct. Others are not: a five-day hole in July 2025 is missing history, inherited from the upstream provider.
Also worth knowing before you trust index data: Dukascopy genuinely has no index history for 10–18 March 2021, so SPX500 and NAS100 carry an eight-day hole that no amount of refetching will fill. That is upstream, not fixable.
The other thing free data will not warn you about is the weekend gap — price jumping between Friday's close and Sunday's open with nothing tradeable in between. Strategies holding over a weekend are exposed to it, and most backtests quietly pretend it is not there.
Measured across the same 1.9 million EURUSD bars:
| Statistic | Value |
|---|---|
| Gaps observed | 309 |
| Median gap | 5.4 pips |
| 75th percentile | 13.6 pips |
| 90th percentile | 35.0 pips |
| 99th percentile | 127.5 pips |
| Largest observed | 163.5 pips |
| Share exceeding 10 pips | 31.39% |
Read the shape rather than the middle. The median gap of 5.4 pips is harmless. But almost a third of weekends gap more than 10 pips, and one in a hundred gaps more than 127 pips — far beyond where a typical stop sits. A strategy that holds over weekends and shows no catastrophic losses in backtest is telling you something about the backtest, not the strategy.
| Source | Depth | Cost / limits | The catch |
|---|---|---|---|
| Dukascopy | Tick, back to ~2003 | Free, no account | Slow; intermittently returns empty windows that look like real answers |
| HistData | M1, back to 2000 | Free, no account | Monthly ZIPs, manual assembly; no tick data |
| Broker MT4/MT5 history | Varies, often shallow | Free with account | Broker-specific; not portable between brokers |
| Alpha Vantage | Intraday, limited | 25 requests/day, key required | Cannot download years of M1 in any reasonable time |
| Yahoo Finance | Daily reliable, intraday poor | Free | Intraday coverage is patchy and undocumented |
| FXAbsolute | 28.4M M1 bars, 2021–2026 | Free, no key, no cap | Only 5 years; mid-price OHLC, no spread; inherits Dukascopy holes above |
Dukascopy is the deepest free source and everything else is downstream of it or shallower. If you want twenty years of tick data and are willing to fight the pipeline, go straight to the source. Two hard-won details if you do: its default connection timeout is too short for large requests, and month-sized ranges tend to fail where four-day chunks succeed. Never cache an empty response.
HistData is the best zero-effort bulk download. Monthly ZIP files, no account, back to 2000. Assembling them is manual but predictable, which is more than can be said for API-based sources.
Alpha Vantage's free tier cannot do this job. At 25 requests a day, downloading five years of one-minute data for a single instrument would take longer than most people will stay interested. It is a fine API for quotes and a poor one for history.
Whatever you download, run these three checks before you trust a backtest built on it. They take minutes and catch nearly everything.
The instrument matters as much as the source. Correlation between related pairs is a useful sanity check: across 1,536 overlapping trading days, EURUSD and GBPUSD daily returns correlate at r = 0.77 and move in the same direction 77.72% of the time. If your two files disagree wildly on a given day, one of them is wrong.
| You want… | Use |
|---|---|
| To start practising in the next minute | FXAbsolute — already loaded, no download |
| Bulk M1 files back to 2000 | HistData |
| Tick data with real spreads | Dukascopy — and budget time for the pipeline |
| Data your coding agent can query | The MCP server — no key, no cap |
| Data matching your broker exactly | Your broker's own MT4/MT5 history |
| Occasional quotes rather than history | Alpha Vantage |
The general rule: free data is genuinely good enough for learning price action and rehearsing discretionary decisions, and genuinely not good enough for validating a scalping system that lives or dies on spread. Match the source to the claim you intend to make with it.
Free forex data has historically meant one of two things: a file you download, or an API you register a key for. There is now a third — a data server your tooling installs, which needs neither.
FXAbsolute publishes one, on npm as fxabsolute-mcp and in the official MCP Registry as io.github.varsansri/fxabsolute:
claude mcp add fxabsolute -- npx -y fxabsolute-mcp
How it compares on the criteria that usually decide a source:
| Criterion | This source |
|---|---|
| Cost | Free, no account, no key |
| Rate limit | None |
| Resolution | M1 base, aggregated to M5–W1 on true clock boundaries |
| Coverage | 15 instruments, 2021–2026, 28,412,683 bars |
| Provenance | Dukascopy tick data, bid prices |
| Volume | Not available — OHLC only |
| Gaps | Reported per query, not filled silently |
The last two rows are the ones worth weighing. A source that silently forward-fills missing minutes will look cleaner and mislead you; this one leaves the hole and tells you it is there.
It depends whether you want files or programmatic access. For files, Dukascopy and HistData remain the standard. For code and AI tooling, an MCP data server avoids downloads entirely — fxabsolute-mcp serves 28,412,683 one-minute bars across 15 instruments with no key or rate limit, though it carries no volume field.
Dukascopy is the deepest, with tick data back to roughly 2003 and no account required, though its API is slow and intermittently returns empty responses for valid windows. HistData is the easiest bulk download, offering M1 data back to 2000 as monthly ZIP files. For immediate use without downloading anything, FXAbsolute provides 28,412,683 one-minute bars across 15 instruments from 2021 to 2026 in the browser.
For learning price action and rehearsing discretionary decisions, yes. For validating strategies that depend on spread — anything targeting under about ten pips — free mid-price OHLC data is not sufficient, because the cost you would actually pay is invisible in it. Check for coverage holes before trusting any range.
Count bars per trading day and compare against 1,440 for complete M1 coverage, difference consecutive timestamps to find stretches longer than a normal weekend, and cross-check one volatile week against a second source. Days far below the expected bar count are partial, and unexplained multi-day gaps are missing history.
It offers a free tier limited to 25 requests per day with an API key required. That cap makes it impractical for downloading years of one-minute history — a single instrument would take an impractically long time. It is better suited to occasional quotes than to bulk historical data.
Measured across 1,911,141 EURUSD one-minute bars from 2021 to 2026, there were 309 weekend gaps with a median of 5.4 pips. However 31.39% exceeded 10 pips, the 90th percentile was 35 pips, the 99th percentile was 127.5 pips, and the largest observed was 163.5 pips. Strategies holding over weekends face real gap risk that many backtests understate.
Usually because the upstream provider returned an empty response for a valid window and the download pipeline cached it as truth. Dukascopy does this intermittently, so any archive built from it can inherit multi-day holes. Genuine market closures such as New Year weekends also appear as gaps and are correct.
28.4 million one-minute bars across 15 instruments, free in your browser — and the coverage audit above tells you exactly where the holes are.
Open FXAbsolute →