3-Statement Financial Model: Netflix

Build a professional Netflix financial model with DCF valuation in Google Sheets.

Introduction

30 Second Summary

Every quarter, companies like Netflix reveal exactly how much money they made. Financial analysts use those numbers to build models that predict where a company is headed and what it's worth today.

In this project, you will build a professional 3-statement financial model for Netflix (NFLX) in Google Sheets using real data from their SEC filings. You'll forecast revenue, project the income statement and cash flow statement, and value the company using a discounted cash flow analysis.

What You'll Build

A multi-tab Google Sheets workbook that models Netflix's financials using 3 years of historical data, projects 3 years forward with driver-based assumptions, and produces a DCF valuation with scenario analysis.

By the end of this project, you'll have:

  • A driver-based revenue forecast using regional subscriber counts and ARPU that dynamically updates across Base, Bull, and Bear scenarios.
  • A projected income statement and cash flow statement for 2025E-2027E linked to a scenario dropdown that cascades changes through the entire model.
  • A DCF valuation with an implied share price that changes when you toggle between Base, Bull, and Bear cases.
  • Secret Mission: Build an executive-ready sensitivity table and KPI dashboard that would impress an FP&A hiring manager.

Are there any prerequisites?

No prior financial modeling experience is required. This guide walks you through every formula and concept from scratch, and all tools used are free and browser-based.

Set Up Your Workbook and Pull Historical Data

Every financial model starts with a foundation of historical data. Before you can project Netflix's future, you need to organize a workbook and fill it with real numbers from their SEC filings.

In this step, you will create a professional Google Sheets workbook, navigate SEC EDGAR to find Netflix's annual report, and enter three years of historical income statement and cash flow data.

In this step, get ready to:
  • Create a Google Sheets workbook with 6 tabs and a professional Cover page.
  • Pull 3 years of historical data from Netflix's 10-K filing on SEC EDGAR.
  • Enter income statement and cash flow data with calculated margins.
Create your Google Sheets workbook

Your workbook is the container for the entire model. A clean tab structure makes it easy to navigate and shows anyone reviewing your work that you follow professional standards.

  • Open Google Sheets by navigating to sheets.google.com in your browser.
  • Click the + button (or Blank spreadsheet) to create a new spreadsheet.
  • Click the default title ("Untitled spreadsheet") at the top left and rename it to Netflix (NFLX) 3-Statement Model.

Now you need 6 tabs in your workbook. The default first tab becomes your Cover.

  • Double-click the existing tab name at the bottom of the screen (it says Sheet1) and rename it to Cover.
  • Click the + icon at the bottom left (next to the tab) to add a new sheet.
  • Double-click the new tab name and rename it to Assumptions.
  • Repeat this process to create four more tabs named: Income Statement, Cash Flow, DCF, and Dashboard.

Why this tab structure?

Professional financial models separate data by purpose. The Assumptions tab holds all your editable inputs. The Income Statement and Cash Flow tabs hold the projected financials.

The DCF tab calculates valuation. The Dashboard presents the final outputs. This separation makes the model easy to audit and update.

Now set up the Cover tab as the model's title page.

  • Click the Cover tab to navigate to it.
  • In cell A1, type Netflix, Inc. (NFLX) and bold it using Cmd+B (macOS) or Ctrl+B (Windows).
  • In cell A2, type 3-Statement Financial Model.
  • In cell A3, type today's date.
  • In cell A4, type your name.

Finally, add a formatting legend so anyone reading the model knows your color conventions.

  • In cell A6, type Formatting Legend: and bold it.
  • In cell A7, type Blue font = Hard-coded inputs and set the font color to blue.
  • In cell A8, type Black font = Formulas.
  • In cell A9, type Green font = Links from other sheets and set the font color to green.

What is this color-coding convention?

Blue for inputs, black for formulas, and green for cross-sheet links is the universal standard in investment banking and corporate finance. It lets anyone reviewing the model instantly distinguish between assumptions they can change and calculations that update automatically.

Don't see the tab bar at the bottom?

If you cannot see the sheet tabs, check that your browser window is not zoomed in too far. Try pressing Cmd+0 (macOS) or Ctrl+0 (Windows) to reset zoom. The tab bar should appear at the very bottom of the spreadsheet area.

Help me find the sheet tabs in Google Sheets

Navigate SEC EDGAR and pull Netflix's historical financials

SEC EDGAR is the free public database where all US public companies file their financial reports. Netflix's 10-K is its annual report, containing audited financial statements with three years of comparative data.

  • Open a new browser tab and navigate to Netflix's 10-K filing list on SEC EDGAR:
https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001065280&type=10-K
  • You will see a list of Netflix's annual filings. Find the most recent 10-K with a filing date of 2026-01-23 (this covers fiscal year ended December 31, 2025).
  • Click Documents next to that filing.
  • Click the main 10-K document (the largest HTML file at the top of the document list).
  • Use your browser's find function (Cmd+F on macOS, Ctrl+F on Windows) to search for Consolidated Statements of Operations.
  • This table contains the income statement data you need for FY2023, FY2024, and FY2025.
  • Then search for Consolidated Statements of Cash Flows to find the cash flow data for the same three years.

What is a 10-K filing?

A 10-K is the comprehensive annual report that publicly traded companies must file with the SEC. It contains audited financial statements (income statement, balance sheet, cash flow statement) along with management discussion and notes.

Each 10-K includes the current year plus two prior years of comparative data, giving you three years in one document.

Keep this tab open

You will reference the 10-K multiple times throughout this project. Keep it open in a separate browser tab so you can switch back and forth as you enter data.

Enter historical data on the Income Statement and Cash Flow tabs

Now transfer the numbers from the 10-K into your model. You will structure the Income Statement tab first, then the Cash Flow tab.

  • Click the Income Statement tab in your workbook.
  • In row 1, set up column headers: A1 = blank (for labels), B1 = FY2023, C1 = FY2024, D1 = FY2025.
  • Starting in column A, enter the following row labels (one per row starting at row 2):
  • Revenue.
  • Cost of revenues.
  • Gross Profit.
  • Sales and marketing.
  • Technology and development.
  • General and administrative.
  • Operating Income.
  • Interest expense.
  • Other income.
  • Pre-tax income.
  • Income tax expense.
  • Net Income.
  • Fill in the numbers from the Consolidated Statements of Operations in the 10-K for each fiscal year. Enter values in thousands (matching the 10-K format).
  • For Gross Profit, enter a formula: =B2-B3 (Revenue minus Cost of revenues). Drag this across the three year columns.
  • Format all hard-coded input cells with blue font color to follow your color-coding convention.

How do I verify my data is correct?

Use FY2024 as your sanity check. Revenue should be approximately $39.0 billion. Operating Income should be approximately $10.4 billion. Operating Margin should be approximately 26.7%.

If your numbers are close to these, you are on the right track.

Now add a margins section below the income statement to calculate key profitability metrics.

  • Skip a row below Net Income, then add these labels starting in the next available row:
  • Gross Margin % (formula: Gross Profit / Revenue).
  • Operating Margin % (formula: Operating Income / Revenue).
  • Net Margin % (formula: Net Income / Revenue).
  • Enter the appropriate division formula for each year column. For example, if Gross Profit is in row 4 and Revenue is in row 2, your FY2023 Gross Margin formula in column B would be =B4/B2.
  • Format these cells as percentages by selecting them, clicking Format in the menu bar, selecting Number, then choosing Percent.

Now switch to the Cash Flow tab and enter the historical cash flow data.

  • Click the Cash Flow tab.
  • Set up the same column headers in row 1: FY2023, FY2024, FY2025.
  • From the Consolidated Statements of Cash Flows in the 10-K, enter the key section totals: Net cash provided by operating activities, Net cash used in investing activities, and Net cash used in financing activities.
  • Also enter the major individual line items within each section (depreciation, changes in working capital, capital expenditures, debt repayments, stock repurchases) that you will need for projections later.
  • Format all hard-coded input cells with blue font color.

How much detail should I enter?

For the cash flow tab, focus on the line items you will project forward: depreciation and amortization, changes in operating assets and liabilities (working capital), capital expenditures, debt repayments, and stock buybacks. You do not need every single line item from the filing.

As a sanity check, Netflix's FY2024 operating cash flow was approximately $7.4 billion and Free Cash Flow (operating cash flow minus CapEx) was approximately $6.9 billion.

Numbers in the 10-K look confusing?

SEC filings report numbers in thousands, so a value of 39,000,966 means $39.0 billion. Check the header of the financial statements table for the note that says "in thousands." Enter the numbers exactly as they appear and keep your units consistent across all tabs.

Help me understand the numbers in the Netflix 10-K filing

Your workbook now has a solid historical foundation. Next up, you will build the Assumptions tab with a scenario dropdown and create a driver-based revenue forecast that separates Netflix into four regions.

Build Assumptions and Revenue Forecast

Your historical data is locked in. Now you need the engine that drives the entire model forward: your assumptions.

In this step, you will build a scenario-driven Assumptions tab with a dropdown that toggles between Base, Bull, and Bear cases. You will also create a driver-based revenue forecast that projects Netflix's revenue using regional subscriber counts multiplied by ARPU (Average Revenue Per User) instead of a flat growth percentage.

In this step, get ready to:
  • Create a scenario dropdown that toggles between Base, Bull, and Bear cases.
  • Build a driver-based revenue forecast using regional subscriber counts and ARPU.
  • Define assumptions for all three scenarios with professional formatting.
Create the scenario selector and assumptions structure

A professional financial model lets you test multiple futures without rebuilding the model. A single dropdown cell will control which set of assumptions flows through every formula.

  • Switch to your Assumptions tab in your Google Sheets workbook.
  • Click on cell B1 and type Base as the default value.
  • With B1 still selected, click Data in the top menu bar.
  • Click Data validation.
  • In the Criteria section, select Dropdown and enter three options: Base, Bull, Bear.
  • Click Done to save the validation rule.

Cell B1 now shows a dropdown arrow. Clicking it lets you toggle between the three scenarios.

What is Data Validation?

Data Validation restricts what values a cell can accept. In this case, you are limiting cell B1 to only three options. This prevents typos from breaking your VLOOKUP formulas later.

Now you need to build three columns of assumptions, one for each scenario. Set up the structure below your dropdown.

  • In cell A1, type Scenario: as the label for the dropdown.
  • Starting in row 3, set up your assumption labels in column A. Enter these row headers:
Row 3:  Scenario Label
Row 4:  (blank separator)
Row 5:  SUBSCRIBER GROWTH RATES
Row 6:  UCAN subscriber growth %
Row 7:  EMEA subscriber growth %
Row 8:  LATAM subscriber growth %
Row 9:  APAC subscriber growth %
Row 10: (blank separator)
Row 11: ARPU GROWTH RATES
Row 12: UCAN ARPU growth %
Row 13: EMEA ARPU growth %
Row 14: LATAM ARPU growth %
Row 15: APAC ARPU growth %
Row 16: (blank separator)
Row 17: COST & MARGIN ASSUMPTIONS
Row 18: Cost of revenue % of revenue
Row 19: Sales & marketing growth %
Row 20: Technology & development growth %
Row 21: General & administrative growth %
Row 22: (blank separator)
Row 23: OTHER ASSUMPTIONS
Row 24: Effective tax rate %
Row 25: CapEx as % of revenue

What does this structure do?

Column A holds the row labels (what each assumption is). Columns B, C, and D will hold the actual values for Base, Bull, and Bear respectively. This layout lets a single VLOOKUP pull the correct column based on your dropdown selection.

  • In row 3, enter the scenario labels across columns B, C, and D: Base in B3, Bull in C3, Bear in D3.
  • Now create a dynamic lookup row. In cell F1, type the label Active Column: and in G1, enter the following formula:
=MATCH(B1, B3:D3, 0)

What does this formula do?

MATCH looks up the value in B1 (e.g., "Base") within the row B3:D3 and returns its position number (1, 2, or 3). You will use this number with INDEX later to pull the correct column of assumptions into your projections.

  • Test the lookup by changing the dropdown in B1 to Bull. Cell G1 should show 2. Switch it to Bear and it should show 3.
  • Set the dropdown back to Base before moving on.

Now enter the historical seed data that your revenue forecast will project forward from. This comes from Netflix's FY2024 year-end subscriber counts and Q4 2024 ARPU figures.

  • Below your assumptions section (around row 28), add a section header: HISTORICAL SEED DATA (FY2024 END).
  • Enter the FY2024 ending subscriber counts (in thousands):
UCAN:   89,625
EMEA:  101,133
LATAM:  53,327
APAC:   57,541
Total: 301,626
  • Below the subscriber data, enter the Q4 2024 monthly ARPU by region:
UCAN:  $17.26/month
EMEA:  $11.11/month
LATAM:  $8.00/month
APAC:   $7.34/month

Where does this data come from?

The subscriber counts come from Netflix's FY2024 10-K filing (Note 12, Revenue Recognition Tables). The ARPU figures come from Netflix's Q4 2024 earnings release.

Netflix stopped reporting quarterly subscriber counts and ARM (Average Revenue per Membership) starting Q1 2025. Your model uses the last available data point as its jumping-off point for projections.

Dropdown not showing options?

Make sure you selected Dropdown (not "Dropdown from a range") in the Data Validation criteria. Each option should be on its own line in the options list.

If your MATCH formula shows an error, confirm that the text in B1 exactly matches one of the values in B3:D3. Even an extra space will break it.

Help me troubleshoot my Data Validation dropdown or MATCH formula in Google Sheets.

Build the driver-based revenue forecast

A flat growth rate applied to total revenue is how beginners forecast. Professionals break revenue into its components: how many customers (subscribers) you have, and how much each one pays (ARPU).

Why driver-based forecasting?

Saying "revenue grows 10%" is a guess. Saying "subscribers grow 8% in UCAN and ARPU grows 4% due to a planned price increase" is an argument. Driver-based models let you justify every assumption with a real-world thesis.

This is what separates a portfolio-ready model from a basic one in interviews.

  • On the Assumptions tab, create a new section below your seed data (around row 36). Add a header: REVENUE FORECAST.
  • Set up columns for 2025E, 2026E, and 2027E (the "E" stands for Estimated).
  • For each region (UCAN, EMEA, LATAM, APAC), create the following row structure:
--- UCAN ---
Beginning Subscribers (thousands)
Net Additions (thousands)
Ending Subscribers (thousands)
Average Subscribers (thousands)
ARPU ($/month)
Regional Revenue ($thousands)

--- EMEA ---
(same structure)

--- LATAM ---
(same structure)

--- APAC ---
(same structure)

--- TOTAL ---
Total Projected Revenue ($thousands)

What does each line represent?

  • Beginning Subscribers = prior year's ending subscribers (2025E begins with FY2024 actuals).
  • Net Additions = Beginning Subscribers multiplied by the subscriber growth rate from your assumptions.
  • Ending Subscribers = Beginning + Net Additions.
  • Average Subscribers = (Beginning + Ending) / 2. Revenue accrues over the full year, so you use the midpoint.
  • ARPU = prior year ARPU multiplied by (1 + ARPU growth rate). For 2025E, start with the Q4 2024 figure.
  • Regional Revenue = Average Subscribers x ARPU x 12 months.
  • Enter the formulas for the UCAN region first. Use the 2025E column as your template:
Beginning Subscribers (2025E) = 89,625  (hard-coded from FY2024 seed data)
Net Additions (2025E)         = Beginning Subscribers * INDEX(B6:D6, $G$1)
Ending Subscribers (2025E)    = Beginning Subscribers + Net Additions
Average Subscribers (2025E)   = (Beginning + Ending) / 2
ARPU (2025E)                  = 17.26 * (1 + INDEX(B12:D12, $G$1))
Regional Revenue (2025E)      = Average Subscribers * ARPU * 12

How does INDEX with $G$1 work?

The formula INDEX(B6:D6, $G$1) looks at the row containing UCAN subscriber growth rates across all three scenario columns (B6, C6, D6). It uses the number in G1 (which MATCH computed from your dropdown) to pick the correct one. If the dropdown says "Base", G1 = 1, so it grabs B6.

The dollar signs on $G$1 lock the reference so it does not shift when you copy formulas across columns or rows.

  • For the 2026E column, change the Beginning Subscribers formula to reference the 2025E Ending Subscribers cell. Change the ARPU formula to reference the 2025E ARPU cell instead of the hard-coded 17.26.
  • Repeat the same pattern for 2027E (referencing 2026E values).
  • Copy the entire UCAN formula structure for EMEA, LATAM, and APAC. Update the seed data references for each region:
EMEA: Beginning Subscribers (2025E) = 101,133  |  Starting ARPU = $11.11
LATAM: Beginning Subscribers (2025E) = 53,327  |  Starting ARPU = $8.00
APAC: Beginning Subscribers (2025E) = 57,541   |  Starting ARPU = $7.34

Update the INDEX row references

When you copy the UCAN formulas for other regions, make sure the INDEX references point to the correct assumption rows. EMEA subscriber growth is row 7 (not row 6), EMEA ARPU growth is row 13 (not row 12), and so on.

  • At the bottom of the revenue forecast section, add a Total Projected Revenue row that sums all four regional revenues for each year:
Total Revenue (2025E) = UCAN Revenue + EMEA Revenue + LATAM Revenue + APAC Revenue
Total Revenue (2026E) = UCAN Revenue + EMEA Revenue + LATAM Revenue + APAC Revenue
Total Revenue (2027E) = UCAN Revenue + EMEA Revenue + LATAM Revenue + APAC Revenue

What should my total revenue look like?

For a sanity check on the Base case: Netflix's 2025 guidance targets 12-14% revenue growth from FY2024's $39.0 billion. Your Base case 2025E total revenue should land roughly in the $43-45 billion range. If it is wildly different, double-check your growth rate assumptions and ARPU calculations.

Revenue numbers look wrong?

The most common mistake is forgetting the x 12 in the Regional Revenue formula. ARPU is monthly, but revenue is annual. Without multiplying by 12, your revenue will be 1/12th of what it should be.

Also check your units. Subscribers are in thousands, so if your ARPU is in dollars per subscriber, your result will be in thousands of dollars. Keep units consistent across the model.

Help me debug my revenue forecast formula in Google Sheets. My numbers don't match expected values.

Define Base, Bull, and Bear scenario assumptions

Your model structure is ready. Now you need to fill in the actual assumption values for all three scenarios. The Base case should reflect Netflix's own forward guidance as an anchor.

  • Return to the assumption rows (rows 6-25) and enter the Base case values in column B:
SUBSCRIBER GROWTH RATES (Base)
UCAN:   8%
EMEA:   9%
LATAM: 10%
APAC:  10%

ARPU GROWTH RATES (Base)
UCAN:  4%
EMEA:  4%
LATAM: 3%
APAC:  5%

COST & MARGIN ASSUMPTIONS (Base)
Cost of revenue % of revenue:     53%
Sales & marketing growth %:         8%
Technology & development growth %:  8%
General & administrative growth %:  5%

OTHER ASSUMPTIONS (Base)
Effective tax rate %:  16%
CapEx as % of revenue:  3%

Why these Base case values?

Netflix guided to 12-14% revenue growth and a 29% operating margin for 2025. The subscriber and ARPU growth rates above are calibrated to produce approximately 12-14% total revenue growth when combined. The cost-of-revenue percentage reflects Netflix's FY2024 actual ratio of roughly 54%, trending slightly down.

The effective tax rate of 16% reflects Netflix's recent historical rate. CapEx at 3% is consistent with Netflix being a content company (low physical capital needs).

  • Enter the Bull case values in column C:
SUBSCRIBER GROWTH RATES (Bull)
UCAN:  12%
EMEA:  13%
LATAM: 14%
APAC:  14%

ARPU GROWTH RATES (Bull)
UCAN:  6%
EMEA:  6%
LATAM: 5%
APAC:  7%

COST & MARGIN ASSUMPTIONS (Bull)
Cost of revenue % of revenue:     50%
Sales & marketing growth %:         6%
Technology & development growth %:  6%
General & administrative growth %:  4%

OTHER ASSUMPTIONS (Bull)
Effective tax rate %:  15%
CapEx as % of revenue:  3%
  • Enter the Bear case values in column D:
SUBSCRIBER GROWTH RATES (Bear)
UCAN:  4%
EMEA:  5%
LATAM: 6%
APAC:  6%

ARPU GROWTH RATES (Bear)
UCAN:  1%
EMEA:  1%
LATAM: 0%
APAC:  2%

COST & MARGIN ASSUMPTIONS (Bear)
Cost of revenue % of revenue:     56%
Sales & marketing growth %:        12%
Technology & development growth %: 12%
General & administrative growth %:  8%

OTHER ASSUMPTIONS (Bear)
Effective tax rate %:  17%
CapEx as % of revenue:  4%

What story does each scenario tell?

The Bull case assumes continued momentum: 12-14% subscriber growth, 5-7% ARPU growth from price increases, and operating margins expanding to 32-34% through operating leverage.

The Bear case assumes market saturation: 4-6% subscriber growth, 0-2% ARPU growth from competitive pressure, and operating margin flat at 27-28% as Netflix invests more in content to retain subscribers.

  • Select all hard-coded input cells in columns B, C, and D (the numbers you just typed).
  • Change the font color to blue. Click Format in the top menu, then Text color, and select a blue shade.
  • Also apply blue font to the seed data values (subscriber counts and ARPU figures you entered earlier).

Why blue font for inputs?

Blue font signals that a cell contains a hard-coded input (a value you typed, not a formula). This is a universal financial modeling convention. It lets anyone reading the model instantly identify which cells they can change to test different assumptions.

  • Toggle the dropdown in B1 between Base, Bull, and Bear. Watch the revenue forecast totals change each time.

You should see your 2025E revenue shift noticeably between each scenario. The Bull case should produce the highest revenue and the Bear case the lowest.

✔️ Revenue changes when I toggle the dropdown

Your Assumptions tab is fully wired. The dropdown controls which scenario feeds into every formula in the model. Set it back to Base before moving on.

ⓧ Revenue stays the same or shows errors

Check these common issues:

  • Verify that G1 shows 1, 2, or 3 when you change the dropdown. If it shows an error, your MATCH formula range does not include the scenario labels.
  • Check that your INDEX formulas in the revenue section reference $G$1 (with dollar signs). Without the dollar signs, copying the formula changes the reference.
  • Confirm that the INDEX ranges (e.g., B6:D6) span exactly three cells covering Base, Bull, and Bear columns.

Your assumptions engine is complete. Every number in the model will flow from this single dropdown. Next up, you will use these assumptions to project Netflix's full income statement for 2025E through 2027E.

Project the Income Statement

Your Assumptions tab is now driving a full revenue forecast with subscriber counts and ARPU by region. The next challenge is turning that revenue into a complete projected income statement.

In this step, you will extend the Income Statement tab from historical data into three years of forward-looking projections. Every projected line item will link back to your Assumptions tab so the scenario dropdown cascades through to Net Income.

In this step, get ready to:
  • Link revenue and project cost of revenues and gross profit for 2025E-2027E.
  • Calculate operating income, interest expense, income tax, and net income.
  • Add a margins section with a sanity-check row that flags unlikely assumptions.
Link revenue and project costs

Your income statement already has FY2023-FY2025 historical data in columns. Now you will add three new columns to the right for 2025E, 2026E, and 2027E.

  • Switch to your Income Statement tab.
  • Add three new column headers to the right of your last historical year: 2025E, 2026E, and 2027E.
  • In the Revenue row under 2025E, enter a formula that links to the total revenue on your Assumptions tab. For example:
='Assumptions'!E30

Why link instead of typing the number?

By referencing the Assumptions tab directly, any change to the scenario dropdown in cell B1 automatically flows into this income statement. This is the foundation of a dynamic model.

  • Repeat the revenue link formula for 2026E and 2027E, pointing to the corresponding total revenue cells on your Assumptions tab.
  • In the Cost of Revenues row for 2025E, enter a formula that multiplies your linked Revenue by the cost-of-revenue-as-%-of-revenue assumption from your Assumptions tab. For example:
=Revenue_2025E * 'Assumptions'!E10
  • Copy the cost of revenues formula across 2026E and 2027E, adjusting the cell references.
  • In the Gross Profit row for each projection year, enter:
= Revenue - Cost of Revenues
  • Project Sales and Marketing expense using either a percentage-of-revenue assumption or a growth-rate assumption from your Assumptions tab. Link the formula to the appropriate cell.
  • Do the same for Technology and Development.
  • Do the same for General and Administrative.

What do these formulas accomplish?

Each operating expense line is driven by an assumption cell on the Assumptions tab. If you chose percentage-of-revenue, your formula multiplies Revenue by that percentage.

If you chose a growth-rate approach, your formula takes last year's expense and multiplies by (1 + growth rate). Either method works as long as it references the Assumptions tab so the scenario dropdown controls the output.

  • Verify your work by toggling the dropdown in B1 on the Assumptions tab from Base to Bull.
  • Switch back to the Income Statement tab and confirm that Revenue and Cost of Revenues values changed.

Your Gross Profit and operating expense rows should now show formula-driven values for all three projection years.

Revenue not updating when you change the dropdown?

Make sure your Revenue cell formula points to the Assumptions tab total revenue row, not a hard-coded number. Double-click the cell to check the formula references.

If you see a #REF! error, confirm that the sheet name in your formula matches the exact tab name (including capitalization and spaces).

help me debug why my income statement formulas are not linking to the Assumptions tab

Complete the statement through net income

With gross profit and operating expenses in place, you can now build the bottom half of the income statement. Each row here follows a simple arithmetic pattern.

  • In the Operating Income row for each projection year, enter:
= Gross Profit - (Sales & Marketing + Technology & Development + General & Administrative)
  • In the Interest Expense row, enter the same value as your most recent historical year (FY2025) for all three projection columns.

Why hold interest expense flat?

Netflix's debt is largely fixed-rate, meaning interest payments stay consistent year to year unless new debt is issued. Holding it flat is a reasonable simplification for this model.

  • In the Other Income row, hold the most recent year's figure flat across all projection years (same logic as interest expense).
  • In the Pre-Tax Income row for each projection year, enter:
= Operating Income - Interest Expense + Other Income
  • In the Income Tax row, link to the effective tax rate assumption on your Assumptions tab and multiply it by Pre-Tax Income:
= Pre-Tax Income * 'Assumptions'!E15
  • In the Net Income row for each projection year, enter:
= Pre-Tax Income - Income Tax
  • Toggle the scenario dropdown on the Assumptions tab through Base, Bull, and Bear.
  • Confirm that Net Income changes for each scenario.

Every line from Revenue through Net Income should now be dynamic and formula-driven.

What does the complete flow look like?

Revenue flows from the Assumptions tab subscriber forecast. Cost of Revenues is a percentage of revenue.

Operating expenses use either percentage-of-revenue or growth-rate assumptions. The tax rate is applied to pre-tax income, and every formula chain ultimately traces back to the dropdown in cell B1.

Seeing unexpected negative values?

Check that your Operating Income formula subtracts expenses from Gross Profit, not the other way around. Also confirm that Interest Expense is subtracted (not added) when calculating Pre-Tax Income.

help me figure out why my income statement shows negative values that don't make sense

Add margins and a sanity-check row

Margins translate raw dollar figures into percentages that are easy to compare across years. They also help you spot unreasonable assumptions before building the rest of the model.

  • Below your Net Income row, add a blank row and then a section header labeled Margins.
  • In the Gross Margin % row for each year (historical and projected), enter:
= Gross Profit / Revenue
  • In the Operating Margin % row, enter:
= Operating Income / Revenue
  • In the Net Margin % row, enter:
= Net Income / Revenue
  • In the YoY Revenue Growth % row, enter a formula comparing each year's revenue to the prior year:
= (Current Year Revenue - Prior Year Revenue) / Prior Year Revenue
  • Format all margin cells as percentages with one decimal place.
  • Select the percentage cells, click Format, then Number, then Percent.

What should these margins look like?

For the Base case, your 2025E operating margin should land around 29%. Netflix guided to a 29% operating margin target for 2025.

If your number is wildly different, one of your expense assumptions is likely off. Compare your projected cost-of-revenue percentage to the FY2024 historical value (approximately 54%) as a reasonableness check.

  • Now add a sanity-check row below the margins. Label it Check: Op Margin in range?.
  • In the 2025E column of this check row, enter a formula that tests whether your Base case operating margin falls between 28% and 31%:
=IF(AND(Operating_Margin_2025E >= 0.28, Operating_Margin_2025E <= 0.31), "OK", "REVIEW ASSUMPTIONS")
  • Optionally, add conditional formatting to highlight this cell. Select the check cell, click Format, then Conditional formatting.
  • Under Format cells if, choose Text is exactly and enter REVIEW ASSUMPTIONS.
  • Set the formatting to a red background, then click Done.

Why 28-31%?

Netflix's Q4 2024 earnings letter guided to a 29% operating margin for 2025. The 28-31% range gives you a small buffer for rounding in your formula chain while still flagging anything far from guidance.

  • Set the dropdown on the Assumptions tab back to Base.
  • Confirm your 2025E operating margin is approximately 29% and the check row displays OK.

Your income statement now projects revenue through net income for three years, with built-in guardrails that flag unreasonable results.

Check row says REVIEW ASSUMPTIONS?

Your operating expenses might be too high or too low relative to revenue. Compare your projected cost-of-revenue % to the FY2024 historical figure of approximately 54%.

Also check that your Sales and Marketing, Technology and Development, and General and Administrative assumptions sum to roughly 19-20% of revenue for the Base case. These three totaled approximately $7.5 billion against $39.0 billion revenue in FY2024.

help me figure out why my Base case operating margin is outside the 28-31% range

Your income statement is fully projected and scenario-driven. Next up, you will build the cash flow statement and a DCF valuation to translate these earnings into an implied share price.

Build the Cash Flow Statement and DCF Valuation

Your income statement now projects Netflix's profitability three years into the future. The next question an analyst asks is: how much actual cash does the business generate?

In this step, you'll project the cash flow statement using the indirect method and then build a DCF valuation to arrive at an implied share price for Netflix.

In this step, get ready to:
  • Project the cash flow statement for 2025E-2027E using the indirect method.
  • Build a DCF valuation with terminal value to calculate an implied share price.
  • Link the DCF to your scenario dropdown so all three valuations update dynamically.
Project the cash flow statement using the indirect method

The indirect method starts with Net Income and adjusts for non-cash items and changes in working capital to arrive at actual cash generated. This is the standard format used in SEC filings and professional models.

  • Switch to your Cash Flow tab.
  • Add three new columns to the right of your historical data: 2025E, 2026E, and 2027E.
  • In the first row of your projections, link Net Income from the Income Statement tab for each projected year.

Use green font for these cross-sheet links to follow the color-coding convention you established on the Cover tab.

  • Add a row for Depreciation & Amortization (D&A) as an add-back. Estimate this as a percentage of revenue based on your historical trend. Look at what D&A was as a % of revenue in FY2023-FY2025, then apply that average percentage to your projected revenue for each year.
  • Add a row for Changes in Working Capital. For Netflix, working capital changes are relatively minor compared to revenue. Calculate what working capital change was as a percentage of revenue change historically, then apply that pattern to your projected revenue growth.
  • Calculate Cash from Operations = Net Income + D&A + Working Capital Changes.

What is the indirect method?

The indirect method reconciles Net Income (an accrual accounting figure) back to actual cash. It adds back non-cash expenses like D&A and adjusts for timing differences in working capital.

Netflix reported $7.4 billion in net cash from operating activities in FY2024. Your projected figures should be in a similar range for 2025E if your model is tracking correctly.

  • Add a row for Capital Expenditures (CapEx) under a Cash from Investing section. Link this to your CapEx-as-%-of-revenue assumption on the Assumptions tab. The formula is: Projected Revenue x CapEx % assumption.
  • Add a Cash from Financing section. Hold debt repayments and stock buybacks at recent historical levels. Netflix spent approximately $6.2 billion on stock repurchases in FY2024, so use that as your baseline.
  • Calculate Free Cash Flow = Cash from Operations - CapEx.

Why Free Cash Flow matters for valuation

Free Cash Flow represents the cash available to all capital providers (debt and equity holders) after the company has reinvested in itself. This is the figure you'll discount in the DCF to arrive at what the company is worth today.

Netflix generated $6.9 billion in Free Cash Flow in FY2024. Your 2025E figure should be in a reasonable range relative to this, depending on which scenario is selected.

Verify that changing the scenario dropdown on your Assumptions tab changes the CapEx line on the Cash Flow tab. The Cash from Operations and Free Cash Flow figures should shift accordingly.

Cash from Operations looks too high or too low?

Check that your D&A add-back is positive (it increases cash flow) and your working capital change uses the correct sign. A negative working capital change reduces cash. Also confirm your Net Income link is pulling from the correct cell on the Income Statement tab.

As a sanity check, your Base case Cash from Operations for 2025E should be in the $8-10 billion range given Netflix's recent trajectory.

Help me debug my cash flow projections.

Build a DCF valuation on the DCF tab

A DCF answers the question: what are all of Netflix's future cash flows worth in today's dollars? You'll discount projected Free Cash Flow back to the present and add a terminal value to capture all cash flows beyond your projection period.

  • Switch to your DCF tab.
  • Create a row for Free Cash Flow with columns for 2025E, 2026E, and 2027E. Link each cell to the corresponding Free Cash Flow row on your Cash Flow tab (green font for cross-sheet links).
  • Add an input cell for WACC (Weighted Average Cost of Capital). Enter a value between 9% and 10%. This is your discount rate. Format this cell in blue font since it is a hard-coded input.
  • Add an input cell for Terminal Growth Rate. Enter a value between 3% and 4%. This represents the rate at which Netflix's cash flows grow forever after your projection period. Format in blue font.

What is WACC?

WACC is the blended cost of a company's debt and equity financing. It represents the minimum return the company must earn to satisfy its investors. A 9-10% WACC is reasonable for a large-cap tech and media company like Netflix.

  • Calculate the Terminal Value using the perpetuity growth method. Enter this formula:
Terminal Value = Final Year FCF x (1 + Terminal Growth Rate) / (WACC - Terminal Growth Rate)

What does this formula do?

This is the Gordon Growth Model. It calculates the value of all cash flows from 2028 onward as a single number. The formula assumes cash flows grow at a constant rate (your terminal growth rate) forever.

The terminal value typically represents 70-80% of total enterprise value in a DCF. This is normal and expected.

  • Create a Present Value row. Discount each year's FCF and the terminal value back to today using this formula:
PV of FCF = FCF / (1 + WACC) ^ Year Number
PV of Terminal Value = Terminal Value / (1 + WACC) ^ 3

How does discounting work?

Year Number is 1 for 2025E, 2 for 2026E, and 3 for 2027E. The terminal value is also discounted 3 years because it sits at the end of your projection period. Dividing by (1 + WACC)^n converts future dollars into what they are worth today.

  • Calculate Enterprise Value = Sum of all Present Values (PV of 2025E FCF + PV of 2026E FCF + PV of 2027E FCF + PV of Terminal Value).
  • Subtract Net Debt to arrive at Equity Value. Net Debt = Total Debt - Cash. Netflix had $15.7 billion in total debt and $9.6 billion in cash at the end of FY2024, giving net debt of approximately $6.1 billion. Enter these as blue-font inputs.
  • Divide Equity Value by Shares Outstanding to get your Implied Share Price. Netflix had approximately 428 million shares outstanding as of December 2024. Enter this as a blue-font input.

What is the bridge from Enterprise Value to share price?

Enterprise Value represents the total value of the business to all capital providers (both debt holders and equity holders). Subtracting net debt isolates the portion that belongs to shareholders alone.

Dividing by share count converts that into a per-share figure you can compare to the stock's market price.

Getting a negative or wildly unrealistic share price?

Make sure your WACC is greater than your terminal growth rate. If they are equal or the growth rate is higher, the terminal value formula divides by zero or goes negative.

Also confirm your shares outstanding figure is in millions (428) and your Equity Value is in millions of dollars. Mismatched units are the most common cause of an absurd share price.

Help me troubleshoot my DCF implied share price.

Link scenarios and display all three valuations

Your DCF already updates when the scenario dropdown changes because it pulls Free Cash Flow from the Cash Flow tab, which pulls from the Income Statement, which pulls from the Assumptions tab. Now you'll make it easy to compare all three scenarios at a glance.

  • Test the linkage by switching to the Assumptions tab and changing the dropdown in cell B1 from Base to Bull, then to Bear. Switch back to the DCF tab each time and confirm the Implied Share Price changes.
  • Below your main DCF calculation, add a Scenario Comparison section with three columns: Base, Bull, and Bear.
  • For each scenario column, display the implied share price, the enterprise value, and the key driving assumptions (revenue growth, operating margin, FCF margin).
  • To populate the side-by-side view, manually toggle the dropdown to each scenario and record the output values. Alternatively, use VLOOKUP or INDEX/MATCH formulas that reference each scenario's assumptions directly to calculate all three simultaneously without toggling.
  • Format the Implied Share Price cell prominently. Use a larger font size, bold formatting, and a border or highlight so it stands out as the key output of your entire model.

Make the comparison automatic

If you want the side-by-side comparison to update automatically without manual toggling, you can build three parallel mini-DCF calculations that each reference a specific scenario's assumptions column directly. This takes more formulas but creates a truly dynamic dashboard.

  • Add a row showing the currently selected scenario at the top of the DCF tab. Link this to cell B1 on the Assumptions tab so anyone viewing the DCF tab knows which scenario is active.

Your DCF tab should now clearly show the implied share price for the active scenario and a comparison section showing all three scenarios.

Dropdown change not updating the DCF?

Trace the link chain: Assumptions dropdown changes assumption values, which flow to the Income Statement revenue and expense formulas, which flow to Net Income on the Cash Flow tab, which flows to Free Cash Flow, which flows to the DCF. If any link in this chain references a hard-coded value instead of a formula, the cascade breaks at that point.

Help me fix my scenario dropdown linkage in the DCF.

You now have a complete, linked financial model that goes from assumptions to a share price. In the final step, you'll build a sensitivity table and KPI dashboard that transforms this model into an executive-ready deliverable.

Build the Sensitivity Table and KPI Dashboard

Your model now has a full DCF valuation that responds to scenario changes. The analytical engine is complete.

What separates a great model from a good one is how clearly it communicates results. In this step, you will build the executive-ready outputs that make your model presentable in an interview or a boardroom: a sensitivity table, a KPI dashboard, and a model summary.

In this step, get ready to:
  • Build a sensitivity table showing how valuation changes across 25 assumption combinations.
  • Create a KPI dashboard with key performance metrics for each projected year.
  • Add a model summary section with professional formatting.
Create the sensitivity table

A sensitivity table shows how your output (implied share price) changes when you vary two key inputs simultaneously. It is one of the most powerful tools in financial modeling because it reveals which assumptions matter most.

What is a sensitivity table?

Think of it as a grid of "what if" scenarios. Each cell in the grid answers the question: "If subscriber growth were X% and operating margin were Y%, what would Netflix be worth?" Interviewers love these because they show you understand that valuation is a range, not a single number.

  • Switch to your Dashboard tab.
  • In cell A5, type Sensitivity Table: Implied Share Price and bold it.
  • Starting in cell C6, enter five subscriber growth rates across the columns: 4%, 6%, 8%, 10%, 12%.
  • In cell B6, type the column header Sub Growth →.
  • Starting in cell B7, enter five operating margin assumptions down the rows: 25%, 27%, 29%, 31%, 33%.
  • In cell A7, type the row header Op Margin ↓.

Now you need to populate each cell in the 5x5 grid with a formula that calculates the implied share price for that specific combination of growth and margin.

Why not just use a Data Table like Excel?

Google Sheets does not have Excel's built-in Data Table feature (What-If Analysis). Instead, you will use direct formula references that recalculate based on the row and column inputs.

The simplest approach is to build a mini DCF formula in each cell that substitutes the column's growth rate and row's margin into a simplified valuation calculation. Alternatively, you can create helper rows on the DCF tab that accept variable inputs and reference those from the sensitivity grid.

  • For each cell in the 5x5 grid (starting at C7), build a formula that:
  • Use absolute references ($ signs) for the row and column headers so you can copy the formula across the entire grid.
  • Start with cell C7 and confirm the output looks reasonable before copying to all 25 cells.

Here is an example formula structure for cell C7 that you can adapt to your specific cell references:

# Simplified sensitivity formula structure (adapt cell references to your layout)
# Revenue projection: Base Revenue * (1 + column growth rate) ^ 3
# FCF estimate: Projected Revenue * row margin * FCF-to-OpIncome ratio
# Valuation: (FCF * (1 + terminal growth) / (WACC - terminal growth) + sum of interim FCFs) / shares

# Example for C7 (referencing C6 for growth, B7 for margin):
= ( ('Income Statement'!B2 * (1+C$6)^3) * $B7 * 0.7 * (1+0.035) / (0.095-0.035) ) / 428

What does this formula do?

This is a condensed DCF in a single cell. It projects revenue forward using the column's growth rate, applies the row's margin to estimate operating income, converts to FCF (the 0.7 is a proxy for the FCF conversion ratio), calculates a terminal value, and divides by shares outstanding.

The exact cell references and ratios will differ based on your layout. The key is that C$6 locks the growth rate to row 6 (so it stays correct when copying down) and $B7 locks the margin to column B (so it stays correct when copying across).

  • Once cell C7 shows a reasonable implied share price, copy the formula to fill the entire grid from C7 through G11.
  • Format the grid values as currency with no decimal places (e.g., $850).
  • Add subtle borders around the grid cells to create a clear matrix appearance.
  • Verify that the implied share price increases as you move right (higher growth) and down (higher margin). If it does not, check your absolute references.

Highlight the base case cell

Find the cell in your grid that most closely matches your Base case assumptions (approximately 8% growth and 29% margin). Add a light yellow background to it so a reader can instantly see where the base case sits relative to the range.

All cells showing the same value?

This usually means your formula is not referencing the column header or row header correctly. Check that you used C$6 (dollar sign on the row number only) for the growth rate and $B7 (dollar sign on the column letter only) for the margin.

help me fix my sensitivity table formula references

Build the KPI dashboard section

Below your sensitivity table, you will build a clean KPI section that shows the metrics an executive or interviewer would scan first. These metrics tell the story of Netflix's projected financial health at a glance.

  • Leave two blank rows below your sensitivity table for spacing.
  • In the next available row, type KPI Dashboard and bold it.
  • Create column headers for: Metric, 2025E, 2026E, 2027E.
  • In the Metric column, enter these six row labels:

Now link each metric to the appropriate source in your model.

  • For Revenue Growth %, link to the year-over-year growth row in your Income Statement margins section.
  • For Operating Margin % and Net Margin %, link to the corresponding margin rows on your Income Statement tab.
  • For Free Cash Flow Margin %, calculate FCF divided by Revenue using values from your Cash Flow and Income Statement tabs.
  • For Subscriber Growth %, calculate the year-over-year percentage change in total ending subscribers from your Assumptions tab.
  • For ARPU Growth %, calculate the blended global average ARPU growth by dividing total revenue by total average subscribers, then comparing year-over-year.

What is blended global average ARPU?

Rather than showing ARPU growth for each region separately, the blended figure divides total revenue by total average subscribers across all regions. This gives a single growth figure that captures both pricing changes and geographic mix shifts (if more subscribers come from lower-ARPU regions, the blended ARPU could decline even if regional prices go up).

  • Format all percentage cells to 1 decimal place (e.g., 29.1%).
  • Add borders below the header row and around the entire KPI section.
  • Bold the column headers (Metric, 2025E, 2026E, 2027E).
  • Toggle the Assumptions dropdown between Base, Bull, and Bear to confirm all six metrics update automatically.

KPI values not updating with the dropdown?

Make sure your KPI formulas link to cells on the Income Statement or Cash Flow tabs that are already driven by the Assumptions dropdown. If you hard-coded any values instead of linking to formula cells, those will not respond to scenario changes.

help me trace why my KPI dashboard is not updating

Add the model summary and apply professional formatting

The model summary sits at the very top of the Dashboard tab. This is the first thing someone reads when they open your model. It answers the most important question immediately: "What is this company worth under the current scenario?"

  • Go to cell A1 on the Dashboard tab.
  • Type Model Summary and bold it.
  • In the row below, create labels and linked values for:

Why these three assumptions in the summary?

Revenue growth, operating margin, and FCF margin are the three numbers that most directly drive your DCF valuation. An executive reading this summary can immediately see what is assumed and how it translates to the bottom-line share price. If any of the three looks aggressive, they know to dig into the full assumptions.

Now apply professional formatting across the entire Dashboard tab.

  • Set all columns to a consistent width. Select columns A through G, right-click the column header, and choose Resize columns.
  • Align all numbers to the right and all text labels to the left.
  • Bold all section headers (Model Summary, Sensitivity Table, KPI Dashboard).
  • Add a thin border between sections to separate them visually.
  • Ensure the color coding convention is followed: values linked from other sheets should be in green font, hard-coded inputs in blue, formulas in black.
  • Freeze row 1 so the Model Summary header stays visible when scrolling. Click View > Freeze > 1 row.
  • Toggle the Assumptions dropdown through all three scenarios one final time.
  • Confirm that the Model Summary values, KPI metrics, and (if applicable) any linked sensitivity values all update correctly.

Quick formatting cleanup for the whole workbook

Before calling the model complete, scan your other tabs (Income Statement, Cash Flow, DCF) for consistent formatting. Make sure all dollar figures show whole numbers in millions, all percentages show 1 decimal place, and all input cells are in blue font. A consistent look across every tab signals professionalism.

Model summary showing a REF error?

This means one of your cross-sheet links is pointing to a cell that has been moved or deleted. Click on the error cell and check the formula bar. Make sure the sheet name in the reference (e.g., 'DCF'!B15) matches the actual tab name exactly, including capitalization and spacing.

help me fix REF errors in my Dashboard formulas

Secret mission

Build a Dashboard That Would Impress an FP&A Hiring Manager

Your model works. The numbers are linked. The scenarios toggle correctly. But right now, your Dashboard tab looks like every other analyst's output. In this secret mission, you'll transform it into something that makes a hiring manager pause and say 'this person thinks like an FP&A leader, not just a spreadsheet jockey.'

Clean Up Your Resources

Clean Up Your Resources

This project runs entirely in Google Sheets and uses free SEC EDGAR data. There are no ongoing costs or paid resources to worry about.

Your Google Sheets workbook is saved to your Google Drive automatically. Decide whether to keep it as a portfolio piece, or delete it if you no longer need it.

Resources you used:

  • Google Sheets workbook (Netflix 3-statement financial model, stored in Google Drive).

Keep everything running

No action needed. Choose this if you want to keep refining your model or use it as a portfolio piece for job applications.

  • Your workbook stays in Google Drive and is accessible from any browser.
  • You can share it with hiring managers or interviewers by clicking Share in the top right corner of Google Sheets.
  • Google Sheets auto-saves all changes. No manual backup is needed.

Pause - I'll come back to this later

Since Google Sheets is cloud-based and free, there is nothing to pause. Your workbook remains in Google Drive at no cost until you decide to return to it.

  • No processes to stop or resources to suspend.
  • Your workbook will be exactly where you left it when you come back.

Delete - I don't want to use this again

Remove the workbook from your Google Drive entirely.

  • Open Google Drive at drive.google.com.
  • Find your Netflix financial model workbook.
  • Right-click the file and select Move to trash.
  • To permanently delete it, open Trash in the left sidebar, right-click the file, and select Delete forever.

Nice Work!

Nice Work!

You just built a professional-grade 3-statement financial model for Netflix (NFLX) in Google Sheets. This is the exact type of deliverable that corporate finance, FP&A, and data analyst roles expect candidates to produce.

You've learned how to:

  • Build a driver-based revenue forecast using regional subscriber counts and ARPU, projecting a full income statement and cash flow statement for three years forward.
  • Perform a DCF valuation using the indirect cash flow method, terminal value calculation, and discounted free cash flows to arrive at an implied share price.
  • Implement Base/Bull/Bear scenario analysis with a dropdown toggle that dynamically updates every assumption, projection, and valuation output across the entire model.
  • Secret Mission: Created an executive-ready KPI dashboard and sensitivity table showing how valuation varies across growth and margin assumptions.

Ready to quiz yourself?