---
title: "ESPP Tax Calculator: Estimate Your Tax on the Discount and Sale"
slug: espp-tax-calculator
publishedAt: 2026-06-17T20:20:58.000Z
updatedAt: 2026-06-18T10:06:22.766Z
author: "Mike Navarro"
authorSlug: mike-navarro
category: "Equity Compensation"
tags: ["ESPP", "Equity Compensation", "Tax Planning", "Calculator"]
excerpt: "An ESPP tax calculator estimates two layers of tax: ordinary income on the purchase discount and capital gains at sale. Model qualifying vs. disqualifying dispositions in dollars."
canonical: https://myequitytax.com/blog/espp-tax-calculator
---


<TaxYearBadge year={2026} />
<ReviewedBadge year={2026} />

An ESPP tax calculator estimates the two taxes you owe on employee stock purchase plan shares: ordinary income on the purchase discount and capital gains at sale. The result depends on whether your sale is a qualifying or disqualifying disposition.

That single split is where most online tools stop — and where most of the money hides. The discount you got at purchase is **ordinary income** (taxed up to **37% federal** in 2026), while the appreciation above fair market value is a **capital gain** (taxed at **0%, 15%, or 20%** if long-term). Knowing which dollars land in which bucket — and catching the broker basis error that quietly taxes the discount twice — is the whole job of a good **espp tax calculator**. If you also hold other equity, it helps to know the broader [types of equity compensation](/blog/stock-options-vs-equity) before you model a single grant.

## What an ESPP tax calculator estimates

An **espp tax calculator** estimates two layers of tax stacked on one sale: the ordinary income on your purchase discount, and the capital gain on everything your shares earned after that. It takes a handful of inputs — your prices, your shares, your tax rates, and your holding period — and returns the dollar tax for each layer plus your after-tax profit.

Why two layers? Because an ESPP share is a **statutory stock option** under the tax code. The IRS treats these as a special category whose tax treatment turns on how long you hold the shares ([IRS Topic No. 427, Stock Options](https://www.irs.gov/taxtopics/tc427)). That means a calculator can't just multiply your gain by one rate — it has to know your dates.

Here's the shape of a typical estimate. Say you bought **100 shares** at a 15% discount and later sold at a profit:

- **Layer 1 — the discount (bargain element):** taxed as ordinary income at your marginal rate, somewhere between **10% and 37% federal** depending on your bracket.
- **Layer 2 — the gain at sale:** taxed as a capital gain, **short-term** (ordinary rates) if held a year or less, or **long-term** (0/15/20%) if held longer.

A calculator that only models Layer 2 — the way a generic stock profit tool would — undercounts your tax. One that double-counts the discount overcounts it. Getting both layers right is the point, and it's the gap most competitor tools leave open. For the underlying mechanics, see our [worked ESPP tax examples](/blog/espp-tax-examples).

<CalculatorCTA calculatorType="espp" />

## The two taxes: ordinary income on the discount + capital gains at sale

The two taxes are **ordinary income on the discount at purchase** and **a capital gain on the appreciation at sale** — and they're taxed at different rates, on different schedules. The discount (the **bargain element**) is the gap between what the stock was worth and what you paid; the gain is everything the stock earned on top of that.

The IRS spells out the inclusion rule for statutory plans directly:

> "If you receive an option to buy stock as payment for your services, you may have income when you receive the option, when you exercise the option, or when you dispose of the option or stock received when you exercise the option."
> — [IRS Publication 525, Taxable and Nontaxable Income](https://www.irs.gov/publications/p525)

For a qualified ESPP, that income generally lands at disposition, not at purchase — but the discount portion is always taxed as **ordinary income**, never at the friendlier capital-gains rate. A 15% discount is a pre-tax number; once it's taxed at a tech earner's marginal rate, the real value shrinks.

Here's the catch most people miss: your employer withholds a flat **22% federal supplemental rate** on a lot of equity income, but a higher earner's discount is taxed at **32% or 37%**. The same under-withholding gap that bites RSU recipients hits ESPP income too. To see how steeply the effective rate climbs with income, here's the rate stack — the same ordinary rates that apply to your ESPP discount.

<RSUTaxRateChart />

At **$250,000** total comp in California, the effective rate is roughly **46%** — more than double the **22%** that's typically withheld. So a **$5,000** discount can leave you owing close to **$1,150** more than your paycheck withheld. That's exactly the shortfall behind [why 22% withholding is rarely enough](/blog/rsu-tax-withholding), and it's why a calculator that shows your true marginal rate beats one that assumes 22%.

<Callout type="info">
**ESPP contributions are after-tax.** Unlike a 401(k) deferral, your ESPP payroll deduction does not reduce your W-2 income — you've already paid income tax on the money you used to buy the shares. That's why only the discount and the gain get taxed again, not your contribution.
</Callout>

## Qualifying vs. disqualifying disposition (and what the calculator needs to know)

A **qualifying disposition** caps your ordinary income and shifts the rest to long-term capital gains, while a **disqualifying disposition** taxes the entire purchase-date discount as ordinary income. Which one you get is decided by two holding-period clocks — and a calculator can't estimate your tax without both dates.

To get a **qualifying disposition**, you must hold the shares for **both**:

1. **More than 2 years from the offering (grant) date**, and
2. **More than 1 year from the purchase date.**

Miss either deadline and it's a **disqualifying disposition**. Because the offering date usually sits about six months before the purchase date, the 2-year-from-offering clock is often the binding one — you can clear the 1-year purchase rule and still be disqualified. This dual-clock structure mirrors the ISO version of a [disqualifying disposition](/blog/disqualifying-disposition).

The IRS confirms where the dates come from:

> "After your first transfer or sale of stock acquired by exercising an option granted under an employee stock purchase plan, you should receive from your employer a Form 3922."
> — [IRS Topic No. 427, Stock Options](https://www.irs.gov/taxtopics/tc427)

The split changes the math meaningfully:

- **Qualifying:** ordinary income is the **lesser** of your actual gain or **15% of the offering-date price**. Everything above that is long-term capital gain at **0/15/20%**.
- **Disqualifying:** ordinary income is the **full purchase-date spread** (FMV at purchase − price paid). Anything beyond purchase-date FMV is a capital gain — short- or long-term per your holding period ([IRS Topic No. 409, Capital Gains and Losses](https://www.irs.gov/taxtopics/tc409)).

So the inputs an ESPP tax estimator truly needs are: offering-date price, purchase-date price (the lookback often makes this lower), discount %, shares, sale price, your marginal rate, your capital-gains rate, and the **holding period** that picks which formula runs.

## Worked example: ESPP tax in dollars, both dispositions

Take one purchase — **100 shares**, a **$100** offering-date price, a **15% discount** with lookback, a **$85** purchase price, a **$140** fair market value at purchase, sold later at **$160** — and run it through both dispositions. The only variable is how long you hold.

**Disqualifying disposition (sold early):**

- Ordinary income = ($140 purchase-date FMV − $85 price) × 100 = **$5,500**.
- Capital gain = ($160 − $140) × 100 = **$2,000**.
- Tax at a 32% ordinary rate + 15% long-term rate ≈ **$1,760 + $300 = $2,060**.

**Qualifying disposition (held past both clocks):**

- Ordinary income = lesser of actual gain ($75/share) or 15% of offering price ($15/share) = **$1,500**.
- Long-term capital gain = $7,500 total gain − $1,500 = **$6,000**.
- Tax at 32% ordinary + 15% long-term ≈ **$480 + $900 = $1,380**.

Holding for the qualifying disposition saved about **$680** of tax here. The pattern holds across most grants, though the gap is usually a few hundred to a couple thousand dollars — not always enough to justify carrying concentrated single-stock risk for two-plus years. For more side-by-side dollar walkthroughs — including what happens when the stock drops after purchase — see our [worked ESPP tax examples](/blog/espp-tax-examples). Your starting numbers come straight from **Form 3922**, which your employer files for each transfer of stock under a Section 423(c) plan ([IRS About Form 3922](https://www.irs.gov/forms-pubs/about-form-3922)). For which ESPP tax form reports each number and where it goes on your return, see our [ESPP tax forms walkthrough](/blog/espp-tax-form). For how all of this lands on your return, see [how equity comp affects your tax return](/blog/how-equity-compensation-affects-tax-return).

Now the trap that no competitor calculator surfaces:

<Callout type="warning">
**Check every ESPP 1099-B for the missing discount.** Your broker usually reports only the **discounted purchase price** ($8,500 here) as cost basis — omitting the **$5,500** discount already taxed on your W-2. File it as-is and your reported gain balloons to **$7,500** instead of the correct **$2,000**, costing roughly **$825** of tax (15%) on income you already paid. Fix it on Form 8949 by adding the W-2 ordinary income to your basis ([IRS About Form 8949](https://www.irs.gov/forms-pubs/about-form-8949)). You might owe far more than necessary if you skip this — consult a tax professional if your basis looks off.
</Callout>

That single correction — broker basis of **$8,500** versus the true **$14,000** adjusted basis — is the most expensive ESPP filing mistake, and it's exactly why a basis-aware calculator beats a federal-only one.

## The state-tax layer most calculators ignore

Your ESPP discount is **state-taxable ordinary income too**, and most online calculators are federal-only — so they understate your real bill by thousands in a high-tax state. California and New York don't offer a preferential capital-gains rate, so the entire ESPP profit is taxed at full state ordinary rates, while no-income-tax states take **nothing**.

To see the spread on a comparable equity gain, here's how much three states take from the same $100K gain.

<StateTaxComparisonChart />

The same gain that costs about **$9,300** in California and roughly **$6,850** in New York costs **$0** in Texas or Washington. So an ESPP tax calculator that ignores state is off by **$9,300** for a Californian on a six-figure gain. For the specifics, see how [California taxes the discount as ordinary income](/blog/california-income-tax), and if you're weighing benefits, compare [RSU vs ESPP](/blog/rsu-vs-espp) to decide which to max out first.

## How to use the EquityTax ESPP tax calculator (inputs, outputs, FAQ)

The EquityTax ESPP calculator maps each input to a specific role in the two-layer tax math, so you don't have to guess which formula applies. Enter your numbers, pick your holding period, and it returns the ordinary-income tax, the capital-gains tax, the broker-basis correction, and your after-tax profit — federal **and** state.

What each input does:

- **Offering-date price** — sets the 2-year clock and the 15%-of-offering cap for qualifying dispositions.
- **Purchase-date price** — the lookback price you actually paid; your pre-adjustment cost basis.
- **Discount %** — capped at **15%** in a qualified Section 423 plan; sizes the bargain element.
- **Shares** — scales every dollar figure.
- **Sale price** — sets your total gain above the purchase price.
- **Marginal tax rate** — the rate applied to the ordinary-income layer (10%–37% federal in 2026).
- **Capital-gains rate** — 0/15/20% long-term, or your ordinary rate if short-term.
- **Holding period** — the switch that selects qualifying vs. disqualifying treatment.

To pull federal and state into one number and compare against your other equity, the [equity compensation calculator](/blog/equity-compensation-calculator) and the [stock options tax calculator](/blog/stock-options-tax-calculator) cover the adjacent cases.

### FAQ: ESPP tax calculator

**Is ESPP taxed twice?**

No. It feels that way because of a 1099-B error, not the tax law. The discount is taxed once as ordinary income on your W-2, and the gain is taxed once as a capital gain. The double-tax only happens if you fail to correct your cost basis on Form 8949 — leaving the already-taxed discount inside your reported capital gain.

**When do I pay taxes on ESPP?**

For a qualified Section 423 plan, you pay at **sale** — there's no tax when you buy. Non-qualified plans are the exception: they tax the discount as ordinary income at **purchase**. So for the typical large-company ESPP, buying at the discount creates no immediate bill.

**What's the difference between a qualifying and disqualifying disposition?**

A **qualifying disposition** meets both holding periods — more than 2 years from the offering date and more than 1 year from the purchase date — which caps your ordinary income at roughly 15% of the offering price and shifts the rest to long-term capital gains. A **disqualifying disposition** misses one or both deadlines, taxing the full purchase-date discount as ordinary income.

**How much tax do I pay on the ESPP discount?**

The discount is taxed at your ordinary marginal rate — **10% to 37% federal** in 2026 — plus state. In a high-tax state like California, add up to **13.3%** on top. A $5,000 discount in the 32% bracket costs about **$1,600** federal before state.

The fastest way to see your own numbers is to run your grant through the live tool.

<CalculatorCTA calculatorType="espp" />

<TaxDisclaimer />
