The free cash flow in the last year of your explicit projection period ($).
The Weighted Average Cost of Capital.
The stable, perpetual growth rate expected after the projection period.
Projected Next Year FCF:–
Denominator (WACC – g):–
Terminal Value (TV):–
Understanding Terminal Growth Rate in Valuation
The Terminal Growth Rate is a critical assumption used in Discounted Cash Flow (DCF) analysis. It represents the constant rate at which a company is expected to grow indefinitely after the explicit forecast period. Because a significant portion of a company's valuation often comes from the Terminal Value, selecting an appropriate growth rate is essential for accurate financial modeling.
This calculator uses the Gordon Growth Model (Perpetuity Growth Method) to determine the Terminal Value. This method assumes that the business will continue to generate free cash flows at a normalized state forever.
The Gordon Growth Formula
The Terminal Value (TV) is calculated using the following formula:
TV = (FCFn × (1 + g)) / (WACC – g)
FCFn: Free Cash Flow in the last year of the projection period.
g: The Terminal Growth Rate.
WACC: Weighted Average Cost of Capital (Discount Rate).
(WACC – g): The Capitalization Rate.
How to Choose a Terminal Growth Rate
Selecting the "g" variable is subjective but should be grounded in economic reality. Here are key guidelines:
Cap at GDP Growth: The terminal growth rate should typically not exceed the long-term GDP growth rate of the country where the company operates (usually 2% to 3%). If a company grows faster than the economy forever, it would eventually become the entire economy.
Inflation Linkage: Often, the rate is set close to the long-term expected inflation rate.
Industry Maturity: Mature industries (utilities, consumer staples) may handle rates closer to GDP, while declining industries might have a growth rate of 0% or even negative.
Common Calculations Errors
1. Growth Rate > WACC:
Mathematically, if the terminal growth rate (g) is higher than the discount rate (WACC), the formula yields a negative denominator, implying an infinite value. In finance, this is impossible. Risk (WACC) should always exceed growth in perpetuity.
2. Using EBITDA instead of FCF:
The Gordon Growth Model requires Free Cash Flow (unlevered), not EBITDA or Net Income, as it accounts for the reinvestment required to sustain that growth.
Interpreting the Results
Once you calculate the Terminal Value, it must be discounted back to the present day using the WACC to find its Present Value (PV). This PV of the Terminal Value is then added to the PV of the explicit forecast period cash flows to determine the total Enterprise Value.
function calculateTerminalValue() {
// Clear previous results
document.getElementById('result-area').style.display = 'none';
document.getElementById('error-msg').style.display = 'none';
// Get inputs
var fcfInput = document.getElementById('lastFcf').value;
var waccInput = document.getElementById('wacc').value;
var growthInput = document.getElementById('growthRate').value;
// Basic Validation
if (fcfInput === "" || waccInput === "" || growthInput === "") {
showError("Please fill in all fields with valid numbers.");
return;
}
var fcf = parseFloat(fcfInput);
var wacc = parseFloat(waccInput) / 100; // Convert to decimal
var g = parseFloat(growthInput) / 100; // Convert to decimal
// Logic Validation
if (isNaN(fcf) || isNaN(wacc) || isNaN(g)) {
showError("Please enter valid numeric values.");
return;
}
if (g >= wacc) {
showError("Math Error: The Terminal Growth Rate (g) cannot be greater than or equal to the Discount Rate (WACC). In a perpetuity model, risk (WACC) must exceed growth.");
return;
}
// Calculation: TV = [ FCF * (1 + g) ] / (WACC – g)
var nextFcf = fcf * (1 + g);
var denominator = wacc – g;
var terminalValue = nextFcf / denominator;
// Formatting
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
var percentFormatter = new Intl.NumberFormat('en-US', {
style: 'percent',
minimumFractionDigits: 2
});
// Display Results
document.getElementById('nextFcfResult').innerText = formatter.format(nextFcf);
document.getElementById('denomResult').innerText = percentFormatter.format(denominator);
document.getElementById('tvResult').innerText = formatter.format(terminalValue);
document.getElementById('result-area').style.display = 'block';
}
function showError(msg) {
var errorDiv = document.getElementById('error-msg');
errorDiv.innerText = msg;
errorDiv.style.display = 'block';
}