Estimate your earnings, composite rate, and early withdrawal penalties.
Calculated Results
Composite Annual Rate:–
Total Interest Earned:–
Early Withdrawal Penalty (3 Months):–
Current Cash-Out Value:–
Understanding Series I Savings Bonds
Series I savings bonds are a low-risk investment product issued by the U.S. Treasury that offers protection against inflation. Unlike traditional savings accounts, the interest rate on an I bond is a combination of two different rates: a Fixed Rate and a Variable Inflation Rate.
How the Composite Rate is Calculated
The Treasury uses a specific formula to determine the actual interest your bond earns, known as the Composite Rate. It is not a simple addition of the two rates. The formula is:
Composite Rate = [Fixed Rate + (2 x Semiannual Inflation Rate) + (Fixed Rate x Semiannual Inflation Rate)]
Key Investment Rules
The 12-Month Lock: You cannot cash in an I bond for at least 12 months after purchase.
The 5-Year Rule: If you cash in the bond before holding it for 5 years, you lose the last 3 months of interest as a penalty.
Purchase Limits: You can purchase up to $10,000 in electronic I bonds per calendar year via TreasuryDirect, and an additional $5,000 in paper bonds using your federal income tax refund.
Taxation: Interest is subject to federal income tax but is exempt from state and local income taxes.
Example Calculation
If you purchase $5,000 worth of I bonds with a 1.30% fixed rate and a 1.48% semiannual inflation rate, your composite annual rate would be 4.27%. If you hold this bond for exactly one year, you would earn roughly $213.50 in interest. However, if you withdraw at the 12-month mark, the 3-month interest penalty would be deducted, leaving you with a net gain of approximately $160.13.
function calculateIBond() {
var principal = parseFloat(document.getElementById('ib_amount').value);
var fixed = parseFloat(document.getElementById('ib_fixed').value) / 100;
var semiannualInflation = parseFloat(document.getElementById('ib_inflation').value) / 100;
var months = parseInt(document.getElementById('ib_months').value);
if (isNaN(principal) || isNaN(fixed) || isNaN(semiannualInflation) || isNaN(months) || principal <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
// Official Treasury Formula: Composite Rate = [Fixed rate + (2 x semiannual inflation rate) + (Fixed rate x semiannual inflation rate)]
var compositeRate = fixed + (2 * semiannualInflation) + (fixed * semiannualInflation);
// I Bonds compound semiannually (every 6 months)
var periods = Math.floor(months / 6);
var remainingMonths = months % 6;
// Value after full 6-month compounding periods
var valueAtFullPeriods = principal * Math.pow(1 + (compositeRate / 2), periods);
// Interest earned in the current (incomplete) 6-month period
// In reality, Treasury adds interest monthly, but it doesn't compound until the 6th month
var monthlyInterestAmount = (valueAtFullPeriods * (compositeRate / 2)) / 6;
var totalValueBeforePenalty = valueAtFullPeriods + (monthlyInterestAmount * remainingMonths);
var penalty = 0;
if (months < 60) {
// Penalty is the last 3 months of interest
// We use the composite rate of the period the bond is currently in/exiting
penalty = (totalValueBeforePenalty * (compositeRate / 12)) * 3;
}
var finalValue = totalValueBeforePenalty – penalty;
var totalInterest = finalValue – principal;
// Display results
document.getElementById('ib_comp_rate').innerText = (compositeRate * 100).toFixed(2) + "%";
document.getElementById('ib_final_val').innerText = "$" + finalValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('ib_interest').innerText = "$" + totalInterest.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('ib_penalty').innerText = "$" + penalty.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('ib_results_area').style.display = "block";
}