Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of September 25, 2026 · refreshed weekly

XOM Dividend Increase History: Every Raise

Every XOM dividend increase on record: old and new quarterly rate, the percentage raise, the quarter Exxon declares in, and 5, 10 and 20 year growth.

XOM dividend increase history, in full: every raise Exxon Mobil has declared over the past twenty years, with the old and new quarterly rate, the size of each step, the declaration date, and the ex-dividend date the higher rate first applied to. The record here holds 19 increases, carrying the quarterly rate from $0.29 a share to $1.03. Exxon has also moved the season it announces in, which is the part to know if you are working out when the next one lands.

Every figure on this page comes from one source: the declared dividend records in stocks_dividends, which carry one row per XOM cash dividend with its ex-dividend date, declaration date, and cash amount per share. For the current rate, the yield and the payment calendar, see the XOM dividend page.

Every XOM dividend increase, raise by raise

A dividend increase is not a separate event in the data. It is a quarterly payment larger than the one before it, so the way to find every raise is to walk the payments in ex-dividend date order and keep the ones that step up. Each row below is one of those steps, paired with the rate it replaced.

QueryEvery declared XOM quarterly dividend increase, with the old and new rate
ex_dividend_dateex_month_labeldeclared_labelold_quarterly_usdnew_quarterly_usdpct_increase
2006-02-08Feb 2006not recorded0.290.3210.34
2007-05-10May 2007not recorded0.320.359.38
2008-05-09May 2008not recorded0.350.414.29
2009-05-11May 2009not recorded0.40.425
2010-05-11May 2010not recorded0.420.444.76
2011-05-11May 2011not recorded0.440.476.82
2012-05-10May 2012not recorded0.470.5721.28
2013-05-09May 2013Apr 24, 20130.570.6310.53
2014-05-09May 2014Apr 30, 20140.630.699.52
2015-05-11May 2015Apr 29, 20150.690.735.8
2016-05-11May 2016Apr 27, 20160.730.752.74
2017-05-10May 2017Apr 26, 20170.750.772.67
2018-05-11May 2018Apr 25, 20180.770.826.49
2019-05-10May 2019Apr 24, 20190.820.876.1
2021-11-10Nov 2021Oct 27, 20210.870.881.15
2022-11-14Nov 2022Oct 27, 20220.880.913.41
2023-11-14Nov 2023Oct 27, 20230.910.954.4
2024-11-14Nov 2024Nov 1, 20240.950.994.21
2025-11-14Nov 2025Oct 31, 20250.991.034.04
The exact SQL behind every number
WITH quarterly AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS rate,
        max(declaration_date)       AS declared
    FROM global_markets.stocks_dividends
    WHERE ticker = 'XOM'
      AND frequency = 4
      AND ex_dividend_date >= '2005-01-01'
      AND ex_dividend_date <= today()
    GROUP BY ex_dividend_date
),
stepped AS
(
    SELECT
        ex_date,
        declared,
        rate,
        lagInFrame(rate) OVER (ORDER BY ex_date ASC
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_rate
    FROM quarterly
)
SELECT
    toString(ex_date)                                         AS ex_dividend_date,
    formatDateTime(ex_date, '%b %Y')                          AS ex_month_label,
    if(toYear(declared) > 1990,
       formatDateTime(declared, '%b %e, %Y'), 'not recorded')  AS declared_label,
    round(prev_rate, 4)                                       AS old_quarterly_usd,
    round(rate, 4)                                            AS new_quarterly_usd,
    round((rate / prev_rate - 1) * 100, 2)                    AS pct_increase
FROM stepped
WHERE ex_date >= '2006-01-01'
  AND prev_rate > 0
  AND rate > prev_rate
ORDER BY ex_date ASC
Run this yourself

The first step inside the window lifted the quarterly rate 10.34%, from $0.29 to $0.32, first applying to holders on the record for the Feb 2006 payment. The most recent step was 4.04%, from $0.99 to $1.03, declared Oct 31, 2025. The pct_increase column shows the size of each step, and that size has not been constant across the span.

When does Exxon declare its dividend increase?

The declaration date on each record is the day the board's decision on that payment became official, and it always falls before the ex-dividend date for the same payment. Grouping the increases by the calendar quarter of their declaration date answers the question readers actually type, which is when to watch.

QueryWhich calendar quarter XOM dividend increases get declared in
declaration_quarterraises_declaredfirst_yearlatest_year
Q2 (Apr to Jun)720132019
Q4 (Oct to Dec)520212025
The exact SQL behind every number
WITH quarterly AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS rate,
        max(declaration_date)       AS declared
    FROM global_markets.stocks_dividends
    WHERE ticker = 'XOM'
      AND frequency = 4
      AND ex_dividend_date >= '2005-01-01'
      AND ex_dividend_date <= today()
    GROUP BY ex_dividend_date
),
stepped AS
(
    SELECT
        ex_date,
        declared,
        rate,
        lagInFrame(rate) OVER (ORDER BY ex_date ASC
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_rate
    FROM quarterly
),
raises AS
(
    SELECT declared
    FROM stepped
    WHERE ex_date >= '2006-01-01'
      AND prev_rate > 0
      AND rate > prev_rate
      AND toYear(declared) > 1990
)
SELECT
    multiIf(toQuarter(declared) = 1, 'Q1 (Jan to Mar)',
            toQuarter(declared) = 2, 'Q2 (Apr to Jun)',
            toQuarter(declared) = 3, 'Q3 (Jul to Sep)',
                                     'Q4 (Oct to Dec)') AS declaration_quarter,
    count()                                             AS raises_declared,
    toString(min(toYear(declared)))                     AS first_year,
    toString(max(toYear(declared)))                     AS latest_year
FROM raises
GROUP BY declaration_quarter
ORDER BY raises_declared DESC, latest_year DESC
Run this yourself

The fullest bucket is Q2 (Apr to Jun), holding 7 of the increases, with declarations running from 2013 to 2019. The next bucket is Q4 (Oct to Dec), holding 5, from 2021 to 2025. Compare the two latest_year values and the current habit is visible: the bucket with the more recent latest year is where announcements have been landing, and the other is the older pattern. That is as far as the record goes. A board can change its meeting calendar, and nothing in a dividend record commits a company to a future raise.

The gap between the declaration and the payment is where the ex-dividend date sits, and that date settles who receives which rate. The ex-dividend date explained walks through the timing. For the announcement calendar across dividend payers in general, when companies announce dividend raises covers the seasonal habits.

Has Exxon ever gone a year without a raise?

Yes, and the two honest ways to count a streak disagree about it. Grouping the payments by the calendar year of their ex-dividend date gives one line per year: what was paid per share, how many payments landed, and how many increases were declared inside it.

QueryXOM dividends paid per share per year, and increases declared in each
yearpaid_per_share_usdpaymentsraises_declared
20061.2841
20071.3741
20081.5541
20091.6641
20101.7441
20111.8541
20122.1841
20132.4641
20142.741
20152.8841
20162.9841
20173.0641
20183.2341
20193.4341
20203.4840
20213.4941
20223.5541
20233.6841
20243.8441
2025441
The exact SQL behind every number
WITH quarterly AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS rate
    FROM global_markets.stocks_dividends
    WHERE ticker = 'XOM'
      AND frequency = 4
      AND ex_dividend_date >= '2005-01-01'
      AND ex_dividend_date <= today()
    GROUP BY ex_dividend_date
),
stepped AS
(
    SELECT
        ex_date,
        rate,
        lagInFrame(rate) OVER (ORDER BY ex_date ASC
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_rate
    FROM quarterly
)
SELECT
    toYear(ex_date)                                     AS year,
    round(sum(rate), 4)                                 AS paid_per_share_usd,
    count()                                             AS payments,
    countIf(prev_rate > 0 AND rate > prev_rate)         AS raises_declared
FROM stepped
WHERE toYear(ex_date) >= 2006
  AND toYear(ex_date) < toYear(today())
GROUP BY year
ORDER BY year ASC
Run this yourself

The window opens in 2006, when the payments totalled $1.28 per share, and closes at $4 across 4 payments in the last complete year. Watch the raises_declared column rather than the totals. A year can carry a higher total than the year before it while containing no announcement at all: a raise declared mid-year is paid at the old rate for the quarters already gone and at the new rate afterwards, so the following calendar year collects four payments at the higher rate even when the board announces nothing in it.

That is why the streak below is counted twice from the same table.

QueryThe XOM dividend streak, counted two ways, plus the years with no increase
basisyears_countedstarting_year
Annual total per share above the prior year19run from 2007
Calendar years with an increase declared5run from 2021
Calendar years with no increase declared1latest 2020
The exact SQL behind every number
WITH quarterly AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS rate
    FROM global_markets.stocks_dividends
    WHERE ticker = 'XOM'
      AND frequency = 4
      AND ex_dividend_date >= '2005-01-01'
      AND ex_dividend_date <= today()
    GROUP BY ex_dividend_date
),
stepped AS
(
    SELECT
        ex_date,
        rate,
        lagInFrame(rate) OVER (ORDER BY ex_date ASC
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_rate
    FROM quarterly
),
yearly AS
(
    SELECT
        toYear(ex_date)                             AS y,
        sum(rate)                                   AS total,
        countIf(prev_rate > 0 AND rate > prev_rate)  AS raises
    FROM stepped
    WHERE toYear(ex_date) >= 2006
      AND toYear(ex_date) < toYear(today())
    GROUP BY y
),
framed AS
(
    SELECT
        y,
        total,
        raises,
        lagInFrame(total) OVER (ORDER BY y ASC
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_total
    FROM yearly
),
marks AS
(
    SELECT
        max(y)                                                             AS last_year,
        greatest(maxIf(y, prev_total > 0 AND total <= prev_total), min(y))  AS last_total_break,
        greatest(maxIf(y, raises = 0), min(y))                             AS last_rate_break,
        countIf(raises = 0)                                                AS flat_years,
        maxIf(y, raises = 0)                                               AS latest_flat_year
    FROM framed
)
SELECT
    tupleElement(t, 1)              AS basis,
    toUInt32(tupleElement(t, 2))    AS years_counted,
    tupleElement(t, 3)              AS starting_year
FROM marks
ARRAY JOIN
[
    (toString('Annual total per share above the prior year'),
     toInt32(last_year - last_total_break),
     concat('run from ', toString(last_total_break + 1))),
    (toString('Calendar years with an increase declared'),
     toInt32(last_year - last_rate_break),
     concat('run from ', toString(last_rate_break + 1))),
    (toString('Calendar years with no increase declared'),
     toInt32(flat_years),
     if(flat_years = 0, 'none in window', concat('latest ', toString(latest_flat_year))))
] AS t
Run this yourself

Counted on annual totals, the run is 19 years (run from 2007). Counted on declared rate increases, it is 5 years (run from 2021). Neither figure is wrong. They measure different things, and a page quoting only the longer one leaves out the calendar years that held no announcement. This window carries 1 of those (latest 2020). Both runs are floored at the start of the window shown here, so they describe this span rather than Exxon's whole history as a payer.

XOM dividend growth rate over 5, 10 and 20 years

Compound annual growth rate, or CAGR, is the single steady yearly rate that would carry an old quarterly payment to the current one over the same number of years. It flattens the lumpiness of individual raises into one comparable number, which is what makes it the usual way to line up two dividend payers.

QueryXOM quarterly dividend compound growth over 5, 10 and 20 years
horizonstart_ex_labelstart_quarterly_usdlatest_quarterly_usdcagr_pctgrowth_multiple
5-year spanNov 20210.881.033.21.17
10-year spanNov 20160.751.033.221.37
20-year spanNov 20060.321.036.023.22
The exact SQL behind every number
WITH quarterly AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS rate
    FROM global_markets.stocks_dividends
    WHERE ticker = 'XOM'
      AND frequency = 4
      AND ex_dividend_date >= '2000-01-01'
      AND ex_dividend_date <= today()
    GROUP BY ex_dividend_date
),
series AS
(
    SELECT
        groupArray(ex_date) AS ds,
        groupArray(rate)    AS rs
    FROM
    (
        SELECT ex_date, rate
        FROM quarterly
        ORDER BY ex_date ASC
    )
),
spans AS
(
    SELECT
        ds,
        rs,
        yrs,
        rs[length(rs)] AS end_rate,
        greatest(arrayFirstIndex(d -> d >= addYears(ds[length(ds)], -1 * toInt32(yrs)), ds), 1) AS idx
    FROM series
    ARRAY JOIN [5, 10, 20] AS yrs
)
SELECT
    concat(toString(yrs), '-year span')                            AS horizon,
    formatDateTime(ds[idx], '%b %Y')                               AS start_ex_label,
    round(rs[idx], 4)                                              AS start_quarterly_usd,
    round(end_rate, 4)                                             AS latest_quarterly_usd,
    round((pow(end_rate / rs[idx], 1.0 / yrs) - 1) * 100, 2)       AS cagr_pct,
    round(end_rate / rs[idx], 2)                                   AS growth_multiple
FROM spans
ORDER BY yrs ASC
Run this yourself

Over the five-year span the quarterly rate compounded at 3.2% a year, from $0.88 in Nov 2021 to $1.03. The ten-year span compounds at 3.22% a year. The twenty-year span compounds at 6.02%, starting from a quarterly rate of $0.32 in Nov 2006 and ending 3.22 times higher. Comparing the three rows shows how much the pace of raises has varied across the span, which a single headline growth number hides.

One company's growth rate reads better next to others. Verizon's dividend increase history applies the same counting to a different payer, and dividend growth champions lines up the longest records.

FAQ

How often does Exxon raise its dividend?

Across the 20 complete calendar years counted here, Exxon declared 19 quarterly rate increases, close to one a year. The spacing is not exactly twelve months, and the count of years holding no increase at all is shown in the streak panel above.

When was Exxon's last dividend increase?

The most recent increase in this record was declared Oct 31, 2025 and took the quarterly rate to $1.03 per share from $0.99. It first applied to the payment with the Nov 2025 ex-dividend date.

Does Exxon have a dividend increase streak?

Two counts apply to the same data. On annual totals paid per share, the run inside this window is 19 years. On calendar years that contained a declared rate increase, it is 5 years. Published "consecutive years" claims generally use the annual-total basis.

What is Exxon's dividend growth rate?

Measured on the declared quarterly rate, the five-year compound annual growth rate is 3.2% a year and the twenty-year figure is 6.02%. Those are growth rates of the dividend itself, and they are not a shareholder return.

Do I get the higher rate if I buy after an increase is announced?

The rate you receive is set by the ex-dividend date of each payment, not by the announcement date. Owning the shares before that cutoff puts you on the record for that payment at the rate declared for it, and the ex-dividend date explained covers how the cutoff works.

Data notes and how to reproduce these numbers
  • Source: stocks_dividends, filtered to ticker XOM and quarterly frequency. Rows are grouped by ex-dividend date and reduced with max() on the cash amount, which collapses any duplicate row for the same payment.
  • Amounts are the cash rate per share as declared. They are not split adjusted, so a split inside the window would need the split-adjusted column instead of the one used here.
  • Increases are detected by comparing each payment to the previous one in ex-dividend date order, which means the earliest payment in the loaded range can never register as a raise. That is why each query loads a year of runway before the window it reports.
  • The declaration date is the announcement date recorded on the dividend row. A row without a usable declaration date prints as not recorded and drops out of the quarter grouping, so the quarter counts can total less than the full list of increases.
  • Calendar-year panels exclude the current, incomplete year. The front edge of the record can lag live filings by a day or two.
  • The compound growth panel anchors on the most recent payment and walks back a whole number of years, taking the first payment on or after that date as the starting rate.

Every panel above ships with the SQL that produced it, so the window can be widened or the ticker swapped and the whole count rerun. Ask the same question in plain English on the Strasmore terminal to run it yourself.