Why I built it
Dubai charges a toll per gate, the rate changes by time of day, and two gates on the same road can count as one crossing. So the honest answer to "what will this drive cost me" is not on any single page. Every route planner I could find gave me distance and time and left the money out.
The decision that mattered
No language model anywhere near the fee arithmetic. A toll is a number someone will be charged, and a model that is usually right is the wrong tool for it. The gate list, the rate bands and the pairing rules are data; the calculation is deterministic and reproducible. If it is ever wrong, it is wrong in a way I can find and fix, which is not true of a guess.

The real cost of a commute is not on any single page
Dubai charges per gate, per crossing, per direction. The rate moves with the hour. There is no daily cap and there are no free days.
Since January 2025 the toll has varied by time of day, and since 1 June 2026 it has carried 5% VAT on top. Two gates on the same corridor can count as a single crossing if you pass both within an hour travelling the same way. Each of those rules is published. None of them is applied to your actual journey anywhere.
That gap matters most at the moment someone is making a decision they will live with for a year: taking a flat, accepting a job, choosing between two offices. A calculator that prices one crossing cannot answer which of two commutes is cheaper, and that is the only question that changes what anyone does.
Everything handles the money or the journey. Nothing handles both.
I checked the apps a Dubai driver already has before building anything. The market splits cleanly down the middle, and the gap is the same shape in every one of them.
Salik. The official toll account app. Balance, recharge, tags, trips, fines and statements. It is built for settling a charge you have already incurred, which is a different job from deciding whether to incur it.
RTA Dubai. The official transport super-app, and the only place with a toll calculator. It prices one crossing at one moment, which cannot answer which of two commutes costs less.
S’hail. The authority’s own journey planner, and the clearest local example of planning-first mobility design. It plans the trip and says nothing about what the trip costs at the gates.
Google Maps. The baseline every route tool is measured against for clarity and map confidence. It gives distance and time, and leaves the money out entirely.
Waze. The strongest driver-first alternative, built around minimal thinking while the car is moving. Same omission: it routes you, it does not price the route.
Salik Optimizer. Deliberately cannot take your money. It compares real routes between two points, prices every gate each one crosses at your travel time, and recommends the cheaper route when one exists.
Parkin, DubaiNow and Careem sit in the same driving moment and were studied alongside these, but none of them touches tolls, so listing them here as five empty cells would say more about the table than about them.
I killed my own idea two hours in
The tool was pitched as a time-shift nudge: drive off-peak, save money. The arithmetic did not support it.
The gap between peak and off-peak is AED 2.10 a crossing. Someone working nine to five crosses at peak in both directions by definition, so the advice reduces to "drive at three in the morning", which is not advice. The saving was real and irrelevant, which is the worst combination a feature can have.
Avoiding a gate entirely saves the whole charge, AED 4.20 to AED 6.30, and it is something a person can actually do on a Tuesday. So the product became a route comparator. That change also fixed a retention problem nobody had raised yet: a monthly bill calculator is used once, whereas a route comparator is reopened every time you consider a new flat, office or job.
The reframe cost one session and deleted about half the originally planned build. Recorded in the brief the same day, alongside the eight other ideas that were rejected and why.
Three steps, and none of them guess.
Every number the tool shows is arithmetic over data with a date on it. There is no model in the path between a route and a price.
Draw the real routes
Origin and destination are geocoded, then several genuine driving routes are fetched as road geometry.
- Real road geometry, not straight lines between two pins
- Several alternatives per journey, not just the fastest
- The decorative map on the home page is deliberately not this
What made it harder than it looks
- The same road has three prices. Peak is AED 6.30, low-peak is AED 4.20, and between 01:00 and 06:00 it is free. During Ramadan the free window shifts to 02:00 until 07:00.
- Two gate pairs are billed once rather than twice, within a 60-minute window, in the same direction only. Returning through the opposite gate is a separate charge.
- Proximity is not crossing. A parallel service road can put a route within metres of a gate it never passes through, and a false charge is worse than no tool.
- The gate-free route is the whole product. For many journeys one exists, and finding it is the entire value.
- The data perishes. Rates and gate lists change by announcement, so each file carries the date it was last checked against source.
The full Dubai network as published, not a sample.
Peak, low-peak and the free overnight window, with separate Sunday and Ramadan schedules.
A locked decision. Every figure is arithmetic over verified data.
Live, and honest about what it does not do
The tool is public and working. The rate data was last verified against the official table on 19 July 2026, and it is re-verified before any launch because a stale toll rate is the one failure this product cannot survive.
Two things are deliberately not built. Parking is destination-based rather than route-based and does not fit the comparator frame, so it waits. And the home page map is static and decorative on purpose: real routing runs only behind the sign-in gate, where the cost and the abuse surface are controlled.
What I would do differently
- Verify the coordinate data before building detection on top of it. The gate positions were wrong by up to 3.6 kilometres and I found out by watching detection fail, not by checking the input.
- Decide the staleness display at the same time as the staleness rule. The data files know when they were last verified; the interface does not show it, which puts the burden on me to remember rather than on the product to say.
- Question whether the sign-in gate earns its friction. It is there for usage data and it costs abandonment, and I have not measured the trade.
Same judgement as the day job.
The thinking in a toll calculator is the thinking a content platform needs. It is only more obvious here, because the output is a number somebody gets charged.
Knowing where a model belongs, and where it does not
A language model is the wrong instrument for a fee. It is the right one for a first draft. Telling those apart is most of the job.
Perishable data carries its date
Toll rates and gate lists change by announcement, so each file records when it was last checked against source. The same is true of every figure on a content platform.
Never render an estimate as though it were a fact
If the tool cannot be sure, it says so rather than rounding into confidence. That is a content decision before it is an engineering one.
More projects.
Let’s build something that scales.
If you are trying to make content compound rather than accumulate, that is the problem I like most. Email is quickest, and my calendar is open.



