Dividend discount model
With 2.5 of dividend expected next year, a required return of 10% and growth of 4% forever, one share is worth 41.67 under the Gordon growth model. Enter those three figures to get the value per share. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Expected dividend
- 2.5
- Required return
- 10
- Growth rate
- 4
- Required return decimal
- 0.1
- Growth rate decimal
- 0.04
- Spread
- 6
- Value per share
- 41.67
The dividend discount model, often called the Gordon growth model, is the closed-form intrinsic value of a share that pays a dividend growing at a constant rate forever. Analysts, CFA candidates, and valuation students use a dividend discount model calculator to turn next year's expected dividend, a required rate of return, and a perpetual growth rate into a single value per share without opening a spreadsheet or a full discounted-cash-flow workbook.
What the Gordon dividend discount model prices and why growth cannot exceed required return
The Gordon growth form of the dividend discount model answers a pricing question that a raw total of future dividends cannot: what is one share worth today if the next dividend is known, if that dividend then grows at a constant rate forever, and if investors require a single rate of return to hold the stock?
A dollar of dividend next year is not a dollar now, so the infinite series of growing cash to the shareholder has a closed form: value per share equals next year's expected dividend divided by the spread between the required return and the perpetual growth rate. That identity is P0 equals D1 over r minus g.
The spread in the denominator is why growth cannot meet or exceed the required return: if g equals r the series does not converge and the price is undefined; if g is larger than r the series explodes and the model is not a valuation tool at all. Expected dividend here is D1, the cash you expect over the next period, not the trailing dividend D0 already paid.
Growth may be zero, which collapses the model to a perpetuity of D1 over r, or negative, which is a declining dividend stream and a smaller but still defined price as long as r still exceeds g. The model assumes a single required return, a single growth rate that never changes, and no terminal multiple: it is not a multi-stage discounted cash flow and it does not subtract net debt. You supply three numbers you already trust; the calculator applies the classical identity so every consumer sees the same arithmetic.
Where a dividend discount model calculator earns its keep
Equity research, dividend-stock screening, and CFA-style exam prep need a live dividend discount model calculator that students and analysts can trust against textbook tables when they already have next year's dividend, a cost of equity, and a long-run growth rate. Interview screens and homework generators require a deterministic oracle that rejects growth greater than or equal to required return instead of returning a price that looks like a quote.
This is a different search and a different job from discounted cash flow, which discounts an explicit multi-year free-cash-flow forecast plus a terminal lump, and from a price-to-earnings multiple, which never discounts a dividend stream. Content sites that rank for dividend discount model or Gordon growth model benefit from a free browser path that matches the paid automation path on the same pure module.
Use it when the question is what a known growing dividend is worth today, and layer multi-stage or residual-income work in your own service when you need them.
What you can do with it
First-pass intrinsic value of a dividend stock
Turn next year's expected dividend, a cost of equity, and a perpetual growth rate into a reproducible Gordon value per share for a teaser, screening grid, or investment memo.
Classroom and CFA dividend-model checks
Verify textbook dividend discount model value per share for given D1, required return, and growth, including the zero-growth perpetuity and the g greater than or equal to r rejection.
FAQ
How does the dividend discount model value a share?
It divides next year's expected dividend by the required return minus the growth rate, both taken as decimals. The smaller that gap between the two rates, the higher the value per share comes out.
Why must the required return be higher than the growth rate?
Because the model adds up growing dividends forever. If growth equals the required return the sum never settles, and if it is larger the sum explodes, so the calculator rejects both cases instead of showing a meaningless price.
Should I enter last year's dividend or next year's?
Next year's expected dividend, not the one already paid. If you only know the last dividend, multiply it by one plus the growth rate and enter that result instead.
Can the growth rate be zero or negative?
Yes. Zero growth turns the model into a plain perpetuity, the dividend divided by the required return. Negative growth describes a shrinking dividend and still gives a smaller, valid price while the required return stays above it.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/divdend-discount-model \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"expected_dividend":2.5,"required_return":10,"growth_rate":4}'const res = await fetch("https://api.kit.forhosting.com/fin/divdend-discount-model", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"expected_dividend": 2.5,
"required_return": 10,
"growth_rate": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/divdend-discount-model",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"expected_dividend": 2.5,
"required_return": 10,
"growth_rate": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/divdend-discount-model", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"expected_dividend":2.5,"required_return":10,"growth_rate":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"expected_dividend":2.5,"required_return":10,"growth_rate":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/divdend-discount-model", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"expected_dividend": 2.5,
"required_return": 10,
"growth_rate": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.divdend_discount_model",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
This calculator implements that identity as a pure parse task: it converts both rates from percents to decimals, checks that required return strictly exceeds growth, and returns value_per_share as expected dividend divided by that spread. When growth meets or exceeds the required return the infinite series does not converge, so the task fails with invalid_input instead of an infinite or negative price.
What the Gordon dividend discount model prices and why growth cannot exceed required return
This calculator therefore rejects those two cases with invalid_input rather than returning infinity or a negative quote that would look like a price. If you only have D0, multiply it by one plus g yourself and send that product as expected_dividend.
Input contract, formula, and response fields
Example: an expected dividend of two point five, a required return of ten percent, and growth of four percent yield two point five divided by zero point zero six, which rounds to forty-one point six seven per share. POST a JSON body with three required fields. expected_dividend is next period's dividend per share in currency units, a finite number that is not negative; zero is allowed and yields a value per share of zero. Aliases dividend, d1, next_dividend, and expected map to the same field so a worksheet can keep its column names. required_return is the investor's required rate of return, or cost of equity, expressed as a percent rather than a decimal fraction: ten means ten percent, not zero point one. Aliases rate, required_rate, cost_of_equity, k, and required_rate_of_return are accepted. growth_rate is the constant perpetual growth of the dividend, also as a percent: four means four percent, and it may be zero or negative for a no-growth or declining stream. Aliases growth, g, dividend_growth, and growth_percent are accepted. Optionally set decimals to an integer from zero to eight for currency-style rounding of value_per_share; the default is two. The engine forms r as required_return over one hundred and g as growth_rate over one hundred, then requires r strictly greater than g. value_per_share is expected_dividend divided by r minus g. The response echoes the three inputs, reports required_return_decimal and growth_rate_decimal, reports spread as the percent-point gap between required return and growth, and includes a short formula string. Money-like value_per_share uses half-up rounding once from the raw floating-point result so goldens stay byte-stable across runtimes. Missing fields, empty strings, non-finite values, a negative expected dividend, growth that meets or exceeds required return, and out-of-range decimals fail with invalid_input and are not billed.
Where a dividend discount model calculator earns its keep
Brokers and FP&A templates recompute intrinsic value when a required-return assumption or a growth forecast changes mid-memo; a tiny parse API avoids reinventing the Gordon identity in every spreadsheet. Sweep required_return from your own code to show how value per share falls as the hurdle rises; pin value_per_share in tests; keep requests small. This tool does not convert a trailing D0 into D1 for you, does not solve for implied growth from a market price, and does not subtract net debt to reach enterprise value—only the classical single-stage Gordon value per share.
Integration use cases
Sensitivity when cost of equity or growth moves
Recompute value_per_share when required_return or growth_rate changes so every scenario in a grid uses the same classical Gordon identity.
Technical questions
How does the dividend discount model compute value per share?
Send expected_dividend (next period's D1), required_return as a percent (ten means ten percent), and growth_rate as a percent. value_per_share is expected_dividend divided by (r minus g), with r = required_return/100 and g = growth_rate/100. Required return must strictly exceed growth.
What happens if the growth rate exceeds the required return?
The task fails with invalid_input. When growth_rate meets or exceeds required_return the Gordon series does not converge, so there is no finite value per share and the call is not billed.
Is expected_dividend the trailing dividend or next year's dividend?
Next year's. expected_dividend is D1, the cash you expect over the coming period. If you only have the trailing D0, multiply it by one plus the growth rate and send that product.
Are required_return and growth_rate percents or decimals?
Percents. Ten means ten percent, not zero point one. Four percent growth is 4, not 0.04. Zero growth is a level perpetuity of D1 over r; negative growth is a declining dividend and is allowed as long as r still exceeds g.
What does the dividend discount model calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.