Are Oil Giants Exploiting Rising Prices?

July 8, 2026

You’re reading Dispatch Energy, a weekly briefing on energy and climate policy with contributors Alex Trembath, Philip Rossetti, Lynne Kiesling, Rory Johnston, and Roger Pielke Jr. To access more Dispatch reporting and analysis, consider joining as a member today.


Welcome to Dispatch Energy! Oil flows are edging toward normalization in the Strait of Hormuz, and crude markets have eased from their peak rally. Yet you might have missed this near-complete return to prewar price levels if your last filling-up was over the holiday. For crude oil specifically, market signals point to at least a near-term oversupply, driven by a surge of long-dormant tankers leaving the Hormuz corridor and still-soft demand from Asia amid China’s ongoing buyer’s standstill. In fact, West Texas Intermediate (WTI) has slipped back below $70 per barrel, even as regional tensions persist in the Middle East.

Even though WTI’s price level is similar to last summer, consumer prices have moved higher. Average U.S. gasoline costs hover around $3.80 per gallon—down from above $4.50 in May, but well above February’s sub-$3.00 mark and last summer’s $3.15 average. U.S. diesel is even more expensive at about $4.80 per gallon, down from roughly $5.70 in May but still more than a dollar higher than a year ago.

Rising prices for gasoline and diesel have irked President Donald Trump, who has used Truth Social to accuse “big oil” of keeping pump prices elevated to “gouge” American households. In one post he urged, “SLASH THE PRICE FOR OUR GREAT AMERICAN PEOPLE,” calling for $2.50 per gallon. Treasury Secretary Scott Bessent added his own admonitions, saying immediately ahead of the nation’s 250th July 4 celebration that “we’re watching,” and urging firms to cut prices.

Meanwhile, the American Fuel and Petrochemical Manufacturers issued a concise explainer about what fuel margins do and do not imply. The piece, representing U.S. refiners and petrochemical producers, makes clear that the administration’s rhetoric is shaping responses in the refining sector.

The difficulty for the administration is that crude oil and refined products—gasoline, diesel, jet fuel, and the like—are distinct commodities, each governed by its own supply-demand balance. Refining supply depends not on how much crude is extracted in the Permian or released after months stranded in the Persian Gulf, but on how much crude is actually refined daily across the world’s more than 500 refineries.

That’s the core issue: global refinery capacity is lagging behind demand for refined products. Picture a scenario with 100 units of crude and 100 units of refined-product demand, but with refinery capacity only enough to process 80 units of crude into 80 units of refined product. This mirrors today’s market: an excess of crude weighing on crude prices, while a shortage of refined products drives up retail prices.

<section id="cross-promo" class="acf-block-cross-promo my-6 md:my-8" x-data='{"brand_term_id":108868,"brand_slug":"dispatch-markets","brand_name":"Dispatch Markets","brand_description":"A weekly dive into the forces driving economic growth—and those hindering it—from a roster of experts, including Scott Lincicome, Kyla Scanlon, Karl Smith, Marian Tupy, and Adam Ozimek.","color_primary":"#c2ad9c","color_tertiary":"#e7ded7","author_avatar_url":"https://thedispatch.com/wp-content/uploads/2025/03/Scott-Linicome.png","message_type_id":156937,"postId":123264,"restUrl":"https://thedispatch.com/wp-json/dispatch/v1/cross-promo/recommend","hydrated":false,"state":"anon","pendingSubscribe":false}’ x-init="
(async () => {
// Toast dispatch + cookie consume now happens at app-init scope
// (see parts/alpine/index.js → user.dispatchCrossPromoToast)
// so the confirmation still fires when the block is below a
// paywall and stripped from rendered post content. We still
// read $store.user.justSubscribed below to drive the
// ‘just subscribed’ card state (pinned brand + guest gate).
$store.user.consumeToastCookie();

        // A 'not interested' email-click just landed on this page. Never
        // promote the next brand right under the confirmation toast (and,
        // for signed-out readers, never re-show the brand they just
        // dismissed); hide for this pageview.
        if ($store.user.justIgnored) {
            state=" hide hydrated="true;" return const waitfor="(test)"> new Promise((r) =&gt; {
            const tick = () =&gt; test() ? r() : setTimeout(tick, 30);
            tick();
        });
        await waitFor(() =&gt; $store.user.loaded);

        // Anon visitor landed here from a signed email-click subscribe;
        // short-circuit to the terminal email_subscribed state.
        if ($store.user.justSubscribed?.isGuest &amp;&amp; !$store.user.valid) {
            state="email_subscribed";
            hydrated = true;
            return;
        }

        if ($store.user.valid) {
            $store.iterable.getIterableUser();
            await waitFor(() =&gt; $store.iterable.gotIterableUser);
        }

        try {
            const params = new URLSearchParams({ post_id: String(postId) });
            if ($store.user.valid) {
                params.set('hydrated', '1');
                ($store.iterable.subscribedMessageTypeIds || []).forEach((id) =&gt; params.append('subs[]', String(id)));
                ($store.iterable.ignoredMessageTypeIds || []).forEach((id) =&gt; params.append('ignored[]', String(id)));
                ($store.iterable.digestAuthorIds || []).forEach((id) =&gt; params.append('authors[]', String(id)));
                [...($store.iterable.digestTopicIds || []), ...($store.iterable.digestProductIds || [])]
                    .forEach((id) =&gt; params.append('topics[]', String(id)));
            }
            const res = await fetch(restUrl + '?' + params.toString(), { credentials: 'same-origin' });
            const data = await res.json();
            state = data.state || 'hide';
            if (data.brand_slug) {
                brand_slug = data.brand_slug;
                brand_term_id = data.brand_term_id;
                brand_name = data.brand_name || brand_name;
                brand_description = data.brand_description || '';
                color_primary = data.color_primary || color_primary;
                color_tertiary = data.color_tertiary || color_tertiary;
                author_avatar_url = data.author_avatar_url || '';
                message_type_id = data.message_type_id || 0;
            }
            // Iterable's read-after-write is eventually consistent — if
            // the fresh fetch missed the just-subscribed MT, push it now
            // and rewrite the prefs cache so the menu / header / future
            // page loads reflect the correct state.
            if (
                $store.user.valid &amp;&amp;
                message_type_id &amp;&amp;
                $store.user.justSubscribed &amp;&amp;
                !$store.iterable.subscribedMessageTypeIds.includes(message_type_id)
            ) {
                $store.iterable.subscribedMessageTypeIds.push(message_type_id);
                $store.iterable.unsubscribedMessageTypeIds =
                    $store.iterable.unsubscribedMessageTypeIds.filter((id) =&gt; id !== message_type_id);
                $store.iterable.updateIterablePrefsCache?.();
            }
        } catch (e) {
            console.error('[cross-promo] recommend fetch failed:', e);
            state="hide";
        }

        hydrated = true;

        if (state === 'anon' &amp;&amp; !$store.signUp.email) {
            const urlParams = new URLSearchParams(window.location.search);
            if (urlParams.get('email')) $store.signUp.email = urlParams.get('email');
        }
    })();
"
x-effect="
    // IIFE: Alpine wraps x-effect as `return (...)`, so a bare `if` errors.
    (() =&gt; {
        if (pendingSubscribe &amp;&amp; !$store.signUp.isSubmitting &amp;&amp; $store.user.valid) {
            pendingSubscribe = false;
            state="subscribe";
        }
    })();
"&gt;

<div class="container">

    <!-- Skeleton: shown until user state + recommendation hydrate -->
    <div x-show="!hydrated || !$store.user.loaded" role="status" aria-label="Loading">

    </div>

    <!-- Hydrated card -->
    <div x-cloak x-show="hydrated &amp;&amp; $store.user.loaded &amp;&amp; state !== 'hide'">

    </div>

</div>

This gap—the difference between crude oil prices and the prices of refined products—is termed the “crack spread.” The phrase derives from the idea that a refinery acts like a giant chemistry kit that “cracks” heavy hydrocarbons in crude into lighter products such as gasoline and jet fuel. Unlike the simplified model above, a refinery cannot convert one barrel of crude into an equal barrel of gasoline; instead, it yields portions of a single crude barrel across a spectrum of refined products—from the heaviest byproducts like asphalt to middle distillates like diesel and the lightest fuels such as propane.

Right now, a barrel of Brent crude sits near $75, while a barrel of U.S. gasoline can fetch around $125 (a crack spread of about $50 per barrel, well above the typical seasonal around $20) and a barrel of diesel fetches above $140 (a crack spread near $65 per barrel, compared with around $20 in typical seasons). The crack spread largely drives refinery profitability, and for a range of reasons, refined-product markets are tighter than crude markets at the moment.

To start, consider the direct effects of shutting the Strait of Hormuz. Before the crisis, roughly 20 million barrels per day traversed the strait, including about 15 million barrels of crude and 5 million of refined products. Even with alternative pipelines to the Red Sea and the United Arab Emirates helping to offset some flow, those routes carried only crude oil, not refined products. The same goes for strategic reserves releases, which were almost entirely crude oil rather than diesel or gasoline.

Then there are the broader consequences of the Iran conflict, particularly China’s abrupt cut of nearly half of its prewar crude imports—from about 5 million barrels per day in February to significantly less. This reduction helped ease the worst of the crude-market strain by deflating demand and loosening historically tight seas for crude. Yet it further constrained global refined-product markets. Domestic Chinese refining activity plummeted, and Beijing imposed stringent controls on fuel exports to secure domestic supplies during the Hormuz disruption.

These steps also reduced Asia’s non-Chinese refined-fuel shipments and rippled through the global sector. As S&P Global summarized in its analysis of the supply squeeze, “octane-blending economics deteriorated as Asian steam crackers trimmed back operations due to lower Middle East naphtha exports, tightening global supplies of high-octane blending components, including reformate and aromatics.”

Another factor is Russia’s domestic fuel crunch—the largest since the Soviet era—driven by persistent Ukrainian drone assaults. Ukraine has attacked Russian energy facilities for years, but attacks intensified during the Iran crisis as Kyiv sought to curb Moscow’s ability to profit from war-driven price spikes. Energy Intelligence estimates that roughly one-third of Russia’s refining capacity, over 2 million barrels per day, was offline by June, with domestic runs at their lowest level in more than twenty years. The strikes show signs of continuing: recently, Ukrainian drones hit Russia’s largest refinery deep in Siberia, about 2,700 kilometers from Ukrainian-held territory, knocking it offline.

With limited domestic refining, Russia’s seaborne refined-product exports have dropped from nearly 2.5 million barrels per day to under 1.7 million, based on ship-tracking data from Kpler. Moscow has also banned the export of gasoline and jet fuel and is weighing a ban on diesel shipments. As one of the world’s major diesel suppliers, this is another significant hit to available refined-product supply.

While Chinese and Russian exports contracted during the Hormuz crisis, U.S. exports surged. Diesel and jet fuel, along with crude, reached record highs in recent months. American refineries shifted toward maximal jet-fuel production to fill a particularly tight market. Simultaneously, gasoline’s share of refining yields fell to levels not seen since the depths of the COVID-era downturn in 2020, and during the housing-market tumult of 2008. Domestic stockpiles also reflect the strain: U.S. gasoline inventories sit at their lowest seasonally adjusted level since 2014, while U.S. diesel stocks have only recently begun to rise after hitting their 30-year seasonal lows.

An additional, U.S.-specific policy factor contributing to elevated refined-product prices is the sharply rising value of renewable identification numbers, or RINs. RIN costs have more than doubled this year due to an accelerated 2026 biofuel blending obligation, especially for biodiesel and renewable diesel. The Environmental Protection Agency sets the renewable fuel volumes under the Renewable Fuel Standard. Refiners and importers meet those requirements by purchasing or generating RINs, which are compliance credits created by blending renewable fuel or by acquiring surplus RINs produced elsewhere.

So, the news is mixed for the efficacy of the U.S.–Iran accord to restart shipping through the Strait of Hormuz.

On the upside, traffic through the waterway has rebounded faster than anticipated, though the durability of that rebound remains uncertain. This Hormuz-positioned boost, coupled with stubbornly weak import demand—particularly in China—has drawn crude prices back to prewar levels.

On the downside, Trump anticipated pump prices to follow crude’s brisk retreat just ahead of the midterms; thus far, they have not. The delayed effects of the Hormuz disruption, Ukraine’s impact on Russia’s refining capacity, and the administration’s biofuel policies have combined to keep retail prices notably elevated.

Policy Watch

  • The U.S. Treasury Department’s Office of Foreign Assets Control announced on Tuesday that it is revoking the general license that had waived sanctions on Iranian oil sales. The revocation follows a string of Iranian attacks on vessels transiting the Strait of Hormuz, with at least three ships struck by missiles and drones over the last day. Past Iranian strikes have triggered U.S. strikes on Iranian missile, drone, and radar infrastructure, though Tehran may be more concerned about losing the ability to sell oil beyond China than about another limited U.S. intervention. This decision also raises questions about how long Tehran will tolerate heavy traffic through the Strait if its own oil sales face restrictions, a core element of the recently signed understanding.
  • In the past week, two Canadian pipeline proposals have emerged aimed at reducing dependence on the American market. Canada has historically exported the vast majority of its crude to the U.S., especially to the Midwest, but plans to diversify toward Asia via western routes have been advanced, including a May 2024 expansion of the Trans Mountain line. The latest developments come after the Trump administration briefly imposed tariffs on Canadian crude. Alberta proposed a pipeline with the potential capacity of 1 million barrels per day, while the joint Alberta-Ontario initiative, the Northern Shield Energy Corridor, would connect Alberta with Sarnia, Ontario, via a 3,300-kilometer, 500,000-barrels-per-day line.
  • Congressional Republicans are pressing the Trump team to roll back the waivers on the Jones Act, which exempt some cargoes shipped between U.S. ports from the Act’s requirements. The Jones Act mandates vessels used for commerce between U.S. ports be U.S.-owned, -flagged, -built, and -crewed. Critics argue this raises shipping costs and tightens supply, potentially inflating prices for U.S. consumers, though supporters contend it protects national security and maritime interests. Calls to permanently eliminate the waivers recur, citing higher freight costs and suboptimal shipping patterns, especially for isolated regions like Puerto Rico. Opponents of renewing waivers argue the program has become a loophole exploited by adversaries to erode U.S. maritime leadership and should not be renewed when it expires on August 16.

Pilar Marrero

Political reporting is approached with a strong interest in power, institutions, and the decisions that shape public life. Coverage focuses on U.S. and international politics, with clear, readable analysis of the events that influence the global conversation. Particular attention is given to the links between local developments and worldwide political shifts.