PREVIEW — every figure on this site is a layout placeholder from the design mock, not a measurement. Nothing here has been measured yet.
data to 25.09.2026
SponsoredVisit FxPro

FxPro, the broker we work with, ranks 7th of 10 on annual cost. Tickmill costs $446 less a year.

That is the first thing this page says because it is the first thing a comparison usually hides. We measured 10 brokers on one instrument, in one window, with the same instrument on every account — and we are not the cheapest. What FxPro wins is on the execution axes below, where the cost of a bad fill does not show up in a spread table.

EUR/USD · 27.08–25.09 · profile 10 lots a month · 1 s bid/ask sampling on our own MT5 accounts

Annual cost of ownership, 10 brokers

Spread plus commission over 10 lots a month, plus a year of swap. Sorted by cost, so we do not lead.

BrokerAnnual cost🔬 our measurementAvg spread, 24 h🔬 our measurementSpread 21:00–24:00 UTC🔬 our measurementRejected orders🔬 our measurementSlippage on releases🔬 our measurementWithdrawal fee📄 stated by the broker
Tickmill
Raw · MT5
$1 108 🔬derived · 27.08–25.090.28 pips 🔬1 s bid/ask · 27.08–25.091.22 pips 🔬1 s bid/ask · 27.08–25.090.9% 🔬4 790 orders · 27.08–25.091.4 pips 🔬208 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
IC Markets
Raw Spread · MT5
$1 252 🔬derived · 27.08–25.090.29 pips 🔬1 s bid/ask · 27.08–25.091.40 pips 🔬1 s bid/ask · 27.08–25.091.2% 🔬4 812 orders · 27.08–25.091.9 pips 🔬212 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
Eightcap
Raw · MT5
$1 273 🔬derived · 27.08–25.090.31 pips 🔬1 s bid/ask · 27.08–25.091.55 pips 🔬1 s bid/ask · 27.08–25.091.1% 🔬4 776 orders · 27.08–25.091.6 pips 🔬206 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
ThinkMarkets
ThinkZero · MT5
$1 302 🔬derived · 27.08–25.090.33 pips 🔬1 s bid/ask · 27.08–25.091.80 pips 🔬1 s bid/ask · 27.08–25.091.4% 🔬4 801 orders · 27.08–25.091.7 pips 🔬211 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
Axi
Pro · MT5
$1 435 🔬derived · 27.08–25.090.45 pips 🔬1 s bid/ask · 27.08–25.091.95 pips 🔬1 s bid/ask · 27.08–25.090.7% 🔬4 795 orders · 27.08–25.091.2 pips 🔬209 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
FXTM
Advantage · MT5
$1 452 🔬derived · 27.08–25.090.55 pips 🔬1 s bid/ask · 27.08–25.092.30 pips 🔬1 s bid/ask · 27.08–25.091.6% 🔬4 768 orders · 27.08–25.092.1 pips 🔬204 release orders · 27.08–25.09$3 📄fee schedule · checked 25.09.26
FxPro ours
Raw+ · MT5
$1 554 🔬derived · 27.08–25.090.55 pips 🔬1 s bid/ask · 27.08–25.092.02 pips 🔬1 s bid/ask · 27.08–25.090.4% 🔬4 823 orders · 27.08–25.090.8 pips 🔬214 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
FxProthe broker this site is paid by
Sponsored
  • Licensed since 2007 — CySEC 078/07
  • Commission checked against a real fill, not the fee schedule: $7 round-turn per lot
  • Both platforms we run here: cTrader and MT5 — we hold an account on each

Paid placement, and the only one on this site. It still ranks 7th of 10 on annual cost in the table above — we print that rather than move it.

OctaFX
Standard · MT5
$1 560 🔬derived · 27.08–25.091.30 pips 🔬1 s bid/ask · 27.08–25.092.90 pips 🔬1 s bid/ask · 27.08–25.092.1% 🔬4 744 orders · 27.08–25.092.6 pips 🔬201 release orders · 27.08–25.09no datafee schedule not published
AvaTrade
Standard · MT5
$1 690 🔬derived · 27.08–25.091.35 pips 🔬1 s bid/ask · 27.08–25.092.60 pips 🔬1 s bid/ask · 27.08–25.090.8% 🔬4 787 orders · 27.08–25.091.3 pips 🔬207 release orders · 27.08–25.09$0 📄fee schedule · checked 25.09.26
FBS
Standard · MT5
$1 928 🔬derived · 27.08–25.091.55 pips 🔬1 s bid/ask · 27.08–25.093.20 pips 🔬1 s bid/ask · 27.08–25.09no dataaccount restricted 14.09 · sample too smallno dataaccount restricted 14.09 · sample too small$2 📄fee schedule · checked 25.09.26

Spread by hour of day, EUR/USD

Brokers quote a best-case daytime figure. This is every hour, including the ones nobody advertises.

00061218
3.02 pips thin liquidity 21:00–24:00 UTC
FxPro · 0.55 avg Tickmill · 0.28 avg

hourly mean of 1 s samples · 27.08–25.09 · every hour, as measured

How these numbers were taken

Each broker runs on its own MT5 account. Bid and ask are sampled every second, continuously, and stored raw; the published figure is the mean over the stated window. Nothing is smoothed, nothing is taken from a broker's own marketing page.

Not measured in this release
  • Withdrawal timenot measured in this release
  • Support responsenot measured · see methodology

Read the full methodology

Open an account with FxPro

This link pays us. The figures on this page were produced by the same code and the same window as every other broker here, and where our sponsor loses, it is printed.

Why cost of ownership, and not spread

Almost every broker comparison is a spread table, and a spread table is close to useless for deciding where to trade. 3 of the 10 accounts here carry no commission at all; the rest quote a near-zero raw spread and charge per lot on top. A zero spread with a commission attached can cost more over a year than a wider spread with none, and no amount of staring at the spread column will tell you which case you are in.

So the headline on this site is the whole bill at a stated volume. It is arithmetic rather than opinion, it can be recomputed by anyone who disagrees with the profile, and it puts the two account models on one scale. The components — spread, commission, swap — are printed separately on each broker's page, because a single number nobody can take apart is a number nobody can check.

The second thing this site measures is what a spread table structurally cannot: execution. Rejected orders and slippage in the minutes around scheduled releases come from sending thousands of real market orders through our own accounts and recording what came back, including the broker's own status code. That is where the cost of a bad fill lives, it is invisible in any quoted figure, and it is the axis on which the rankings on this site disagree with each other most.

Where every number comes from

Three classes, printed at the number rather than in a footnote: 🔬 our own measurement, 📊 a third party, 📄 stated by the broker. Brokers are ranked only against others in the same class — a figure we measured and a figure quoted from a price list are not competing in one column — and a figure whose class nobody declared is not printed at all, because an undeclared source silently reads as “we measured this”.

Where a broker's legal entity is confirmed, its page carries the entity, the licence number, the regulator and what that licence obliges the firm to do for a client — with the sentence from the regulator's own rule, not a summary of it. Where it is not confirmed, the page says so: the protections attached to a brand's European arm and its offshore arm are not the same, and attaching one to the other would be the most consequential error on the site.

The commercial part is stated in the same place as everything else. One broker, FxPro, pays a commission on accounts opened through our link; it is labelled sponsored wherever it appears, measured by the same code in the same window as the others, and printed where the sort order puts it. The disclosure sets out what that buys and what it does not, and the editorial policy sets out who may change a figure.

Coverage, and what a gap in it means

A month of data with a hole in it is not a month of data. Coverage is therefore reported as the share of calendar market hours in the window that actually hold samples — not as the count of hours of the day we have ever seen. The second number sounds like the same thing, can only ever go up, and hid a three-and-a-half-day outage from us for exactly as long as we trusted it: every hour of the day had been covered at some point, so the report read 24 of 24 while one collector had been dead since Tuesday.

What found it was a watchdog that compares the age of the newest row in each series against the market calendar and raises an alarm when a series goes quiet during trading hours. It found that outage within an hour of being switched on. Liveness is freshness of the last row; coverage is the share of the window filled. Confusing the two is how a dead rig reports itself healthy, and we did it for three days.

Gaps are not filled in. There is no interpolation anywhere in this pipeline: a missing hour is missing from the aggregate and missing from the export, and a window whose coverage is too thin does not get published as a figure at all. The alternative — a smooth line with invented points in it — is indistinguishable from real data to a reader, which is precisely the reason it is not an option.

Questions before you read the table

What is annual cost of ownership?

The spread paid across a year of trading at a stated volume, plus the commission on that volume, plus a year of swap. Here the volume is 10 lots a month of EUR/USD, which is printed next to every figure derived from it so the sum can be redone with your own assumptions. It is the only axis on which a commission-free account and a raw account can be compared without cheating.

Why does the site lead with its sponsor losing?

Because it is true, and because a comparison funded by one of the names in it has exactly one way to be worth reading: publish the method, publish the losses, and let a sceptical reader check the places where we could have cheated. FxPro pays us a commission; Tickmill is currently cheaper on annual cost and sits above it in the table.

Are these figures live?

No, and nothing here pretends to be a quote. Every figure is an aggregate over a stated past window — 27.08–25.09 — taken from our own accounts. Spreads move minute to minute; a figure claiming to be current would be stale by the time you read it, and would hide the only thing that makes an average honest, which is the window it covers.

How many brokers do you measure, and why not more?

10 on the table today, each one an account we opened and a platform we run. The limit is not ambition but hardware and discipline: every broker needs its own terminal instance on a machine that never sleeps, and every series has to survive a feed audit before it is allowed into a ranking. We would rather publish a short table where every column is real than a long one padded with figures copied off marketing pages.

What do you refuse to measure?

Withdrawal time and support response. Measuring either honestly means depositing and withdrawing our own money at every broker in the table, which we have not done — so those axes read no data instead of reprinting a claimed processing time as a finding. We also publish no star ratings and no “best broker” verdicts, because those are opinions wearing the clothes of a measurement.

What each axis means, and what it currently spans

Eight axes, measured on every account that supports them. The middle column is the range across the table as it stands — the distance between the best and worst account on that axis — which is the quickest way to see which axes actually separate brokers and which are nearly identical everywhere.

AxisRange across the tableWhat it is
Annual cost$1 108 → $1 928What a year on the account costs at our stated volume — spread plus commission plus swap. The only axis on which a commission account and a commission-free account can be compared without cheating.
Avg spread, 24 h0.28 pips → 1.55 pipsThe mean gap between bid and ask across every one-second sample in the window, including the hours nobody advertises.
Spread 21:00–24:00 UTC1.22 pips → 3.20 pipsThe same measurement restricted to 21:00–24:00 UTC, when the New York session closes, liquidity thins and spreads widen on every account.
Commission per lot$0.00 → $7.00The per-lot charge from the broker's published schedule, verified against a real fill where we hold one. Stated by the broker, and marked as such.
Swap per year$0 → $72A year of overnight financing on the measured profile. It scales with time in the market rather than with the number of trades.
Rejected orders0.4% → 2.1%The share of our market orders the broker declined, with its own status code. Orders that got no execution event inside our window are our own status, not a rejection. · empty for 1 of 10, with the reason on the axis
Slippage on releases0.8 pips → 2.6 pipsThe average distance between the price requested and the price filled on orders timed into scheduled releases. Signed from the trader's side: positive is worse. · empty for 1 of 10, with the reason on the axis
Withdrawal fee$0 → $3What the published schedule charges to withdraw. How long a withdrawal takes is not measured by us at all. · empty for 1 of 10, with the reason on the axis

Lower is better on every axis here · 27.08–25.09 · a range of nearly nothing means that axis is not worth choosing a broker on