| mb/d | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug |
|---|---|---|---|---|---|---|---|---|
| Gulf storage | 0.00 | 0.00 | -3.15 | 0.10 | 0.56 | 1.96 | -0.76 | 0.27 |
| Cargoes at sea | 0.48 | 0.46 | 4.35 | -0.97 | 0.19 | -4.17 | 1.52 | 1.58 |
| USA | 0.11 | -1.04 | -0.58 | 0.78 | 2.07 | 1.81 | 0.42 | 0.10 |
| China | -1.26 | -1.30 | -1.74 | -0.44 | 0.46 | 0.94 | -0.20 | 0.64 |
| Japan | 0.22 | 0.12 | 0.01 | 1.59 | 0.77 | -0.05 | -0.04 | -0.12 |
| South Korea | -0.01 | -0.07 | 0.01 | 0.45 | -0.02 | -0.08 | -0.64 | -0.06 |
| Europe (EU + UK) | 0.17 | -0.29 | -0.07 | -0.21 | 0.21 | 0.13 | -0.26 | 0.27 |
| Residual | 1.36 | 0.13 | 5.57 | 0.61 | -0.52 | 0.29 | -0.06 | -0.75 |
| World total | 1.07 | -1.98 | 4.39 | 1.91 | 3.71 | 0.83 | -0.03 | 1.94 |
Method and limitations
The main diagram on the Flows page is a model, not a measurement. There are no free, publicly available publications on daily oil flows by country / route, so this moel combines monthly official statistics, tanker tracking, and a few explicit assumptions. This page explains where each number comes from.
Key terms
- mb/d: million barrels per day. Every flow in the diagram uses this unit.
- Crude and condensate: the unrefined oil that goes into refineries. Finished fuels such as diesel and LPG are not included. Some published figures cover “all oil”, which includes those fuels, so this page says which is which.
- Refinery runs: the crude a refinery processes. Consumers in the diagram are refineries, plus a little crude burned directly for power, not drivers or factories.
- Stock draw and stock build: oil taken out of storage and oil put into it.
- Oil on water: the industry’s term for oil on ships. It includes cargoes sailing to a buyer (“in transit”) and tankers sitting idle (“floating storage”). The diagram calls cargoes on their way cargoes at sea.
- AIS: the radio signal ships broadcast with their position. A ship can switch it off, which is called running dark.
Data sources
Most of the numbers come from a handful of organizations. They measure different things, and they often disagree.
| Source | Who they are | What they track | How it is used here |
|---|---|---|---|
| EIA | The US government’s energy statistics agency | Production for every country, US crude stocks, and a monthly forecast, the Short-Term Energy Outlook (STEO) | Crude production through June, extended with the STEO, and a check on US stock changes |
| IEA | An intergovernmental agency in Paris, whose member countries hold emergency oil reserves | The monthly Oil Market Report (OMR): world refinery runs, Gulf exports, Hormuz flows and global stocks, partly from tanker tracking and satellite data it buys | World and Middle East refinery runs, Hormuz volumes, and the stock figures that test the model |
| JODI | The Joint Organisations Data Initiative. Governments report monthly figures to a shared database, coordinated by the International Energy Forum | Each country’s own report of its refinery intake, imports, exports and stock-related balance. It lags about two months, and some countries report late or not at all | Refinery use by country, and stock changes for Japan, South Korea and Europe |
| Energy Institute | An industry body that publishes the annual Statistical Review, formerly BP’s | Oil trade between world regions in 2025 | The starting pattern of who sells to whom |
| UN Comtrade | The UN’s database of customs records | What each country says it imported, by partner and product. HS code 2709 is crude oil. Annual data here | Splits the Energy Institute’s regions into this diagram’s countries |
| IMF PortWatch | An IMF and University of Oxford project | Daily ship counts through chokepoints, estimated from AIS signals | The tanker line on the chart, and the day-to-day shape of Hormuz flows |
| FRED | The St. Louis Fed’s data service, republishing EIA | Daily Brent and WTI spot prices | The price line on the chart |
| China’s statistics bureau and customs | Official Chinese data, as reported each month in a Reuters column | Refinery runs, crude imports and domestic output | China’s refinery use and stock change |
| Kpler | A commercial tanker-tracking company. Its data is paid, but its figures appear in the press and in IEA reports | Cargo-by-cargo flows, including ships that transfer cargo offshore | Some bypass volumes, and checks on Hormuz flows |
Two other companies appear on this page. Vortexa also tracks tankers, and Kayrros estimates tank levels from satellite images. Both reach this project through reports that cite them.
The IEA reports for March to July are in this project’s files. Those for August and September are paid, so the figures from them come from the IEA’s free summaries and from press coverage.
How the flows are built
Production is EIA’s crude production through June. From July it follows the October edition of the STEO, so those months are EIA’s estimates and may be revised.
Consumption is refinery runs plus crude burned directly, from JODI. The world total closes on the IEA’s global refinery runs. There are two exceptions:
- China: JODI’s China figure equals imports plus output minus exports in every month, so it hides any stock change. China uses official runs instead.
- Middle East: from March it follows the IEA’s regional runs, because Gulf refineries were hit far harder than country data shows. Figures from July are forecasts.
Who sells to whom starts from the Energy Institute’s 2025 trade table, split further with UN Comtrade. A standard method called iterative proportional fitting rescales that table until it matches each month’s production and consumption. It keeps the pre-war pattern as far as the totals allow.
Routes for Gulf oil use published volumes. Each month’s Hormuz figure comes from the IEA. Bypass volumes come from the IEA and Kpler, with the rest of each country’s exports crossing the strait.
Daily values are shaped from those monthly figures, and each flow keeps its monthly average exactly. Hormuz flows follow the 7-day PortWatch tanker count, with pre-war swings at half weight. Other flows move in a straight line between mid-month points, with a break at the start of the war.
Where stored oil comes from
Each month the world refines more or less crude than it produces, and the difference must come from or go to storage. That world total is IEA runs minus EIA production. The diagram splits it into three sources, each drawn on the route the oil physically takes.
- Stock draws are tanks in the consuming country, such as a government reserve feeding a nearby refinery. No transit is involved, so they run through Domestic.
- Cargoes at sea are tankers loaded earlier that reach a refinery now. When the strait closed, ships already past it kept sailing and delivered through March, with no new oil behind them. They arrive by sea, so they run through Other seaborne. IEA figures based on Kpler data measure this. The same node on the right side shows the reverse: oil loaded but not yet delivered, as in the June rush of tankers.
- Gulf storage is oil in tanks and idle tankers inside the Gulf. It runs through Hormuz, for the reason below.
Why a stock band crosses the strait
Most stored oil does not cross the strait. Gulf storage does, because the tanks are on the wrong side of it. Once the strait closed, producers could not ship their oil, so they filled tanks and parked loaded tankers inside the Gulf. That is the Gulf producer to Domestic to Stock builds band in March. To reach a buyer, that oil still has to sail out, so when it left it crossed Hormuz. The IEA says June’s surge was driven partly by releasing those barrels.
The model does not assume this. It takes Gulf output, subtracts Gulf refinery use and bypass loadings, and compares what is left with the published Hormuz volume. A surplus stayed in storage, and a shortfall left storage. The IEA separately measures Gulf storage from satellites and tanker tracking, and the two agree closely through June (see the checks below).
Stock changes by month
Positive numbers are oil leaving storage, and negative numbers are oil going into it.
- USA: JODI supply minus refinery intake, corrected by JODI’s statistical difference, matches EIA’s stocks, including the strategic reserve, within 0.01 mb/d in every month.
- China: official runs minus customs imports and domestic output. This implied figure often differs from satellite counts. Official data shows a 0.44 mb/d build in April and a 0.46 mb/d draw in May, while the IEA shows draws of 0.2 and 0.3 mb/d. Reporting by Vortexa and Kpler dates the turn to about May.
- Japan, South Korea, Europe: the same JODI calculation as the US.
- Residual: whatever the items above leave unexplained. It goes to India, Other Asia and Rest of World, in proportion to their imports, as stock draws or builds. These are not measured stock changes for those places.
The residual combines tanks nobody reports with errors in the world total. It is largest in March, at about 5.6 mb/d. The world total alone accounts for about 2.5 mb/d of that: it shows a 4.4 mb/d draw, while the IEA observed a 1.9 mb/d crude draw. The IEA calls this kind of gap the “unaccounted-for balance”. Its own gap for all oil has topped 2 mb/d this year, and it expects such gaps to shrink as data improves.
Why the graphic stops on August 31
The data after August is not good enough to report daily flows with confidence:
- Country data ends: JODI runs through August, so later months have no reported refinery use or stock changes for most countries.
- Hormuz estimates conflict: for September, Kpler and Windward put crude through the strait at about 10 mb/d and the US Energy Secretary at 13 to 14 mb/d. An Iranian commander claims 3 to 4 mb/d on the US-supervised route, and PortWatch counts about 1 tanker a day.
- The volumes do not balance: using Kpler’s figures, about 4 mb/d crossing the strait could not be explained by EIA’s production estimates, and Gulf tanks could not have supplied that much for long.
How much to trust each number
These ratings are my judgment, based on the checks in the next section. High means independent sources agree closely, medium means the source is sound but single or the checks show moderate gaps, and low means the number is mostly a residual, an assumption or a shape.
| What | Confidence | Why |
|---|---|---|
| Brent price | High | Official series |
| Tanker count as a count | High | Direct satellite data, but it covers only ships broadcasting their position |
| US stock changes | High | Matches EIA within 0.01 mb/d |
| Refinery use: USA, Japan, South Korea, Europe, China | High through August | Government figures. China’s official June figure sits 0.63 mb/d below the IEA’s, and other months are within 0.1 |
| Monthly Hormuz crude, March to August | Medium to high | From the IEA, and matches EIA’s second-quarter figure. Several months convert all-oil figures to crude with an estimated share |
| Gulf production through June | Medium to high | Saudi, Iraqi and Kuwaiti figures are within 0.25 mb/d of the IEA. Iran is less certain, up to 0.85 mb/d higher than the IEA |
| Bypass pipelines | Medium | Published for most months, but sources conflict in August, when EIA reports more from Yanbu alone than the IEA reports for Yanbu and Fujairah together |
| Production in July and August | Medium | EIA’s estimates from the STEO, not final figures |
| Refinery use: Middle East | Medium | Follows the IEA through June, but later months are forecasts made before the strait closed again in July |
| China stock changes | Medium | Sign and timing are broadly right, but official and satellite figures differ by up to 0.64 mb/d |
| Japan, South Korea and Europe stock changes | Medium | Same method as the US, with no independent check |
| Gulf storage | Medium through June, low after | Within 0.6 mb/d of the IEA through June. July and August have no direct measurement |
| Cargoes at sea | Medium through June, low after | Comes from IEA and Kpler figures, with some estimated crude shares. July and August assume a 0.75 crude share |
| Who buys from whom | Low to medium | A rescaled pre-war pattern, so real rerouting, such as Asian buyers moving to Atlantic crude, is only approximated |
| Tanker count as a measure of flow | Low after March | In August it shows about 2 tankers a day, which could carry about 4 mb/d at most, while the IEA’s figures imply 6.2 mb/d of crude. EIA also calls this data unreliable |
| Refinery use: Rest of World | Low | What is left of the world total, so it absorbs everyone’s errors. The July and August world runs come from summaries of paid reports |
| Residual stock draws and builds | Low | A balancing item, not a measurement |
| Daily values | Low | Monthly totals given a shape. Read them as the rough timing of a change, not as the flow on that date |
In short, the monthly regional picture is fairly solid through June: how much left the Gulf, by which route, and how much came from storage. Confidence drops from July. Individual buyer-seller bands and single days are illustrations, not measurements.
Checks against published figures
The table compares the model with figures it does not take directly as inputs. Stock changes here use each source’s own sign: for Gulf storage and world stocks, a build is positive, and for US and China “draw” rows, a draw is positive.
Show all checks
| Measure | Period | Model | Published | Gap, mb/d |
|---|---|---|---|---|
| Gulf crude storage change, IEA | Mar 2026 | 3.15 | 3.00 | 0.15 |
| Gulf crude storage change, IEA | Apr 2026 | -0.10 | 0.30 | -0.40 |
| Gulf crude storage change, IEA | May 2026 | -0.56 | -1.16 | 0.60 |
| Gulf crude storage change, IEA | Jun 2026 | -1.96 | -1.63 | -0.33 |
| World crude stock change, IEA observed | Jan 2026 | -1.07 | 0.19 | -1.26 |
| World crude stock change, IEA observed | Feb 2026 | 1.98 | 2.00 | -0.02 |
| World crude stock change, IEA observed | Mar 2026 | -4.39 | -1.90 | -2.49 |
| World crude stock change, IEA observed | Apr 2026 | -1.91 | -1.70 | -0.21 |
| World crude stock change, IEA observed | May 2026 | -3.71 | -4.52 | 0.81 |
| World crude stock change, IEA observed | Jun 2026 | -0.83 | -0.10 | -0.73 |
| Hormuz crude, Kpler | Mar 2026 | 1.90 | 1.80 | 0.10 |
| Saudi crude crossing Hormuz, Kpler | Aug 2026 | 0.71 | 0.70 | 0.01 |
| Saudi crude output, IEA | Apr 2026 | 6.60 | 6.36 | 0.24 |
| Saudi crude output, IEA | Jun 2026 | 7.29 | 7.34 | -0.05 |
| Iraq crude output, IEA | Apr 2026 | 1.42 | 1.45 | -0.03 |
| Iraq crude output, IEA | Jun 2026 | 1.95 | 1.96 | -0.01 |
| Kuwait crude output, IEA | Apr 2026 | 0.57 | 0.57 | 0.00 |
| Kuwait crude output, IEA | Jun 2026 | 1.39 | 1.37 | 0.02 |
| Iran crude output, IEA | Apr 2026 | 3.68 | 3.36 | 0.32 |
| Iran crude output, IEA | Jun 2026 | 3.15 | 2.30 | 0.85 |
| China runs, IEA | Mar 2026 | 14.52 | 14.60 | -0.08 |
| China runs, IEA | Apr 2026 | 13.30 | 13.40 | -0.10 |
| China runs, IEA | May 2026 | 12.65 | 12.70 | -0.05 |
| China runs, IEA | Jun 2026 | 12.47 | 13.10 | -0.63 |
| Asia outside China, IEA Asia Oceania plus Other Asia | Mar 2026 | 14.98 | 15.90 | -0.92 |
| Asia outside China, IEA Asia Oceania plus Other Asia | Apr 2026 | 14.00 | 14.20 | -0.20 |
| Asia outside China, IEA Asia Oceania plus Other Asia | May 2026 | 14.61 | 14.60 | 0.01 |
| Asia outside China, IEA Asia Oceania plus Other Asia | Jun 2026 | 14.96 | 15.10 | -0.14 |
| Hormuz crude, EIA | 1Q26 | 10.34 | 10.90 | -0.56 |
| Hormuz crude, EIA | 2Q26 | 3.68 | 3.70 | -0.02 |
| Gulf crude exports, IEA | Feb 2026 | 18.02 | 18.40 | -0.38 |
| Gulf crude exports, IEA | Apr 2026 | 8.45 | 8.40 | 0.05 |
| Gulf crude exports, IEA | May 2026 | 8.05 | 7.90 | 0.15 |
| Gulf crude exports, IEA | Jun 2026 | 13.05 | 13.20 | -0.15 |
| Yanbu + Fujairah (model crude; IEA all oil) | Feb 2026 | 3.18 | 4.10 | -0.92 |
| Yanbu + Fujairah (model crude; IEA all oil) | Jun 2026 | 6.35 | 7.80 | -1.45 |
| Middle East runs, IEA | Feb 2026 | 9.90 | 10.30 | -0.40 |
| Europe runs, IEA | Apr 2026 | 10.58 | 10.60 | -0.02 |
| China crude stock draw, IEA satellite | Mar 2026 | -1.74 | -1.20 | -0.54 |
| China crude stock draw, IEA satellite | Apr 2026 | -0.44 | 0.20 | -0.64 |
| China crude stock draw, IEA satellite | May 2026 | 0.46 | 0.30 | 0.16 |
| China crude stock draw, IEA satellite | Jun 2026 | 0.94 | 1.40 | -0.46 |
| US crude stock draw incl. SPR, EIA | Jan 2026 | 0.11 | 0.11 | 0.00 |
| US crude stock draw incl. SPR, EIA | Feb 2026 | -1.04 | -1.04 | 0.00 |
| US crude stock draw incl. SPR, EIA | Mar 2026 | -0.58 | -0.58 | 0.00 |
| US crude stock draw incl. SPR, EIA | Apr 2026 | 0.78 | 0.79 | 0.00 |
| US crude stock draw incl. SPR, EIA | May 2026 | 2.07 | 2.07 | 0.00 |
| US crude stock draw incl. SPR, EIA | Jun 2026 | 1.81 | 1.81 | 0.00 |
| US crude stock draw incl. SPR, EIA | Jul 2026 | 0.42 | 0.42 | 0.00 |
| US crude stock draw incl. SPR, EIA | Aug 2026 | 0.10 | 0.10 | 0.00 |
What stands out:
- Gulf storage is the strongest test, because nothing forces it to match. The model is within 0.15 mb/d in March and 0.6 mb/d at worst.
- World stock change matches in February and April but misses by 2.5 mb/d in March and 1.3 mb/d in January.
- Yanbu and Fujairah should come in under the IEA in February and June, because the model counts crude and the IEA counts all oil.
The same comparison caught this project’s errors. An audit of the earlier version found that it:
- overstated Gulf refinery use by about 1 mb/d, which forced a release from storage in July and August that the data does not support.
- filled too little Gulf storage in March, at 0.5 mb/d against the IEA’s 3.0.
Data confidence by month
| Month | Production | World refinery runs | China runs | Hormuz crude |
|---|---|---|---|---|
| Jan | EIA | reported | derived | from tanker counts and IEA’s pre-war figure |
| Feb | EIA | reported | derived | from tanker counts and IEA’s pre-war figure |
| Mar | EIA | reported | reported | reported |
| Apr | EIA | reported | reported | derived |
| May | EIA | reported | reported | derived |
| Jun | EIA | reported | reported | derived |
| Jul | STEO estimate | derived | reported | derived |
| Aug | STEO estimate | reported | reported | derived |
Here “reported” means a figure taken directly from a source, “derived” means calculated from reported figures with a stated conversion, and “interpolated”, “forecast” and “assumption” mean what they say. Every value, with its source and note, is in data/raw/.
Known limitations
- No public daily country-level production or consumption data exists. True daily trade flows need paid tanker tracking, such as Kpler or Vortexa.
- PortWatch counts vessels, not barrels, and does not separate inbound from outbound.
- Crude figures rest on a share of about 0.82 of all oil in several months, which is itself an estimate.
- Iranian exports are opaque, so treat Iran as an estimate with wide uncertainty.
- Apart from the cargoes-at-sea bands, flows reach a consumer the day they leave. Dips and spikes at consumers therefore arrive sooner than refineries felt them.
- World refinery runs exclude crude burned directly, while country figures include it. The effect is small, about 0.5 mb/d, mostly Saudi power plants, and it falls on Rest of World.
Timeline sources
- Feb 17: IRGC closes parts of Hormuz for hours during live-fire drills
- Feb 28: US-Israeli strikes on Iran; Iran closes the Strait of Hormuz
- Mar 1: Major shipping lines suspend Hormuz transits
- Mar 5: Marine insurers cancel Gulf war-risk cover
- Mar 11: IEA members agree record 400 mb emergency stock release
- Mar 18: Iraq restarts Kirkuk-Ceyhan exports
- Apr 8: Two-week US-Iran ceasefire begins; attacks on ships continue
- Apr 13: US naval blockade of Iran begins
- Apr 15: April: OECD stocks fall about 4 mb/d
- May 12: China starts drawing its crude stocks
- May 25: May: global stocks fall 143 mb
- Jun 17: US-Iran memorandum signed; strait reopens and tankers rush out
- Jun 24: Gulf exports surge as the strait reopens
- Jul 8: Interim deal collapses; Hormuz shipments near standstill
- Jul 14: US reinstates naval blockade
- Aug 5: Houthi attack on Saudi tanker threatens Red Sea bypass route
- Aug 15: August: China draws again as refineries restart
Data sources
- IMF PortWatch (daily tanker transits)
- FRED / EIA (Brent and WTI spot)
- EIA International (crude production)
- EIA Short-Term Energy Outlook, October 2026
- JODI Oil World Database (refinery intake, trade)
- IEA Oil Market Report (refinery runs, Hormuz flows)
- IEA Strait of Hormuz Factsheet
- Energy Institute Statistical Review 2026 (trade baseline)
- UN Comtrade HS 2709 (splits EI regions)
- NBS and customs data for China, via Reuters (refinery runs, imports, output)
- EIA monthly crude stocks (checks the US stock figures)
- Kpler explainer (Gulf export routes)