Strasmore Research
Deep Dives Matt ConnorBy Matt Connor · data as of September 18, 2026 · refreshed weekly

Stock Split Candidates: Who Might Split Next?

Stock split candidates ranked by share price: the large caps above $500 paired with the price each split at last time, plus the names that never split.

Stock split candidates are the high-priced, large-cap stocks whose boards have every classic reason to split and have not done so. This page ranks them by share price, pairs each with its own split record (when it last split, and at what price), and shows the pattern in recent large-cap splits that makes a high price the first thing to check. Nothing here has been declared: announced, dated splits live in upcoming stock splits, and a name drops out of this ranking the moment it appears there.

Stock split candidates ranked by share price

A forward stock split multiplies a company's share count and divides its price by the same factor; the value of each holder's stake does not change, as what is a stock split walks through. Boards reach for it once the price has grown large, so the first screen is price. The table takes every US-listed stock with a market value of $20 billion or more and a latest close of at least $500, drops any name that already has a split on the calendar, and ranks the rest from the highest price down. Beside each price sits the company's own record: forward splits on file, the date and ratio of the latest one, and the close on the session before it took effect.

QueryStock split candidates: large caps above $500 a share, ranked by price
tickershare_priceprice_before_last_splitmarket_valueforward_splits_on_recordlast_forward_splitlast_split_ratioas_of
AZO2853.10$46B0nonenoneSeptember 18, 2026
FCNCA2120.740$24B0nonenoneSeptember 18, 2026
MELI1824.40$93B0nonenoneSeptember 18, 2026
MKL1784.360$22B0nonenoneSeptember 18, 2026
SNDK1620.280$236B0nonenoneSeptember 18, 2026
FIX15850$55B0nonenoneSeptember 18, 2026
MTD1410.440$28B0nonenoneSeptember 18, 2026
GWW1262.460$59B0nonenoneSeptember 18, 2026
MPWR1175.880$57B0nonenoneSeptember 18, 2026
LLY1151.50$1027B0nonenoneSeptember 18, 2026
TDG1077.730$59B0nonenoneSeptember 18, 2026
BLK1052.020$163B0nonenoneSeptember 18, 2026
EQIX1028.310$101B0nonenoneSeptember 18, 2026
URI1001.480$62B0nonenoneSeptember 18, 2026
MU984.120$1104B32000-05-022-for-1September 18, 2026
The exact SQL behind every number
WITH
latest_px AS
(
    SELECT
        ticker,
        argMax(close, date) AS last_close,
        max(date)           AS px_date
    FROM global_markets.stocks_daily_aggs
    WHERE date >= today() - 10
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    HAVING last_close >= 500
       AND last_close <  50000
),
big_caps AS
(
    SELECT
        ticker,
        argMax(market_cap, date) AS market_cap
    FROM global_markets.stocks_ratios
    WHERE date >= today() - 45
    GROUP BY ticker
    HAVING toFloat64(market_cap) >= 20e9
),
announced AS
(
    SELECT DISTINCT ticker
    FROM global_markets.stocks_splits
    WHERE execution_date > today()
),
cand AS
(
    SELECT
        p.ticker     AS ticker,
        p.last_close AS last_close,
        p.px_date    AS px_date,
        m.market_cap AS market_cap
    FROM latest_px AS p
    INNER JOIN big_caps AS m ON m.ticker = p.ticker
    WHERE p.ticker NOT IN (SELECT ticker FROM announced)
),
last_split AS
(
    SELECT
        ticker,
        max(execution_date)                                                                                   AS last_split_date,
        argMax(concat(toString(toFloat64(split_to)), '-for-', toString(toFloat64(split_from))), execution_date) AS last_split_ratio,
        uniqExact(execution_date)                                                                             AS forward_splits
    FROM global_markets.stocks_splits
    WHERE split_to > split_from
      AND execution_date <= today()
      AND ticker IN (SELECT ticker FROM cand)
    GROUP BY ticker
),
pre_split AS
(
    SELECT
        d.ticker                AS ticker,
        argMax(d.close, d.date) AS pre_split_close
    FROM
    (
        SELECT ticker, date, close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN (SELECT ticker FROM last_split)
    ) AS d
    INNER JOIN last_split AS s ON s.ticker = d.ticker
    WHERE d.date <  s.last_split_date
      AND d.date >= s.last_split_date - 7
    GROUP BY d.ticker
),
to_raw AS
(
    SELECT
        x.ticker                                                                    AS ticker,
        arrayProduct(groupArray(toFloat64(x.to_shares) / toFloat64(x.from_shares))) AS factor
    FROM
    (
        SELECT
            ticker,
            execution_date,
            any(split_from) AS from_shares,
            any(split_to)   AS to_shares
        FROM global_markets.stocks_splits
        WHERE execution_date <= today()
          AND ticker IN (SELECT ticker FROM last_split)
        GROUP BY ticker, execution_date
    ) AS x
    INNER JOIN last_split AS ls ON ls.ticker = x.ticker
    WHERE x.execution_date >= ls.last_split_date
    GROUP BY x.ticker
)
SELECT
    c.ticker                                                                          AS ticker,
    round(toFloat64(c.last_close), 2)                                                 AS share_price,
    if(ps.pre_split_close > 0, round(toFloat64(ps.pre_split_close) * f.factor, 2), 0) AS price_before_last_split,
    concat('$', toString(toUInt64(round(toFloat64(c.market_cap) / 1e9))), 'B')        AS market_value,
    toString(ifNull(s.forward_splits, 0))                                             AS forward_splits_on_record,
    if(s.last_split_date > toDate('1971-01-01'), toString(s.last_split_date), 'none') AS last_forward_split,
    if(s.last_split_ratio != '', s.last_split_ratio, 'none')                          AS last_split_ratio,
    concat(monthName(c.px_date), ' ', toString(toDayOfMonth(c.px_date)), ', ', toString(toYear(c.px_date))) AS as_of
FROM cand AS c
LEFT JOIN last_split AS s  ON s.ticker = c.ticker
LEFT JOIN pre_split  AS ps ON ps.ticker = c.ticker
LEFT JOIN to_raw     AS f  ON f.ticker = c.ticker
ORDER BY c.last_close DESC
LIMIT 15
Run this yourself

As of September 18, 2026, 15 names make the cut. AZO tops the ranking at $2853.1 a share; MU closes it out at $984.12. Read the two price columns together. Where the price before the last split is filled in, the company has split before, and a share price that has climbed back toward that level is the most useful clue the table offers. A zero there means the name has never split (its record reads none) or its last split predates the daily price history on file. The ranking is reproducible: the SQL under the panel produces the same table on any day, with only the prices moving.

Why do companies split near the same price?

Four motives recur in split announcements, and each one concerns the price level rather than the business:

  • Accessibility. A round lot is 100 shares, and a four-figure price puts a round lot beyond most individual accounts.
  • Employee equity. Grants and option awards are denominated in whole shares, and a very high price makes small awards awkward to size.
  • Index weighting. The Dow Jones Industrial Average weights members by share price, so a $1,000 stock carries ten times the pull of a $100 stock; the Dow divisor page has the arithmetic.
  • Options. One listed contract covers 100 shares, so the cash behind a single contract scales with the price.

That is why a company that split once at a given level tends to look at the same level again when the price rebuilds: the constraint that prompted the board the first time is back. The panel below lists every forward split since 2020 by a company now worth $20 billion or more, keeps those where the stock closed at $300 or higher the session before, and shows the price each ratio reset the stock to.

QueryLarge-cap forward splits since 2020: the close the session before, and the price the ratio implied after
tickerexecutedexecuted_onratiopre_split_closeimplied_post_split_price
BKNG2026-04-06April 6, 202625-for-14194.31167.77
CMG2024-06-26June 26, 202450-for-13283.0465.66
AMZN2022-06-06June 6, 202220-for-12447122.35
KLAC2026-06-12June 12, 202610-for-12411.64241.16
GOOG2022-07-18July 18, 202220-for-12255.34112.77
GOOGL2022-07-18July 18, 202220-for-12235.55111.78
TSLA2020-08-31August 31, 20205-for-12213.4442.68
AVGO2024-07-15July 15, 202410-for-11700.67170.07
TPL2024-03-27March 27, 20243-for-11679.18559.73
ORLY2025-06-10June 10, 202515-for-11348.189.87
MSTR2024-08-08August 8, 202410-for-11246.85124.68
NVDA2024-06-10June 10, 202410-for-11208.88120.89
NFLX2025-11-17November 17, 202510-for-11112.17111.22
ISRG2021-10-05October 5, 20213-for-1970.5323.5
TPL2025-12-23December 23, 20253-for-1908.4302.8
TSLA2022-08-25August 25, 20223-for-1891.29297.1
The exact SQL behind every number
WITH
big_caps AS
(
    SELECT
        ticker,
        argMax(market_cap, date) AS market_cap
    FROM global_markets.stocks_ratios
    WHERE date >= today() - 45
    GROUP BY ticker
    HAVING toFloat64(market_cap) >= 20e9
),
on_file AS
(
    SELECT
        ticker,
        execution_date,
        any(split_from) AS from_shares,
        any(split_to)   AS to_shares
    FROM global_markets.stocks_splits
    WHERE execution_date <= today()
      AND ticker NOT IN ('SPCX')
      AND ticker IN (SELECT ticker FROM big_caps)
    GROUP BY ticker, execution_date
),
splits AS
(
    SELECT
        a.ticker         AS ticker,
        a.execution_date AS execution_date,
        a.from_shares    AS from_shares,
        a.to_shares      AS to_shares,
        arrayProduct(groupArray(toFloat64(b.to_shares) / toFloat64(b.from_shares))) AS to_raw
    FROM on_file AS a
    INNER JOIN on_file AS b ON b.ticker = a.ticker
    WHERE b.execution_date >= a.execution_date
      AND a.execution_date >= '2020-01-01'
      AND a.to_shares > a.from_shares
    GROUP BY a.ticker, a.execution_date, a.from_shares, a.to_shares
)
SELECT
    s.ticker                                                                            AS ticker,
    toString(s.execution_date)                                                          AS executed,
    concat(monthName(s.execution_date), ' ', toString(toDayOfMonth(s.execution_date)), ', ', toString(toYear(s.execution_date))) AS executed_on,
    concat(toString(toFloat64(s.to_shares)), '-for-', toString(toFloat64(s.from_shares))) AS ratio,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw, 2)                             AS pre_split_close,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw * toFloat64(s.from_shares) / toFloat64(s.to_shares), 2) AS implied_post_split_price
FROM
(
    SELECT ticker, date, close
    FROM global_markets.stocks_daily_aggs
    WHERE date >= '2019-12-01'
      AND ticker IN (SELECT ticker FROM splits)
) AS d
INNER JOIN splits AS s ON s.ticker = d.ticker
WHERE d.date <  s.execution_date
  AND d.date >= s.execution_date - 7
GROUP BY s.ticker, s.execution_date, s.to_shares, s.from_shares, s.to_raw
HAVING pre_split_close >= 300
ORDER BY pre_split_close DESC
LIMIT 16
Run this yourself

The largest pre-split price belongs to BKNG, which split 25-for-1 on April 6, 2026 from a prior close of $4194.31, a ratio that put the stock near $167.77. The list holds 16 splits, and the right-hand series is the point: whatever the starting price, the ratio is picked to land the stock far below it, typically in the double or low triple digits. The smallest entry, TSLA, went from $891.29 to about $297.1. A candidate in the first table is, in effect, a stock that has drifted back into the left-hand column of this one. Whether it rises afterwards is a separate question, tested with data in does a stock go up after a split.

Does a company split again at the same price? Apple's record

Apple is the cleanest test of the repeat-price idea, and its full record is in Apple's stock split history. The panel pairs each forward split on file that has daily prices around it with the close on the session before and the price the ratio implied afterwards.

QueryApple forward splits: the close before each one and the price it landed at
labelexecutedratiopre_split_closeimplied_post_split_price
February 28, 20052005-02-282-for-188.9944.49
June 9, 20142014-06-097-for-1645.5792.22
August 31, 20202020-08-314-for-1499.23124.81
The exact SQL behind every number
WITH
on_file AS
(
    SELECT
        ticker,
        execution_date,
        any(split_from) AS from_shares,
        any(split_to)   AS to_shares
    FROM global_markets.stocks_splits
    WHERE ticker = 'AAPL'
      AND execution_date <= today()
    GROUP BY ticker, execution_date
),
splits AS
(
    SELECT
        a.ticker         AS ticker,
        a.execution_date AS execution_date,
        a.from_shares    AS from_shares,
        a.to_shares      AS to_shares,
        arrayProduct(groupArray(toFloat64(b.to_shares) / toFloat64(b.from_shares))) AS to_raw
    FROM on_file AS a
    INNER JOIN on_file AS b ON b.ticker = a.ticker
    WHERE b.execution_date >= a.execution_date
      AND a.to_shares > a.from_shares
    GROUP BY a.ticker, a.execution_date, a.from_shares, a.to_shares
)
SELECT
    concat(monthName(s.execution_date), ' ', toString(toDayOfMonth(s.execution_date)), ', ', toString(toYear(s.execution_date))) AS label,
    toString(s.execution_date)                                                          AS executed,
    concat(toString(toFloat64(s.to_shares)), '-for-', toString(toFloat64(s.from_shares))) AS ratio,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw, 2)                             AS pre_split_close,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw * toFloat64(s.from_shares) / toFloat64(s.to_shares), 2) AS implied_post_split_price
FROM splits AS s
INNER JOIN
(
    SELECT ticker, date, close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'AAPL'
) AS d ON d.ticker = s.ticker
WHERE d.date <  s.execution_date
  AND d.date >= s.execution_date - 7
GROUP BY s.execution_date, s.to_shares, s.from_shares, s.to_raw
ORDER BY s.execution_date
Run this yourself

The two most recent are the ones that matter here. On June 9, 2014 Apple split 7-for-1 from a close of $645.57, landing near $92.22. On August 31, 2020 it split 4-for-1 from $499.23, landing near $124.81. Two splits, years apart, both with the stock somewhere between four and seven hundred dollars. The monthly trace between them shows the shape: in an ordinary month the highest and lowest close sit near each other, and in a split month they sit hundreds of dollars apart.

QueryApple, monthly highest and lowest close, 2014 through 2020, restated to the share basis of each day
84 rows (showing 20)
monthperiod_labelhighest_closelowest_close
2014-01-01Jan 2014557.36499.78
2014-02-01Feb 2014545.99501.53
2014-03-01Mar 2014544.99524.69
2014-04-01Apr 2014594.09517.96
2014-05-01May 2014635.38585.54
2014-06-01Jun 2014647.3590.28
2014-07-01Jul 201499.0293.09
2014-08-01Aug 2014102.594.48
2014-09-01Sep 2014103.397.87
2014-10-01Oct 201410896.26
2014-11-01Nov 2014119108.6
2014-12-01Dec 2014115.93106.75
2015-01-01Jan 2015118.9105.99
2015-02-01Feb 2015133118.63
2015-03-01Mar 2015129.36122.24
2015-04-01Apr 2015132.65124.25
2015-05-01May 2015132.54125.01
2015-06-01Jun 2015130.54124.53
2015-07-01Jul 2015132.07120.07
2015-08-01Aug 2015119.72103.12
The exact SQL behind every number
WITH
on_file AS
(
    SELECT
        execution_date,
        any(split_from) AS from_shares,
        any(split_to)   AS to_shares
    FROM global_markets.stocks_splits
    WHERE ticker = 'AAPL'
      AND execution_date <= today()
    GROUP BY execution_date
),
restated AS
(
    SELECT
        d.date AS date,
        any(toFloat64(d.close)) * arrayProduct(groupArray(if(s.execution_date > d.date, toFloat64(s.to_shares) / toFloat64(s.from_shares), 1.0))) AS raw_close
    FROM
    (
        SELECT date, close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2014-01-01'
          AND date <  '2021-01-01'
    ) AS d
    CROSS JOIN on_file AS s
    GROUP BY d.date
)
SELECT
    toString(toStartOfMonth(date))                AS month,
    formatDateTime(toStartOfMonth(date), '%b %Y') AS period_label,
    round(max(raw_close), 2)                      AS highest_close,
    round(min(raw_close), 2)                      AS lowest_close
FROM restated
GROUP BY toStartOfMonth(date)
ORDER BY toStartOfMonth(date)
Run this yourself

The trace runs 84 months, Jan 2014 through Dec 2020, on closes restated to the share basis of their own day (the daily series is split-adjusted, so the SQL multiplies each close back by the ratios of the splits that came after it), which is what makes each split month a cliff. An adjusted chart erases the cliff; split-adjusted price history explains how. What the raw chart shows is the round trip: the price climbs from one split's landing zone back into the band the board acted on before, and the next split follows. That round trip is the idea behind this page.

Split-shaped but stubborn: high-priced stocks that never split

A high price is a reason to look, not a forecast. Some of the most expensive stocks have sat above $500 for years without a forward split on record, and their boards tend to say why: a high price keeps the holder base weighted toward long-term owners and discourages rapid trading. Berkshire Hathaway's Class A shares are the famous case, never split under Warren Buffett, with the lower-priced Class B created in 1996 for smaller investors instead. The panel counts, for every $20-billion-plus company with no forward split on record, the daily closes at $500 or more over the trailing five years, keeping names above $500 today with at least a year of such closes behind them.

QuerySplit-shaped but stubborn: large caps above $500 with no forward split on record
tickercloses_above_500first_above_500_in_windowlatest_closehighest_close
MKL1255September 20, 2021$1784.36$2191.9
AZO1255September 20, 2021$2853.1$4354.54
EQIX1255September 20, 2021$1028.31$1115.94
MTD1255September 20, 2021$1410.44$1702.53
TDG1255September 20, 2021$1077.73$1620.83
BLK1255September 20, 2021$1052.02$1202.59
MELI1255September 20, 2021$1824.4$2613.63
FCNCA1255September 20, 2021$2120.74$2353.08
BRK.A1254September 20, 2021$763935.95$809350
REGN1249September 20, 2021$788.02$1201.76
GWW1087December 7, 2021$1262.46$1402.03
COST1041November 3, 2021$894.15$1094.32
The exact SQL behind every number
WITH
big_caps AS
(
    SELECT
        ticker,
        argMax(market_cap, date) AS market_cap
    FROM global_markets.stocks_ratios
    WHERE date >= today() - 45
    GROUP BY ticker
    HAVING toFloat64(market_cap) >= 20e9
),
ever_split AS
(
    SELECT DISTINCT ticker
    FROM global_markets.stocks_splits
    WHERE split_to > split_from
)
SELECT
    d.ticker                                                            AS ticker,
    uniqExactIf(d.date, d.close >= 500)                                 AS closes_above_500,
    concat(monthName(minIf(d.date, d.close >= 500)), ' ', toString(toDayOfMonth(minIf(d.date, d.close >= 500))), ', ', toString(toYear(minIf(d.date, d.close >= 500)))) AS first_above_500_in_window,
    concat('$', toString(round(toFloat64(argMax(d.close, d.date)), 2))) AS latest_close,
    concat('$', toString(round(toFloat64(max(d.close)), 2)))            AS highest_close
FROM global_markets.stocks_daily_aggs AS d
WHERE d.date >= today() - 1826
  AND d.ticker IN (SELECT ticker FROM big_caps)
  AND d.ticker NOT IN (SELECT ticker FROM ever_split)
  AND d.ticker NOT IN ('SPCX')
GROUP BY d.ticker
HAVING argMax(d.close, d.date) >= 500
   AND closes_above_500 >= 250
ORDER BY closes_above_500 DESC
LIMIT 12
Run this yourself

MKL leads with 1255 closes at $500 or better inside the window, the first of them on September 20, 2021, and it last closed at $1784.36 with no split in its record. The 12 names here are the reason to read the first table as a watchlist rather than a prediction: they pass every price test a screen can apply and have passed it for years without acting. A name that appears in both tables belongs in both. The ranking knows a board's share price, never its mind.

Has anyone on this list announced a split?

No, by construction. The candidates query drops any ticker with a split carrying a future effective date, so as of September 18, 2026 none of the 15 names above has a dated split pending. One gap: a split declared this week can take a session or two to reach the calendar, and a name stays here until it does. Once a board acts, the name moves to the upcoming splits calendar and, after the effective date, to recent stock splits. How often that happens across the whole market, year by year, is charted in how often stocks split.

How the ranking is built
  • Universe: every ticker with a close in the last ten calendar days and a market value of $20 billion or more on its latest valuation row within 45 days.
  • Price test: latest close between $500 and $50,000. The ceiling exists only to keep Berkshire Hathaway's Class A shares from flattening the chart.
  • Exclusion: any ticker with a split of any kind carrying a future effective date is dropped.
  • History: forward splits only; reverse splits are ignored. The price before the last split is the last close in the seven calendar days before the effective date; the daily series is split-adjusted, and the SQL multiplies that close back by the ratio of every split that came after it.
  • Refresh: the ranking regenerates with the site. The Apple panels are pinned to fixed dates and never move.

FAQ

Which stocks are most likely to split next?

The best available screen is a high share price at a large company that has split before, with the price back near the level of its last split. The ranked table at the top of this page applies that screen and refreshes with the site. It is a watchlist, and no name on it has announced anything.

At what share price do companies split?

There is no rule. The large-cap splits since 2020 in the table above came from prior closes as high as $4194.31, with ratios chosen to land the post-split price in the double or low triple digits.

Do companies split at the same price every time?

Not exactly, but the same neighborhood is common. Apple's last two splits came with the stock between four and seven hundred dollars, years apart, since the constraint that prompted the first split returns when the price rebuilds.

Why do some expensive stocks never split?

Their boards prefer it. A high share price discourages rapid trading and keeps the holder base weighted toward long-term owners, and companies such as Berkshire Hathaway have said so for decades. A high price alone never guarantees a split.


Every panel on this page carries the exact SQL that built it. To rerun the ranking with a different price floor or size cutoff, open the query on the Strasmore terminal and change one number.

#stock splits#split candidates#high-priced stocks#share price#corporate actions