Monthly Dividend Stocks: The Full List
Monthly dividend stocks screened from real payment history: which US-listed names actually pay twelve times a year, and what each one yields today.
Monthly dividend stocks pay cash every month instead of once a quarter, and the real list is much shorter than the listicles suggest. Screening the payment record itself rather than a vendor label, 1553 US-listed tickers made between ten and fourteen recurring cash payments over the trailing twelve months, and only 32 of those carry a company-fundamentals record. Everything on this page is priced from the close of the Jul 21 session.
The monthly dividend stocks list
Every name below is a US-listed filing company that recorded ten to fourteen recurring cash payments over the last twelve months and traded at least a million dollars of stock a day. The ranking is by daily traded value.
The exact SQL behind every number
SELECT m.ticker AS ticker,
round(m.latest_payment, 4) AS monthly_payment_usd,
round(100 * m.latest_payment * 12 / l.last_close, 2) AS annual_yield_pct,
round(dateDiff('day', s.streak_start, s.last_ex) / 365.25, 1) AS years_paying_monthly,
round(l.adv_usd / 1e6, 1) AS avg_daily_traded_musd,
formatDateTime(l.last_session, '%b %e') AS priced_through
FROM (
SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING count() BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
) AS m
INNER JOIN (
SELECT ticker,
maxIf(ed, gap_days > 70) AS streak_start,
max(ed) AS last_ex
FROM (
SELECT ticker, ex_dividend_date AS ed,
dateDiff('day',
lagInFrame(ex_dividend_date) OVER (PARTITION BY ticker ORDER BY ex_dividend_date),
ex_dividend_date) AS gap_days
FROM (
SELECT ticker, ex_dividend_date
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring' AND cash_amount > 0 AND ex_dividend_date <= today()
GROUP BY ticker, ex_dividend_date
)
)
GROUP BY ticker
) AS s ON s.ticker = m.ticker
INNER JOIN (
SELECT ticker,
avg(dollar_vol) AS adv_usd,
argMax(close_px, d) AS last_close,
max(d) AS last_session,
count() AS sessions
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime(today() - 32)
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sessions >= 15 AND adv_usd >= 1000000 AND last_close > 0
) AS l ON l.ticker = m.ticker
INNER JOIN (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
) AS f ON f.ticker = m.ticker
ORDER BY l.adv_usd DESC
LIMIT 60O is the most heavily traded monthly payer here: a $0.271 monthly payment, 14 years of unbroken monthly payments on the record, and an annualized yield of 5% against its Jul 21 close, on 226.4 million dollars of stock an average session. The screen returns 26 names. The yield column annualizes the latest single payment at twelve a year and divides by that close, so it moves whenever the price moves. It is not a forecast of the next twelve months of cash.
Owning the stock before its ex-dividend date is what earns the next check. The upcoming ex-dividend dates calendar lists who goes ex next, and the ex-dividend date explained covers the cutoff that decides whether a buyer collects.
How a monthly payer is identified
The dividend feed carries a frequency label, and trusting it alone gets the answer wrong in both directions. The test here counts the payments a ticker actually made, then bounds that count on both sides.
The exact SQL behind every number
WITH payers AS (
SELECT ticker,
count() AS payments_12m,
argMax(frequency, ex_dividend_date) AS freq_flag
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
)
SELECT multiIf(payments_12m = 1, 'One a year',
payments_12m = 2, 'Two a year',
payments_12m BETWEEN 3 AND 6, 'Three to six a year',
payments_12m BETWEEN 7 AND 9, 'Seven to nine a year',
payments_12m BETWEEN 10 AND 14, 'Ten to fourteen a year',
payments_12m BETWEEN 15 AND 39, 'Fifteen to thirty-nine a year',
'Forty or more a year') AS bucket,
count() AS tickers,
countIf(freq_flag = 12) AS labelled_monthly,
countIf(ticker IN (SELECT ticker FROM filers)) AS company_filings
FROM payers
GROUP BY bucket
ORDER BY min(payments_12m)98 tickers made forty or more recurring cash payments over the trailing year, and another 77 made between fifteen and thirty-nine. Those are weekly and daily distributors, a fast-growing corner of the fund market. A screen asking only for "ten payments or more" sweeps every one of them into the monthly list. Capping the count at fourteen removes them.
The label on its own is no better. 71 tickers carrying a monthly frequency label paid exactly once over the year, and 182 of them paid between three and six times. Inside the ten-to-fourteen band, label and record agree 1541 times out of 1553, which is why this page requires both.
Most monthly payers are funds, not operating companies
This is the part the listicles skip. The warehouse carries no fund, ETF or REIT type flag, so a monthly-payer list cannot be filtered to operating companies by label. What it does carry is a company-fundamentals feed that reports a market capitalization for the operating companies it covers. Exchange-traded and closed-end funds fall outside that coverage, which makes the presence of a market capitalization the working proxy for an operating company on this page. Of the 1553 tickers in the monthly band, 32 carry one. The rest carry no such record. Most of them are exchange-traded, closed-end and interval funds, with a tail of units, trusts and smaller issuers the feed does not reach.
The handful that do file are dominated by real estate investment trusts, mortgage REITs, business development companies and royalty trusts. That is the honest shape of monthly income: the corporate forms that pay every month are built to pass cash straight through. A monthly equivalent of a two-decade dividend growth champion barely exists among ordinary operating businesses, which pay quarterly.
What monthly dividend stocks yield
Yields across the monthly crowd spread far wider than across the market. The panel buckets every monthly payer clearing the liquidity floor with a full year of price history, and adds one column a yield screen never shows: what the share price did over those twelve months.
The exact SQL behind every number
WITH monthly AS (
SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING count() BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM monthly)
AND (window_start >= toDateTime(today() - 32)
OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
),
px AS (
SELECT ticker,
avgIf(dollar_vol, d > today() - 32) AS adv_usd,
argMaxIf(close_px, d, d > today() - 32) AS last_close,
argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
countIf(d > today() - 32) AS recent_sessions,
countIf(d <= today() - 358) AS old_sessions
FROM tape
GROUP BY ticker
HAVING recent_sessions >= 15
AND old_sessions > 0
AND adv_usd >= 1000000
AND last_close > 0
AND close_year_ago > 0
),
named AS (
SELECT m.ticker AS ticker,
100 * m.latest_payment * 12 / p.last_close AS yld,
100 * (p.last_close - p.close_year_ago) / p.close_year_ago AS price_change,
m.ticker IN (SELECT ticker FROM filers) AS is_filer
FROM monthly m
INNER JOIN px p ON p.ticker = m.ticker
)
SELECT multiIf(yld < 3, 'Under 3%',
yld < 5, 'From 3% to 5%',
yld < 8, 'From 5% to 8%',
yld < 12, 'From 8% to 12%',
'Above 12%') AS bucket,
count() AS payers,
round(quantileDeterministic(0.5)(yld, cityHash64(ticker)), 2) AS median_yield_pct,
round(quantileDeterministic(0.5)(price_change, cityHash64(ticker)), 1) AS median_price_change_12m_pct,
countIf(is_filer) AS company_filings
FROM named
GROUP BY bucket
ORDER BY median_yield_pctThe largest band is From 3% to 5%, holding 289 names against 212 in the From 5% to 8% band and 65 in the Under 3% band. Median yields step up cleanly, from 2.46% at the bottom to 14.35% at the top.
Now read the price column beside it. The median twelve-month price change measures 0.5% in the lowest yield band and -0.4% in the From 3% to 5% band, then -6.6% in the Above 12% band. Yield puts price in the denominator, so a name can climb into the top bucket with no change to the payment. An extreme yield is usually arithmetic about a falling share price rather than evidence of a generous payer. Dividend yield versus Treasury yields sets out what a high income figure has to clear.
The names above 12%
Any monthly payer yielding above roughly 12% deserves a second look. These are the filing companies clearing that mark, with what the share price and the monthly payment did over the past year.
The exact SQL behind every number
WITH monthly AS (
SELECT ticker,
argMax(cash_amount, ex_dividend_date) AS latest_payment,
argMin(cash_amount, ex_dividend_date) AS oldest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 400
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING countIf(ex_dividend_date > today() - 365) BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
AND oldest_payment > 0
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM monthly)
AND (window_start >= toDateTime(today() - 32)
OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
),
px AS (
SELECT ticker,
avgIf(dollar_vol, d > today() - 32) AS adv_usd,
argMaxIf(close_px, d, d > today() - 32) AS last_close,
argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
countIf(d > today() - 32) AS recent_sessions,
countIf(d <= today() - 358) AS old_sessions
FROM tape
GROUP BY ticker
HAVING recent_sessions >= 15
AND old_sessions > 0
AND adv_usd >= 1000000
AND last_close > 0
AND close_year_ago > 0
)
SELECT m.ticker AS ticker,
round(100 * m.latest_payment * 12 / p.last_close, 2) AS annual_yield_pct,
round(100 * (p.last_close - p.close_year_ago) / p.close_year_ago, 1) AS price_change_12m_pct,
round(100 * (m.latest_payment - m.oldest_payment) / m.oldest_payment, 1) AS payment_change_12m_pct,
round(p.adv_usd / 1e6, 1) AS avg_daily_traded_musd
FROM monthly m
INNER JOIN px p ON p.ticker = m.ticker
INNER JOIN filers f ON f.ticker = m.ticker
WHERE 100 * m.latest_payment * 12 / p.last_close >= 12
ORDER BY annual_yield_pct DESC
LIMIT 259 names clear the bar. EARN carries the highest annualized figure at 21.85%; its share price moved -26% over twelve months and its monthly payment moved 0%. PSEC follows at 19.34%, on a price move of -36.3% and a payment move of -22.2%. A payment cut and a falling price frequently arrive on the same name, and the yield rises through both.
A yield is an incomplete number on its own, which is the argument what is dividend yield works through in full.
Realty Income's monthly dividend, year by year
Realty Income is the reference point for the category and the usual starting point for anyone reading about monthly dividends. Its declared monthly rate, the highest payment declared in each calendar year, sits beside the raise over the prior year and the number of times the rate stepped up inside that year:
The exact SQL behind every number
WITH steps AS (
SELECT ed, amt,
lagInFrame(amt) OVER (ORDER BY ed ASC) AS prior_amt
FROM (
SELECT ex_dividend_date AS ed, max(cash_amount) AS amt
FROM global_markets.stocks_dividends
WHERE ticker = 'O'
AND distribution_type = 'recurring'
AND cash_amount > 0
AND ex_dividend_date >= '2013-01-01'
AND ex_dividend_date < toStartOfYear(today())
GROUP BY ed
)
),
yearly AS (
SELECT toYear(ed) AS year,
max(amt) AS monthly_rate,
countIf(prior_amt > 0 AND amt > prior_amt) AS raise_count
FROM steps
GROUP BY year
),
seq AS (
SELECT year, monthly_rate, raise_count,
lagInFrame(monthly_rate) OVER (ORDER BY year ASC) AS prior_rate
FROM yearly
),
panel AS (
SELECT year, monthly_rate, raise_count,
100 * (monthly_rate - prior_rate) / prior_rate AS raise_pct
FROM seq
WHERE prior_rate > 0 AND year >= 2014
)
SELECT year,
round(monthly_rate, 4) AS monthly_payment_usd,
round(raise_pct, 2) AS annual_raise_pct,
raise_count,
round(min(raise_pct) OVER (), 2) AS smallest_annual_raise_pct
FROM panel
ORDER BY yearThe monthly rate went from $0.1834 in 2014 to $0.27 in 2025. The smallest annual step in the panel measures 0.69%, so the rate rose in every year shown. The raise ran 2.47% in the latest full year and 0.69% in 2014, and the step count beside it shows how the rate got there: 6 separate increases inside 2025 alone. Monthly payers move the rate in small increments several times a year rather than once in one step. The full measured profile sits on the Realty Income dividend page.
How far back the monthly payment record goes
Every streak on this page is measured from the dividend record rather than from the year a company first paid monthly, and the record is younger than the oldest payers. Counting the tickers with ten to fourteen recurring ex-dates in each completed calendar year:
The exact SQL behind every number
WITH per_year AS (
SELECT ticker,
toYear(ex_dividend_date) AS year,
count(DISTINCT ex_dividend_date) AS payments
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND cash_amount > 0
AND ex_dividend_date >= '2005-01-01'
AND ex_dividend_date < toStartOfYear(today())
GROUP BY ticker, year
)
SELECT year,
countIf(payments BETWEEN 10 AND 14) AS monthly_payers,
round(100 * countIf(payments BETWEEN 10 AND 14) / count(), 2) AS monthly_share_pct
FROM per_year
GROUP BY year
ORDER BY yearThe record holds 60 monthly payers in 2011 and 135 in 2012, then 730 in 2013 and 1481 in 2025. The share column separates that step from plain growth in the feed: monthly payers went from 1.44% of all recurring payers to 10.2%. A company paying monthly long before that step cannot show more years of streak here than the record itself holds.
How this list is measured
Every threshold and exclusion, in plain English.
- Cadence. A ticker qualifies as monthly when it recorded between ten and fourteen recurring cash payments over the trailing 365 days AND its latest frequency label says monthly. Both bounds matter: the lower tolerates the odd missing record, the upper keeps weekly and daily distributors out.
- Payment type. Only payments the feed marks recurring are counted. Special, supplemental and irregular one-offs are excluded from the cadence test and from the yield.
- Streak. Years of uninterrupted monthly payments counts consecutive recurring ex-dates with no gap longer than seventy days. The feed occasionally lacks a record for a month a company did pay, so demanding twelve exact records a year would understate every streak; a switch to quarterly opens a gap near three months and correctly ends it. The record itself sets the ceiling, as the coverage panel above shows.
- Liquidity floor. At least one million dollars of stock traded a day on average, across at least fifteen regular-hours sessions in the last month. Below that, quoted spreads make the yield academic.
- Pricing. Yields use the last close of a COMPLETED session; the session in progress when this page rebuilt is excluded, so the date stamp may sit a day or two behind the calendar.
- Company filter. The main list keeps only tickers carrying a company-fundamentals record. The yield distribution panel keeps every monthly payer, funds included.
- Exclusions. Leveraged and inverse exchange-traded products are removed by name, as is any ticker with a stock split in the past year (a split fakes a price move and breaks a per-share comparison). One symbol reused by two issuers is excluded everywhere.
- What is not here. Fund expense ratios and the tax character of a distribution (return of capital versus income) are absent from this data. Several high-yield monthly funds hand back capital rather than earnings, and that never shows in a yield.
FAQ
Which stocks pay dividends every month?
Measured from the payment record over the trailing twelve months, 1553 US-listed tickers pay monthly, but only 32 of them carry a company-fundamentals record. Almost all of the rest are funds. The most heavily traded of the filers is O, and the list clearing the liquidity floor runs 26 deep.
Are monthly dividend stocks safe?
A monthly schedule carries no safety guarantee, and the group skews toward mortgage REITs and option-income funds whose payouts move with credit conditions and rates. Across the monthly payers measured here, the median twelve-month price change was -6.6% for names yielding above 12% against 0.5% for those under 3%.
What is the highest-yielding monthly dividend stock?
Among monthly-paying filing companies clearing the liquidity floor, EARN carries the highest annualized yield at 21.85% as of the Jul 21 close. Its share price moved -26% over the prior twelve months, which is the arithmetic behind most double-digit yields.
How is the monthly yield on this page calculated?
The latest declared monthly payment is multiplied by twelve, then divided by the last completed session's close. That annualizes the current rate rather than summing the last twelve months of cash, so a payer that raised mid-year reads higher here than its trailing yield.
Every table above is a stored, versioned query over declared dividend records and real minute bars. Expand the SQL under any panel, or build your own monthly-payer screen on the Strasmore terminal.