US Employee Stock Purchase Plan (ESPP) Tax Estimator
ESPP Purchase Details
Enter the details for a single purchase lot from a *Qualified* ESPP.
This is the price you paid after applying the ESPP discount.
Sale Details
Enter the details for the sale of these ESPP shares.
Enter the number of shares from the above purchase lot that were sold.
Estimated Tax Implications
Enter ESPP and Sale details in the "ESPP & Sale Details" tab and click "Estimate Tax Implications".
- Tax treatment depends on the "disposition" type (Qualified or Disqualifying).
- A Qualified Disposition requires holding the stock for more than one year from the Purchase Date AND more than two years from the Grant Date.
- A Disqualifying Disposition occurs if either of the above holding periods is NOT met.
- Ordinary income is typically reported on Form W-2 by your employer. Capital gain/loss is typically reported on Form 1099-B by your broker and filed on Form 8949 and Schedule D of Form 1040.
- This estimator assumes a Qualified ESPP and does not account for non-qualified plans, complex scenarios like partial lot sales with different holding periods within the same lot, multiple purchase lots, or state taxes.
Capital Gain/Loss: ${formatCurrency(0)}
`; } displayResults(resultsHtml); } function displayResults(resultsHtml) { estimationResultsDiv.innerHTML = resultsHtml; estimationResultsDiv.style.display = 'block'; downloadPdfBtn.style.display = 'block'; // Show PDF button on successful calculation estimationTabButton.click(); // Switch to estimation tab } function downloadPdf() { // Ensure jsPDF is loaded if (typeof window.jspdf === 'undefined') { console.error('jsPDF library not loaded.'); alert('PDF generation library not loaded. Please try again.'); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); let yPos = 15; // Starting Y position const margin = 15; // Title doc.setFontSize(18); doc.setTextColor(0, 86, 179); // RGB for #0056b3 (Accent color) doc.text('US Employee Stock Purchase Plan (ESPP) Tax Estimation', margin, yPos); yPos += 20; // Get the content from the results section const resultsContentDiv = document.getElementById('estimation_results'); if (!resultsContentDiv || resultsContentDiv.innerHTML.trim() === '' || resultsContentDiv.textContent.includes('Error:')) { doc.setFontSize(12); doc.setTextColor(51, 51, 51); doc.text('No tax estimation results available or an error occurred.', margin, yPos); doc.save(`espp_tax_estimation.pdf`); return; } // Add Results to PDF - manually adding lines, handling bolding doc.setFontSize(10); doc.setTextColor(51, 51, 51); // Text color // Get the content including the H5 headings and paragraphs const resultElements = resultsContentDiv.querySelectorAll('h5, p'); resultElements.forEach(element => { if (element.tagName === 'H5') { yPos += 10; // Space before heading doc.setFontSize(12); doc.setTextColor(0, 86, 179); // Heading color doc.text(element.textContent.trim(), margin, yPos); yPos += 8; // Space after heading doc.setFontSize(10); // Reset font size for paragraphs doc.setTextColor(51, 51, 51); // Reset text color for paragraphs } else { // It's a paragraph let lineText = element.textContent.trim(); if (lineText) { // Identify strong tags for potential bolding const strongElement = element.querySelector('strong'); const strongText = strongElement ? strongElement.textContent.trim() : ''; const splitText = doc.splitTextToSize(lineText, 180); splitText.forEach((segment, index) => { let currentX = margin; let remainingSegment = segment; // Attempt to bold the beginning of the segment if it matches the strong text if (strongText && segment.startsWith(strongText)) { // Check if the segment *starts* with the strong text const boldPart = strongText; const normalPart = segment.substring(strongText.length); if (boldPart) { doc.setFont(undefined, 'bold'); doc.text(boldPart, currentX, yPos); currentX += doc.getTextWidth(boldPart); } if (normalPart) { doc.setFont(undefined, 'normal'); doc.text(normalPart, currentX, yPos); } } else { // No bolding needed for this segment or it's not the start of the strong text doc.setFont(undefined, 'normal'); // Ensure normal font doc.text(segment, currentX, yPos); } yPos += 7; // Move to the next line segment position }); yPos += 3; // Extra space between paragraphs } } }); // Add the Note section explicitly from the HTML const noteElement = document.querySelector('#estimation-tab .note'); if (noteElement) { yPos += 15; // Space before note doc.setFontSize(9); doc.setTextColor(85, 85, 85); // RGB for #555 (Note color) const noteText = noteElement.textContent.trim(); const splitNote = doc.splitTextToSize(noteText, 180); doc.text(splitNote, margin, yPos); // yPos += (splitNote.length * 6); // Space after note } // Save the PDF doc.save(`espp_tax_estimation.pdf`); } // Initial state setup estimationResultsDiv.style.display = 'none'; // Hide results initially downloadPdfBtn.style.display = 'none'; // Hide PDF button initially });The US Employee Stock Purchase Plan (ESPP) Tax Estimator is a valuable tool for employees participating in ESPPs who want to understand and calculate the tax implications of their stock purchases. ESPPs allow employees to buy company stock at a discounted price, creating potential tax benefits and obligations that can be complex to navigate without guidance.
This estimator lets you input key details such as purchase price, fair market value at purchase and sale, sale date, and your tax filing status. Using this information, it calculates the taxable income generated from the discount, any capital gains or losses, and your estimated tax liability based on current IRS rules.
ESPP tax treatment varies depending on whether the stock sale is a qualifying or disqualifying disposition. Qualifying dispositions receive favorable tax treatment, while disqualifying dispositions may lead to ordinary income tax on the discount amount. This tool helps clarify these distinctions and estimate the taxes you owe under each scenario.
Understanding your ESPP tax position is essential for financial planning, ensuring you can anticipate tax payments and optimize your stock sale timing. The estimator is particularly useful during tax season or when planning to sell shares acquired through ESPPs.
By using the US Employee Stock Purchase Plan (ESPP) Tax Estimator, you gain clearer insights into the tax impact of your employee stock purchases. This empowers you to make informed decisions about holding or selling shares, managing tax liabilities, and maximizing after-tax returns.
