Patent Term Calculator

Patent Term Calculator body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; max-width: 800px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; } .calculator-container { background: #ffffff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); margin-bottom: 40px; border-top: 5px solid #2c3e50; } .calculator-title { font-size: 24px; font-weight: 700; margin-bottom: 25px; color: #2c3e50; text-align: center; border-bottom: 2px solid #eee; padding-bottom: 15px; } .input-group { margin-bottom: 20px; } .input-group label { display: block; font-weight: 600; margin-bottom: 8px; color: #555; } .input-group input, .input-group select { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 16px; box-sizing: border-box; transition: border-color 0.3s; } .input-group input:focus, .input-group select:focus { border-color: #3498db; outline: none; } .help-text { font-size: 12px; color: #7f8c8d; margin-top: 5px; } .btn-calc { width: 100%; padding: 15px; background-color: #2c3e50; color: white; border: none; border-radius: 6px; font-size: 18px; font-weight: 600; cursor: pointer; transition: background-color 0.3s; margin-top: 10px; } .btn-calc:hover { background-color: #34495e; } #result-container { margin-top: 25px; padding: 20px; background-color: #ecf0f1; border-radius: 8px; border-left: 5px solid #3498db; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 15px; } .result-row strong { color: #2c3e50; } .final-date { font-size: 28px; font-weight: 800; color: #e74c3c; text-align: center; margin-top: 15px; padding-top: 15px; border-top: 1px solid #bdc3c7; } .final-label { text-align: center; font-size: 14px; color: #7f8c8d; text-transform: uppercase; letter-spacing: 1px; } .article-content { background: #fff; padding: 30px; border-radius: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .article-content h2 { color: #2c3e50; margin-top: 30px; } .article-content p { margin-bottom: 15px; line-height: 1.7; } .article-content ul { margin-bottom: 20px; } .article-content li { margin-bottom: 10px; } @media (max-width: 600px) { .calculator-container { padding: 20px; } }
Patent Term Calculator
Utility Patent Plant Patent Design Patent
Select the type of U.S. patent application.
The date the application was filed (excluding provisional).
Required for Design patents; optional reference for others.
Additional days granted by USPTO for administrative delays.
If a Terminal Disclaimer was filed, enter the expiration date of the reference patent.
Base Term Start:
Statutory Term:
PTA Added:
Terminal Disclaimer Limit:
Estimated Expiration Date

Understanding Patent Term Expiration

Calculating the expiration date of a United States patent is critical for patent holders, competitors, and the public. Once a patent expires, the invention enters the public domain, meaning anyone can manufacture, use, or sell the invention without permission.

The 20-Year Rule vs. Design Patents

The calculation logic depends heavily on the type of patent filed:

  • Utility and Plant Patents: Generally expire 20 years from the earliest non-provisional filing date. This date may be adjusted based on the Patent Cooperation Treaty (PCT) filing date if applicable.
  • Design Patents: The term depends on the grant date.
    • If granted on or after May 13, 2015: Expires 15 years from the date of grant.
    • If granted before May 13, 2015: Expires 14 years from the date of grant.

Patent Term Adjustment (PTA)

For Utility and Plant patents, the USPTO may grant a "Patent Term Adjustment" to compensate for administrative delays caused by the patent office during the examination process. These days are added to the end of the 20-year term. However, delays caused by the applicant can reduce this adjustment.

Terminal Disclaimers

A Terminal Disclaimer is a legal document filed by a patent owner in which they agree that a second patent will expire on the same date as a first, earlier-expiring patent. This is often done to overcome a "double patenting" rejection. If a Terminal Disclaimer exists, it acts as a hard cap on the patent term, regardless of PTA.

Maintenance Fees

Even if the term is calculated correctly, a Utility patent can expire prematurely if maintenance fees are not paid. These fees are due at 3.5, 7.5, and 11.5 years after the grant date. Design and Plant patents do not require maintenance fees.

function toggleFields() { var type = document.getElementById('patentType').value; var ptaGroup = document.getElementById('ptaGroup'); var filingDateGroup = document.getElementById('filingDateGroup'); // Design patents rely on Grant date, others on Filing date // Design patents rarely have PTA in the same way (usually none), simplifed for UI if (type === 'design') { ptaGroup.style.display = 'none'; } else { ptaGroup.style.display = 'block'; } } function calculateExpiration() { var type = document.getElementById('patentType').value; var filingDateVal = document.getElementById('filingDate').value; var grantDateVal = document.getElementById('grantDate').value; var ptaDays = parseInt(document.getElementById('ptaDays').value) || 0; var tdDateVal = document.getElementById('terminalDisclaimer').value; var resultContainer = document.getElementById('result-container'); var resBaseStart = document.getElementById('res-base-start'); var resTermLength = document.getElementById('res-term-length'); var resPta = document.getElementById('res-pta'); var resTd = document.getElementById('res-td'); var rowTd = document.getElementById('row-td'); var rowPta = document.getElementById('row-pta'); var resFinal = document.getElementById('res-final'); var expirationDate = new Date(); var baseDate; var termDesc = ""; // Logic Switch if (type === 'design') { if (!grantDateVal) { alert("Please enter the Patent Grant Date for Design Patents."); return; } var grantDate = new Date(grantDateVal); // Check May 13, 2015 cutoff // Month is 0-indexed (May = 4) var cutoffDate = new Date(2015, 4, 13); baseDate = new Date(grantDate.getTime()); if (grantDate >= cutoffDate) { expirationDate.setTime(grantDate.getTime()); expirationDate.setFullYear(expirationDate.getFullYear() + 15); termDesc = "15 Years from Grant"; } else { expirationDate.setTime(grantDate.getTime()); expirationDate.setFullYear(expirationDate.getFullYear() + 14); termDesc = "14 Years from Grant"; } // Design patents generally don't get PTA resBaseStart.innerText = grantDateVal; rowPta.style.display = 'none'; } else { // Utility or Plant if (!filingDateVal) { alert("Please enter the Earliest Non-Provisional Filing Date."); return; } var filingDate = new Date(filingDateVal); baseDate = new Date(filingDate.getTime()); // Base term: 20 years from filing expirationDate.setTime(filingDate.getTime()); expirationDate.setFullYear(expirationDate.getFullYear() + 20); // Add PTA expirationDate.setDate(expirationDate.getDate() + ptaDays); termDesc = "20 Years from Filing"; resBaseStart.innerText = filingDateVal; rowPta.style.display = 'flex'; resPta.innerText = "+" + ptaDays + " Days"; } // Apply Terminal Disclaimer Cap if present if (tdDateVal) { var tdDate = new Date(tdDateVal); // If calculated date is after TD date, TD date wins if (expirationDate > tdDate) { expirationDate = tdDate; rowTd.style.display = 'flex'; resTd.innerText = tdDateVal; } else { rowTd.style.display = 'none'; } } else { rowTd.style.display = 'none'; } // Format Date Output // Using UTC methods to prevent timezone shifts on display var options = { year: 'numeric', month: 'long', day: 'numeric' }; // Adjust for timezone offset to ensure the displayed date matches the calculation logic conceptually // (Simple approach: display the date object string) resFinal.innerText = expirationDate.toLocaleDateString('en-US', options); resTermLength.innerText = termDesc; resultContainer.style.display = 'block'; } // Initialize state toggleFields();

Leave a Reply

Your email address will not be published. Required fields are marked *