Money Market vs. Savings Account ROI Calculator

Project Future Value of Your Savings

See how your current savings might grow and what their purchasing power could be in the future, considering inflation and potential investment returns. Contributions are assumed to be made annually at year-end.

$
%
$
%

Inflation Sensitivity for Savings' Future Value

Compare the real future value (purchasing power) under different inflation assumptions.

%
%

Plan for a Future Goal (Inflation-Adjusted)

Determine how much money you'll actually need in the future for a goal, considering its cost in today's dollars and expected inflation.

$
%

Inflation Sensitivity for Goal Target

%
%

Download Inflation Impact Report

This will generate a PDF summary of your savings projections and goal planning, including any inflation sensitivity analysis performed.

Generated on: ${new Date().toLocaleDateString()}

`; if (lastFVSavingsResults) { const { inputs, main, sensitivity } = lastFVSavingsResults; pdfHtml += `

Future Value of Current Savings

`; pdfHtml += `

Current Savings: $${inputs.pv.toFixed(2)}

Annual Growth Rate: ${inputs.annualGrowth.toFixed(1)}%

Annual Contribution: $${inputs.annualContrib.toFixed(2)}

Years Projected: ${inputs.years}

Main Inflation Rate: ${inputs.mainInflation.toFixed(1)}%

`; pdfHtml += `

Nominal Future Value: $${main.totalNominalFv.toFixed(2)}

Real Future Value (Today's $): $${main.realFv.toFixed(2)}

${inputs.pv > 0 ? `

Loss in Purchasing Power of Initial Principal: $${main.lossOfPurchasingPowerInitialPV.toFixed(2)}

`:''}

Net Change in Real Value (vs. total invested $${main.initialPrincipalAndContributions.toFixed(2)}): $${main.netGainLossReal.toFixed(2)}

`; if (sensitivity && sensitivity.length > 0) { pdfHtml += `

Inflation Sensitivity on Real Future Value:

`; sensitivity.forEach(scen => { pdfHtml += ``; }); pdfHtml += `
ScenarioInflation RateReal Future Value ($)
${scen.name}${scen.rate.toFixed(1)}%$${scen.realFv.toFixed(2)}
`; } pdfHtml += `
`; } if (lastGoalResults) { const { inputs, mainNominalGoal, sensitivity } = lastGoalResults; pdfHtml += `

Savings Goal Planner

`; pdfHtml += `

Target Goal (Today's $): $${inputs.targetPV.toFixed(2)}

Years Until Goal: ${inputs.years}

Main Inflation Rate: ${inputs.mainInflation.toFixed(1)}%

`; pdfHtml += `

Nominal Amount Needed in ${inputs.years} years: $${mainNominalGoal.toFixed(2)}

`; if (sensitivity && sensitivity.length > 0) { pdfHtml += `

Inflation Sensitivity on Nominal Goal Needed:

`; sensitivity.forEach(scen => { pdfHtml += ``; }); pdfHtml += `
ScenarioInflation RateNominal Amount Needed ($)
${scen.name}${scen.rate.toFixed(1)}%$${scen.nominalGoal.toFixed(2)}
`; } if (lastReachGoalResults) { const { inputs: reachInputs, totalProjectedNominal, shortfallSurplus } = lastReachGoalResults; pdfHtml += `

Projection Towards Goal:

Current Goal Savings: $${reachInputs.currentSaved.toFixed(2)}

Planned Annual Contribution: $${reachInputs.annualContrib.toFixed(2)}

Expected Annual Return: ${reachInputs.annualReturn.toFixed(1)}%

Total Projected Nominal Savings: $${totalProjectedNominal.toFixed(2)}

Result vs. Nominal Goal ($${reachInputs.nominalTargetForPDF.toFixed(2)}): ${shortfallSurplus >= 0 ? 'SURPLUS of $' + shortfallSurplus.toFixed(2) : 'SHORTFALL of $' + Math.abs(shortfallSurplus).toFixed(2)}

`; } pdfHtml += `
`; } pdfHtml += `
`; if(pdfOutputEl) pdfOutputEl.innerHTML = pdfHtml; const opt = { margin: [0.5, 0.5, 0.5, 0.5], filename: `Inflation_Impact_Savings_Report_${new Date().toISOString().slice(0,10)}.pdf`, image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2, useCORS: true, logging: false }, jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' } }; if (typeof html2pdf !== 'undefined' && pdfOutputEl) { html2pdf().from(pdfOutputEl).set(opt).save() .catch(err => { console.error("PDF generation failed:", err); alert("PDF generation error."); }); } else { alert("PDF library not loaded or output element missing."); } }); } // --- Tab Navigation --- window.iist_openTab = function(evt, tabName) { tabs.forEach(tab => { if(tab) tab.style.display = 'none'; }); tabLinks.forEach(link => { if(link) link.classList.remove('active'); }); const activeTabContent = toolContainer.querySelector('#' + tabName); if(activeTabContent) activeTabContent.style.display = 'block'; else { console.error(`Tab content for ${tabName} not found.`); return; } let clickedIndex = -1; if (evt && evt.currentTarget) { evt.currentTarget.classList.add('active'); clickedIndex = tabLinks.indexOf(evt.currentTarget); } else { clickedIndex = tabLinks.findIndex(link => { if (!link) return false; const onclickAttr = link.getAttribute('onclick'); return onclickAttr && onclickAttr.includes(`'${tabName}'`); }); if (clickedIndex !== -1 && tabLinks[clickedIndex]) { tabLinks[clickedIndex].classList.add('active'); } else { if (tabLinks.length > 0 && tabLinks[0]) tabLinks[0].classList.add('active'); clickedIndex = 0; } } currentTabIndex = (clickedIndex !== -1 && clickedIndex < tabs.length) ? clickedIndex : 0; iist_updateNavButtons(); } window.iist_navigateTab = function(direction) { let newIndex = currentTabIndex; if (direction === 'next' && currentTabIndex < tabs.length - 1) newIndex++; else if (direction === 'prev' && currentTabIndex > 0) newIndex--; if (tabLinks[newIndex] && newIndex !== currentTabIndex) tabLinks[newIndex].click(); } function iist_updateNavButtons() { if(prevButton) prevButton.disabled = currentTabIndex === 0; if(nextButton) nextButton.disabled = currentTabIndex >= tabs.length - 1; } function loadSettingsFromLocalStorage() { try { const settingsToLoad = [ { el: projectionYearsSavingsEl, key: `${toolId}_projYearsSavings`, default: '10' }, { el: inflationRateSavingsEl, key: `${toolId}_inflationSavings`, default: '3.0' }, { el: yearsUntilGoalEl, key: `${toolId}_projYearsGoal`, default: '10' }, { el: inflationRateGoalEl, key: `${toolId}_inflationGoal`, default: '3.0' }, { el: lowInflationRateSavingsEl, key: `${toolId}_lowInflationSavings`, default: '' }, { el: highInflationRateSavingsEl, key: `${toolId}_highInflationSavings`, default: '' }, { el: lowInflationRateGoalEl, key: `${toolId}_lowInflationGoal`, default: '' }, { el: highInflationRateGoalEl, key: `${toolId}_highInflationGoal`, default: '' } ]; settingsToLoad.forEach(item => { if (item.el) { const storedVal = localStorage.getItem(item.key); item.el.value = storedVal !== null ? storedVal : item.default; } }); } catch(e) { console.warn("Could not load settings from local storage."); } } function saveSettingsToLocalStorage() { try { if(projectionYearsSavingsEl) localStorage.setItem(`${toolId}_projYearsSavings`, projectionYearsSavingsEl.value); if(inflationRateSavingsEl) localStorage.setItem(`${toolId}_inflationSavings`, inflationRateSavingsEl.value); if(yearsUntilGoalEl) localStorage.setItem(`${toolId}_projYearsGoal`, yearsUntilGoalEl.value); if(inflationRateGoalEl) localStorage.setItem(`${toolId}_inflationGoal`, inflationRateGoalEl.value); if(lowInflationRateSavingsEl) localStorage.setItem(`${toolId}_lowInflationSavings`, lowInflationRateSavingsEl.value); if(highInflationRateSavingsEl) localStorage.setItem(`${toolId}_highInflationSavings`, highInflationRateSavingsEl.value); if(lowInflationRateGoalEl) localStorage.setItem(`${toolId}_lowInflationGoal`, lowInflationRateGoalEl.value); if(highInflationRateGoalEl) localStorage.setItem(`${toolId}_highInflationGoal`, highInflationRateGoalEl.value); } catch (e) { console.warn("Could not save settings to local storage."); } } const settingInputs = [ projectionYearsSavingsEl, inflationRateSavingsEl, yearsUntilGoalEl, inflationRateGoalEl, lowInflationRateSavingsEl, highInflationRateSavingsEl, lowInflationRateGoalEl, highInflationRateGoalEl ]; settingInputs.forEach(el => { if(el) el.addEventListener('change', saveSettingsToLocalStorage); }); // --- Initialization --- function initializeTool() { loadSettingsFromLocalStorage(); reachGoalSectionEl.style.display = 'none'; iist_openTab(null, 'iist-tab1'); } let iist_attempts = 0; function checkLibrariesAndInit_iist() { if (typeof html2pdf !== 'undefined') { initializeTool(); } else if (iist_attempts < 20) { iist_attempts++; setTimeout(checkLibrariesAndInit_iist, 100); } else { alert("Error: PDF generation library (html2pdf.js) could not be loaded. PDF export will not work."); initializeTool(); } } checkLibrariesAndInit_iist(); })();
Scroll to Top