{"product_id":"roi","title":"ROI Calculator - Return on Investment","description":"\u003cstyle\u003e\n.roi-calculator {\n  --ink: #0f172a;\n  --muted: #475569;\n  --border: #e2e8f0;\n  --surface: #ffffff;\n  --tint: #f8fafc;\n  --primary: #1d4ed8;\n  --accent: #c2410c;\n  --accent-hover: #9a3412;\n  --chart-1: #1e40af;\n  --chart-2: #0d9488;\n  --chart-3: #7c3aed;\n  --chart-4: #be185d;\n  --chart-5: #334155;\n  color: var(--ink);\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  font-size: 15px;\n  line-height: 1.6;\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  background: var(--surface);\n  container-type: inline-size;\n}\n.roi-calculator, .roi-calculator *, .roi-calculator *::before, .roi-calculator *::after { box-sizing: border-box; }\n.roi-calculator * { min-width: 0; }\n.roi-calculator [hidden] { display: none !important; }\n.roi-calculator h2, .roi-calculator h3, .roi-calculator p { margin-top: 0; }\n.roi-calculator h2 { font-size: 24px; line-height: 1.25; font-weight: 700; margin-bottom: 8px; letter-spacing: -0.02em; }\n.roi-calculator h3 { font-size: 18px; line-height: 1.35; font-weight: 650; margin-bottom: 12px; }\n.roi-calculator a { color: var(--primary); text-underline-offset: 3px; }\n.roi-calculator a:hover { text-decoration-thickness: 2px; }\n.roi-header { padding: 24px 24px 16px; border: 1px solid var(--border); border-bottom: 0; border-radius: 8px 8px 0 0; background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%); }\n.roi-header-copy { max-width: 780px; color: var(--muted); margin-bottom: 16px; }\n.roi-pills { display: flex; flex-wrap: wrap; gap: 8px; }\n.roi-pill { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--muted); font-size: 13px; font-weight: 500; }\n.roi-pill strong { color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; }\n.roi-toolbar { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; padding: 16px 24px; border-inline: 1px solid var(--border); background: var(--surface); }\n.roi-button { min-height: 46px; border: 1px solid var(--border); border-radius: 6px; padding: 11px 18px; font: inherit; font-weight: 650; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 10px; transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease; white-space: nowrap; }\n.roi-button:focus-visible, .roi-input:focus-visible, .roi-select:focus-visible, .roi-summary-toggle:focus-visible { outline: 3px solid rgba(29, 78, 216, .28); outline-offset: 2px; }\n.roi-download { color: #ffffff; background: var(--accent); border-color: var(--accent); box-shadow: 0 1px 2px rgba(15,23,42,.10); }\n.roi-download:hover { background: var(--accent-hover); border-color: var(--accent-hover); box-shadow: 0 3px 8px rgba(15,23,42,.14); transform: translateY(-1px); }\n.roi-download:active { transform: translateY(0); }\n.roi-reset { color: var(--ink); background: var(--surface); }\n.roi-reset:hover { background: var(--tint); border-color: #cbd5e1; }\n.roi-excel-icon { width: 20px; height: 20px; flex: 0 0 20px; }\n.roi-workspace { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .92fr); gap: 16px; padding: 0 24px 24px; border-inline: 1px solid var(--border); background: var(--surface); }\n.roi-panel { border: 1px solid var(--border); border-radius: 8px; background: var(--surface); box-shadow: 0 1px 2px rgba(15,23,42,.06); padding: 20px; }\n.roi-section-intro { color: var(--muted); font-size: 13px; margin-bottom: 16px; }\n.roi-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }\n.roi-field { display: flex; flex-direction: column; gap: 6px; }\n.roi-field-roi-mode { grid-column: 1 \/ -1; }\n.roi-label { font-size: 14px; line-height: 1.35; font-weight: 600; color: var(--ink); }\n.roi-input, .roi-select { width: 100%; min-height: 46px; border: 1px solid #cbd5e1; border-radius: 6px; background: #ffffff; color: var(--ink); padding: 10px 12px; font: inherit; font-size: 15px; font-variant-numeric: tabular-nums; }\n.roi-input:hover, .roi-select:hover { border-color: #94a3b8; }\n.roi-input[aria-invalid=\"true\"] { border-color: #b91c1c; box-shadow: 0 0 0 1px #b91c1c; }\n.roi-help { min-height: 40px; color: var(--muted); font-size: 13px; line-height: 1.45; }\n.roi-error { min-height: 20px; color: #991b1b; font-size: 13px; line-height: 1.35; }\n.roi-subsection { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--border); }\n.roi-date-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }\n.roi-check-row { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 16px; }\n.roi-check { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--primary); flex: 0 0 20px; }\n.roi-check-label { font-size: 14px; font-weight: 600; }\n.roi-check-note { display: block; color: var(--muted); font-size: 13px; font-weight: 500; margin-top: 2px; }\n.roi-advanced { margin-top: 20px; border-top: 1px solid var(--border); padding-top: 16px; }\n.roi-summary-toggle { cursor: pointer; font-size: 14px; font-weight: 650; color: var(--ink); }\n.roi-advanced-body { padding-top: 16px; }\n.roi-result-primary { padding: 18px; border: 1px solid #bfdbfe; border-radius: 8px; background: #eff6ff; margin-bottom: 16px; }\n.roi-result-primary-label { color: #1e3a8a; font-size: 13px; font-weight: 650; text-transform: uppercase; letter-spacing: .05em; }\n.roi-result-primary-value { font-size: 30px; line-height: 1.2; font-weight: 700; color: #172554; font-variant-numeric: tabular-nums; margin: 4px 0 6px; overflow-wrap: anywhere; }\n.roi-result-primary-copy { color: #1e3a8a; font-size: 13px; margin: 0; }\n.roi-result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }\n.roi-result-card { padding: 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--tint); min-height: 106px; display: flex; flex-direction: column; justify-content: space-between; }\n.roi-result-label { color: var(--muted); font-size: 13px; font-weight: 600; }\n.roi-result-value { color: var(--ink); font-size: 20px; line-height: 1.25; font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }\n.roi-result-note { color: var(--muted); font-size: 13px; line-height: 1.35; }\n.roi-live { margin-top: 16px; padding: 10px 12px; border-left: 3px solid var(--primary); background: var(--tint); color: var(--muted); font-size: 13px; }\n.roi-section { margin-top: 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); padding: 20px; box-shadow: 0 1px 2px rgba(15,23,42,.06); }\n.roi-breakdown, .roi-chart, .roi-table, .roi-education { margin-inline: 24px; }\n.roi-chart-intro { color: var(--muted); font-size: 13px; margin-bottom: 16px; }\n.roi-chart-cluster { display: grid; grid-template-columns: minmax(220px, 320px) minmax(0, 420px); justify-content: center; align-items: center; gap: 24px; width: min(100%, 800px); margin: 0 auto; }\n.roi-visual-box { width: 100%; min-height: 260px; display: grid; place-items: center; }\n.roi-donut-svg { display: block; width: min(100%, 320px); height: auto; overflow: visible; }\n.roi-donut-track { fill: none; stroke: #e2e8f0; stroke-width: 24; }\n.roi-donut-segment { fill: none; stroke-width: 24; stroke-linecap: butt; transform-origin: 80px 80px; transform: rotate(-90deg); }\n.roi-donut-total { fill: var(--ink); font-size: 17px; font-weight: 700; text-anchor: middle; font-variant-numeric: tabular-nums; }\n.roi-donut-caption { fill: var(--muted); font-size: 8px; font-weight: 600; text-anchor: middle; }\n.roi-legend { display: grid; gap: 10px; align-content: center; }\n.roi-legend-row { display: grid; grid-template-columns: 12px max-content max-content max-content; align-items: center; gap: 10px; font-size: 13px; }\n.roi-swatch { width: 12px; height: 12px; border-radius: 3px; }\n.roi-legend-name { color: var(--ink); font-weight: 600; }\n.roi-legend-value, .roi-legend-percent { color: var(--muted); font-variant-numeric: tabular-nums; }\n.roi-chart-data-wrap { margin-top: 16px; overflow-x: auto; border: 1px solid var(--border); border-radius: 6px; }\n.roi-chart-data-table { width: 100%; border-collapse: collapse; min-width: 360px; font-size: 13px; }\n.roi-chart-data-table th, .roi-chart-data-table td { padding: 8px 10px; text-align: left; border-bottom: 1px solid var(--border); font-variant-numeric: tabular-nums; }\n.roi-chart-data-table th { color: #ffffff; background: #1e3a8a; font-weight: 650; }\n.roi-chart-data-table tr:last-child td { border-bottom: 0; }\n.roi-caption { margin-top: 16px; padding: 10px 12px; border: 1px solid #dbeafe; border-radius: 6px; background: #eff6ff; color: #1e3a8a; font-size: 13px; }\n.roi-line-wrap { width: 100%; max-width: 920px; margin: 0 auto; }\n.roi-line-plot { width: 100%; display: block; }\n.roi-line-svg { width: 100%; height: auto; display: block; overflow: visible; }\n.roi-gridline { stroke: #cbd5e1; stroke-width: 1; }\n.roi-axis-label { fill: var(--muted); font-size: 13px; font-weight: 500; }\n.roi-series-cost { fill: none; stroke: var(--chart-1); stroke-width: 3; }\n.roi-series-value { fill: none; stroke: var(--chart-2); stroke-width: 3; }\n.roi-area-value { fill: rgba(13,148,136,.10); stroke: none; }\n.roi-end-dot-cost { fill: var(--chart-1); }\n.roi-end-dot-value { fill: var(--chart-2); }\n.roi-line-legend { margin-top: 16px; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 24px; }\n.roi-line-legend .roi-legend-row { grid-template-columns: 12px max-content max-content; }\n.roi-empty { width: 100%; min-height: 88px; display: grid; place-items: center; padding: 16px; border: 1px dashed #cbd5e1; border-radius: 6px; background: var(--tint); color: var(--muted); font-size: 13px; text-align: center; }\n.roi-safe-stack .roi-chart-cluster { grid-template-columns: 1fr; row-gap: 20px; width: min(100%, 560px); }\n.roi-safe-stack .roi-visual-box { min-height: 0; }\n.roi-safe-stack .roi-caption { margin-top: 20px; }\n.roi-table-overflow { overflow-x: auto; border: 1px solid var(--border); border-radius: 6px; }\n.roi-data-table { width: 100%; border-collapse: collapse; min-width: 720px; }\n.roi-data-table th, .roi-data-table td { padding: 11px 12px; border-bottom: 1px solid var(--border); text-align: right; font-variant-numeric: tabular-nums; }\n.roi-data-table th { color: #ffffff; background: #1e3a8a; font-size: 13px; font-weight: 650; white-space: nowrap; }\n.roi-data-table td { font-size: 14px; }\n.roi-data-table th:first-child, .roi-data-table td:first-child { text-align: left; }\n.roi-data-table tbody tr:hover { background: #fafafa; }\n.roi-data-table tbody tr:last-child td { border-bottom: 0; }\n.roi-table-note { margin-top: 16px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--tint); color: var(--muted); font-size: 13px; }\n.roi-safe-table-stack .roi-table-note { margin-top: 20px; }\n.roi-education { margin-bottom: 24px; }\n.roi-education-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }\n.roi-education-section { padding-bottom: 4px; }\n.roi-education-section p { color: #334155; margin-bottom: 12px; }\n.roi-formula { padding: 14px; border-left: 3px solid var(--primary); background: var(--tint); border-radius: 0 6px 6px 0; font-weight: 650; font-variant-numeric: tabular-nums; margin-bottom: 12px; }\n.roi-list { margin: 0 0 12px; padding-left: 22px; color: #334155; }\n.roi-list li { margin-bottom: 8px; }\n.roi-footer-space { height: 1px; }\n\n@container (max-width: 899px) {\n  .roi-workspace { grid-template-columns: 1fr; }\n}\n@container (max-width: 639px) {\n  .roi-header, .roi-toolbar, .roi-workspace { padding-left: 16px; padding-right: 16px; }\n  .roi-header { padding-top: 20px; }\n  .roi-breakdown, .roi-chart, .roi-table, .roi-education { margin-inline: 16px; }\n  .roi-fields, .roi-date-grid, .roi-result-grid, .roi-education-grid { grid-template-columns: 1fr; }\n  .roi-field-roi-mode { grid-column: auto; }\n  .roi-chart-cluster { grid-template-columns: 1fr; width: min(100%, 480px); gap: 16px; }\n  .roi-visual-box { min-height: 0; }\n  .roi-legend { justify-content: center; }\n  .roi-caption { margin-top: 16px; }\n}\n@container (max-width: 379px) {\n  .roi-toolbar .roi-button { width: 100%; }\n  .roi-panel, .roi-section { padding: 16px; }\n  .roi-legend-row { grid-template-columns: 12px minmax(0, 1fr) max-content; }\n  .roi-legend-percent { grid-column: 2 \/ -1; padding-left: 22px; }\n}\n@media (max-width: 899px) {\n  .roi-workspace { grid-template-columns: 1fr; }\n}\n@media (max-width: 639px) {\n  .roi-header, .roi-toolbar, .roi-workspace { padding-left: 16px; padding-right: 16px; }\n  .roi-header { padding-top: 20px; }\n  .roi-breakdown, .roi-chart, .roi-table, .roi-education { margin-inline: 16px; }\n  .roi-fields, .roi-date-grid, .roi-result-grid, .roi-education-grid { grid-template-columns: 1fr; }\n  .roi-field-roi-mode { grid-column: auto; }\n  .roi-chart-cluster { grid-template-columns: 1fr; width: min(100%, 480px); gap: 16px; }\n  .roi-visual-box { min-height: 0; }\n  .roi-legend { justify-content: center; }\n  .roi-caption { margin-top: 16px; }\n}\n@media (max-width: 379px) {\n  .roi-toolbar .roi-button { width: 100%; }\n  .roi-panel, .roi-section { padding: 16px; }\n  .roi-legend-row { grid-template-columns: 12px minmax(0, 1fr) max-content; }\n  .roi-legend-percent { grid-column: 2 \/ -1; padding-left: 22px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"roi-calculator\" data-calculator-root\u003e\n  \u003csection class=\"roi-header\"\u003e\n    \u003ch2\u003eReturn on Investment Calculator\u003c\/h2\u003e\n    \u003cp class=\"roi-header-copy\"\u003eMeasure total ROI, annualized ROI, gain or loss, value multiple, and sensitivity to different outcomes using one consistent model.\u003c\/p\u003e\n    \u003cdiv class=\"roi-pills\" aria-label=\"Live investment summary\"\u003e\n      \u003cspan class=\"roi-pill\"\u003eOutcome \u003cstrong class=\"roi-pill-outcome\"\u003ePositive\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"roi-pill\"\u003eValue multiple \u003cstrong class=\"roi-pill-multiple\"\u003e1.30×\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"roi-pill\"\u003eHolding period \u003cstrong class=\"roi-pill-period\"\u003e3.00 years\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"roi-pill\"\u003eBenchmark spread \u003cstrong class=\"roi-pill-spread\"\u003e1.14 pp\u003c\/strong\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv class=\"roi-toolbar\" aria-label=\"Calculator actions\"\u003e\n    \u003cbutton class=\"roi-button roi-download\" type=\"button\"\u003e\n      \u003csvg class=\"roi-excel-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath fill=\"currentColor\" d=\"M14 2H6a2 2 0 0 0-2 2v4h2V4h8v5h5v11H6v-4H4v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6Zm2 2.8L18.2 7H16V4.8ZM2.3 9.5h2.3l1.3 2.1 1.3-2.1h2.3l-2.4 3.5 2.5 3.5H7.2l-1.4-2.2-1.4 2.2H2.1l2.5-3.6-2.3-3.4Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cspan\u003eDownload Excel\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cbutton class=\"roi-button roi-reset\" type=\"button\"\u003eReset\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"roi-workspace\"\u003e\n    \u003cdiv class=\"roi-panel roi-input-panel\"\u003e\n      \u003ch3\u003eInvestment inputs\u003c\/h3\u003e\n      \u003cp class=\"roi-section-intro\"\u003eEnter the original cost and the value received at the end of the investment. Results update as you type.\u003c\/p\u003e\n      \u003cdiv class=\"roi-fields\"\u003e\n        \u003cdiv class=\"roi-field roi-field-roi-mode\"\u003e\n          \u003clabel class=\"roi-label\" for=\"roi-calc-mode\"\u003eI want to calculate\u003c\/label\u003e\n          \u003cselect class=\"roi-select\" id=\"roi-calc-mode\"\u003e\n            \u003coption value=\"roi\"\u003eROI from invested and returned amounts\u003c\/option\u003e\n            \u003coption value=\"returned\"\u003eReturned amount from invested amount and ROI\u003c\/option\u003e\n            \u003coption value=\"invested\"\u003eInvested amount from returned amount and ROI\u003c\/option\u003e\n          \u003c\/select\u003e\n          \u003cspan class=\"roi-help\"\u003eChoose the missing quantity. The other two fields become the calculation inputs.\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-field\"\u003e\n          \u003clabel class=\"roi-label\" for=\"roi-invested\"\u003eInvested amount\u003c\/label\u003e\n          \u003cinput class=\"roi-input roi-money\" id=\"roi-invested\" type=\"text\" inputmode=\"decimal\" value=\"$10,000.00\" aria-describedby=\"roi-invested-help roi-invested-error\"\u003e\n          \u003cspan class=\"roi-help\" id=\"roi-invested-help\"\u003eTotal cash committed, including directly attributable costs.\u003c\/span\u003e\n          \u003cspan class=\"roi-error\" id=\"roi-invested-error\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-field\"\u003e\n          \u003clabel class=\"roi-label\" for=\"roi-returned\"\u003eReturned amount\u003c\/label\u003e\n          \u003cinput class=\"roi-input roi-money\" id=\"roi-returned\" type=\"text\" inputmode=\"decimal\" value=\"$13,000.00\" aria-describedby=\"roi-returned-help roi-returned-error\"\u003e\n          \u003cspan class=\"roi-help\" id=\"roi-returned-help\"\u003eCash or ending value received after the investment closes.\u003c\/span\u003e\n          \u003cspan class=\"roi-error\" id=\"roi-returned-error\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-field\"\u003e\n          \u003clabel class=\"roi-label\" for=\"roi-target-roi\"\u003eROI\u003c\/label\u003e\n          \u003cinput class=\"roi-input roi-percent\" id=\"roi-target-roi\" type=\"text\" inputmode=\"decimal\" value=\"30.00%\" aria-describedby=\"roi-target-help roi-target-error\" disabled\u003e\n          \u003cspan class=\"roi-help\" id=\"roi-target-help\"\u003eUsed as an input only when solving for invested or returned amount.\u003c\/span\u003e\n          \u003cspan class=\"roi-error\" id=\"roi-target-error\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"roi-subsection\"\u003e\n        \u003ch3\u003eAnnualized return\u003c\/h3\u003e\n        \u003cdiv class=\"roi-check-row\"\u003e\n          \u003cinput class=\"roi-check\" id=\"roi-use-dates\" type=\"checkbox\" checked\u003e\n          \u003clabel class=\"roi-check-label\" for=\"roi-use-dates\"\u003eUse start and end dates\u003cspan class=\"roi-check-note\"\u003eAnnualized ROI normalizes the total return to a one-year compound rate.\u003c\/span\u003e\u003c\/label\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-date-grid\"\u003e\n          \u003cdiv class=\"roi-field\"\u003e\n            \u003clabel class=\"roi-label\" for=\"roi-start-date\"\u003eStart date\u003c\/label\u003e\n            \u003cinput class=\"roi-input\" id=\"roi-start-date\" type=\"date\" value=\"2023-01-01\" aria-describedby=\"roi-start-help roi-start-error\"\u003e\n            \u003cspan class=\"roi-help\" id=\"roi-start-help\"\u003eDate the investment begins.\u003c\/span\u003e\n            \u003cspan class=\"roi-error\" id=\"roi-start-error\"\u003e\u003c\/span\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"roi-field\"\u003e\n            \u003clabel class=\"roi-label\" for=\"roi-end-date\"\u003eEnd date\u003c\/label\u003e\n            \u003cinput class=\"roi-input\" id=\"roi-end-date\" type=\"date\" value=\"2026-01-01\" aria-describedby=\"roi-end-help roi-end-error\"\u003e\n            \u003cspan class=\"roi-help\" id=\"roi-end-help\"\u003eDate the ending value is measured.\u003c\/span\u003e\n            \u003cspan class=\"roi-error\" id=\"roi-end-error\"\u003e\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdetails class=\"roi-advanced\"\u003e\n        \u003csummary class=\"roi-summary-toggle\"\u003eComparison settings\u003c\/summary\u003e\n        \u003cdiv class=\"roi-advanced-body\"\u003e\n          \u003cdiv class=\"roi-field\"\u003e\n            \u003clabel class=\"roi-label\" for=\"roi-benchmark\"\u003eAnnual benchmark return\u003c\/label\u003e\n            \u003cinput class=\"roi-input roi-percent\" id=\"roi-benchmark\" type=\"text\" inputmode=\"decimal\" value=\"8.00%\" aria-describedby=\"roi-benchmark-help roi-benchmark-error\"\u003e\n            \u003cspan class=\"roi-help\" id=\"roi-benchmark-help\"\u003eOptional hurdle rate used only for comparison, not for the ROI formula.\u003c\/span\u003e\n            \u003cspan class=\"roi-error\" id=\"roi-benchmark-error\"\u003e\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/details\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"roi-panel roi-results-panel\"\u003e\n      \u003ch3\u003eLive results\u003c\/h3\u003e\n      \u003cdiv class=\"roi-result-primary\"\u003e\n        \u003cdiv class=\"roi-result-primary-label\"\u003eReturn on investment\u003c\/div\u003e\n        \u003cdiv class=\"roi-result-primary-value roi-output-roi\"\u003e30.00%\u003c\/div\u003e\n        \u003cp class=\"roi-result-primary-copy roi-output-interpretation\"\u003eThe investment generated a positive total return.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-result-grid\"\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eGain or loss\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-gain\"\u003e$3,000.00\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note\"\u003eReturned amount minus invested amount\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eAnnualized ROI\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-annualized\"\u003e9.14%\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note\"\u003eCompound-equivalent yearly return\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eValue multiple\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-multiple\"\u003e1.30×\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note\"\u003eReturned value divided by invested amount\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eHolding period\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-period\"\u003e3.00 years\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note roi-output-days\"\u003e1,096 calendar days\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eBenchmark spread\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-spread\"\u003e1.14 pp\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note\"\u003eAnnualized ROI minus benchmark\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-result-card\"\u003e\n          \u003cspan class=\"roi-result-label\"\u003eBreak-even returned amount\u003c\/span\u003e\n          \u003cstrong class=\"roi-result-value roi-output-breakeven\"\u003e$10,000.00\u003c\/strong\u003e\n          \u003cspan class=\"roi-result-note\"\u003eEnding value required for 0% ROI\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-live\" aria-live=\"polite\"\u003eROI is 30.00%, with a gain of $3,000.00 and annualized ROI of 9.14%.\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"roi-section roi-breakdown\"\u003e\n    \u003ch3\u003eCapital outcome breakdown\u003c\/h3\u003e\n    \u003cp class=\"roi-chart-intro roi-breakdown-intro\"\u003eThe ending value consists of recovered investment capital and investment gain.\u003c\/p\u003e\n    \u003cdiv class=\"roi-breakdown-body\"\u003e\n      \u003cdiv class=\"roi-chart-cluster\"\u003e\n        \u003cdiv class=\"roi-visual-box roi-donut-box\" aria-label=\"Capital outcome donut chart\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"roi-legend roi-donut-legend\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-chart-data-wrap\"\u003e\n        \u003ctable class=\"roi-chart-data-table\"\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eCategory\u003c\/th\u003e\n\u003cth\u003eAmount\u003c\/th\u003e\n\u003cth\u003eShare\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody class=\"roi-donut-table-body\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-caption roi-donut-caption-block\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"roi-empty roi-breakdown-empty\" hidden\u003eEnter invested and returned amounts to see the capital outcome breakdown.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"roi-section roi-chart\"\u003e\n    \u003ch3\u003eImplied value path\u003c\/h3\u003e\n    \u003cp class=\"roi-chart-intro\"\u003eThis chart compares the original cost basis with a smooth compound-equivalent path from the start value to the ending value.\u003c\/p\u003e\n    \u003cdiv class=\"roi-line-body\"\u003e\n      \u003cdiv class=\"roi-line-wrap\"\u003e\n        \u003cdiv class=\"roi-line-plot\" aria-label=\"Investment value path chart\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"roi-line-legend\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"roi-chart-data-wrap\"\u003e\n          \u003ctable class=\"roi-chart-data-table\"\u003e\n            \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSeries\u003c\/th\u003e\n\u003cth\u003eStart\u003c\/th\u003e\n\u003cth\u003eEnd\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n            \u003ctbody class=\"roi-line-table-body\"\u003e\u003c\/tbody\u003e\n          \u003c\/table\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"roi-caption roi-line-caption\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"roi-empty roi-line-empty\" hidden\u003eEnter positive invested and returned amounts plus a valid date range to see the value path.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"roi-section roi-table\"\u003e\n    \u003ch3\u003eOutcome sensitivity\u003c\/h3\u003e\n    \u003cp class=\"roi-chart-intro\"\u003eReview how lower or higher ending values change total ROI and annualized ROI while the invested amount and holding period stay constant.\u003c\/p\u003e\n    \u003cdiv class=\"roi-table-overflow\"\u003e\n      \u003ctable class=\"roi-data-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n\u003cth\u003eScenario\u003c\/th\u003e\n\u003cth\u003eReturned amount\u003c\/th\u003e\n\u003cth\u003eGain or loss\u003c\/th\u003e\n\u003cth\u003eTotal ROI\u003c\/th\u003e\n\u003cth\u003eAnnualized ROI\u003c\/th\u003e\n\u003cth\u003eValue multiple\u003c\/th\u003e\n\u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody class=\"roi-sensitivity-body\"\u003e\u003c\/tbody\u003e\n      \u003c\/table\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"roi-table-note\"\u003eSensitivity rows apply fixed percentage changes to the current returned amount. They are illustrations, not forecasts, and they do not incorporate taxes, fees, interim cash flows, or risk.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"roi-section roi-education\"\u003e\n    \u003ch2\u003eHow to use and interpret the ROI calculator\u003c\/h2\u003e\n    \u003cdiv class=\"roi-education-grid\"\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eWhat this calculator estimates\u003c\/h3\u003e\n        \u003cp\u003eReturn on investment compares the net gain or loss from an investment with the amount originally committed. It is a compact efficiency metric: a 25% ROI means the ending value exceeded the original cost by one quarter of that cost, while a negative ROI means some of the original capital was not recovered. This calculator also estimates annualized ROI, which converts the total result into a compound-equivalent yearly rate when a valid start and end date are supplied.\u003c\/p\u003e\n        \u003cdiv class=\"roi-formula\"\u003eROI = (Returned amount − Invested amount) ÷ Invested amount × 100%\u003c\/div\u003e\n        \u003cp\u003eAnnualized ROI uses the ratio of returned amount to invested amount and raises it to the inverse of the holding period in years. This makes investments with different durations easier to compare, but it assumes a smooth compound-equivalent path and does not describe the actual sequence of gains and losses.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eHow to complete each input\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eI want to calculate\u003c\/strong\u003e selects which quantity is missing. Use the default mode when you know the invested and returned amounts. Choose returned amount when you know the original investment and a target ROI. Choose invested amount when you know the ending value and the ROI achieved. The calculator disables the field it is solving so the direction of the calculation stays clear.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eInvested amount\u003c\/strong\u003e should include the original purchase price plus costs that belong directly to the investment, such as setup expenses, transaction fees, or implementation costs. Omitting relevant costs overstates ROI. The invested amount must be greater than zero because ROI uses it as the denominator.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eReturned amount\u003c\/strong\u003e is the total cash received or ending value realized. Include proceeds, distributions, or measurable benefits only when they are part of the same investment analysis. A higher returned amount increases gain, total ROI, annualized ROI, and the value multiple.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eROI\u003c\/strong\u003e becomes an input in reverse-calculation modes. Enter it as a percentage. A value below −100% is not meaningful for a nonnegative ending value because an investment cannot lose more than its entire original cost without additional liabilities.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eDates, annualization, and benchmark\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eStart date\u003c\/strong\u003e is the date capital is committed, and \u003cstrong\u003eend date\u003c\/strong\u003e is the date the returned amount is measured. The end date must be later than the start date. Clearing the date option leaves total ROI intact but removes annualized ROI, holding-period comparisons, and the implied value path.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eAnnual benchmark return\u003c\/strong\u003e is optional. It does not change ROI; it creates a comparison spread equal to annualized ROI minus the benchmark. A positive spread means the calculated annualized return is above the hurdle, while a negative spread means it is below. The benchmark should reflect the comparison relevant to the decision, and different risk levels should not be compared solely through this spread.\u003c\/p\u003e\n        \u003cp\u003eThe U.S. Securities and Exchange Commission explains why investment \u003ca href=\"https:\/\/www.investor.gov\/introduction-investing\/getting-started\/understanding-fees\" target=\"_blank\" rel=\"noopener noreferrer\"\u003efees and expenses\u003c\/a\u003e matter, while FINRA provides an overview of \u003ca href=\"https:\/\/www.finra.org\/investors\/investing\/investing-basics\/risk\" target=\"_blank\" rel=\"noopener noreferrer\"\u003einvestment risk\u003c\/a\u003e. These factors can materially affect an analysis even though they are not separate fields here.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eHow to read every result\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eTotal ROI\u003c\/strong\u003e measures gain or loss relative to cost. Zero means break-even before omitted fees or taxes. \u003cstrong\u003eGain or loss\u003c\/strong\u003e is the dollar difference between returned and invested amounts. \u003cstrong\u003eAnnualized ROI\u003c\/strong\u003e is most useful when comparing investments held for unequal periods. A high annualized figure can result from a short holding period, so confirm that the dates and ending value are realistic.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eValue multiple\u003c\/strong\u003e shows how many dollars of ending value were received for each dollar invested. A 1.30× multiple corresponds to a 30% total ROI; 1.00× is break-even; less than 1.00× indicates a loss. \u003cstrong\u003eHolding period\u003c\/strong\u003e reports both calendar days and years. \u003cstrong\u003eBenchmark spread\u003c\/strong\u003e shows the difference in percentage points between annualized ROI and the optional benchmark. \u003cstrong\u003eBreak-even returned amount\u003c\/strong\u003e equals the invested amount because that is the ending value required for 0% ROI.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eHow to interpret the charts and table\u003c\/h3\u003e\n        \u003cp\u003eThe capital outcome donut uses the same model values as the result cards. For a profitable result, it separates recovered investment capital from gain. For a loss, it separates returned capital from unrecovered capital. The visible legend and data table disclose the exact amount and share represented by each segment.\u003c\/p\u003e\n        \u003cp\u003eThe implied value path is not a forecast. It is a visualization of the compound-equivalent path that connects the starting and ending values over the selected holding period. The cost-basis line remains flat, while the value line rises or falls toward the ending amount. The sensitivity table changes only the returned amount and holds the other inputs constant, helping you see how the result responds to a range of outcomes.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"roi-education-section\"\u003e\n        \u003ch3\u003eBenefits, limitations, and common mistakes\u003c\/h3\u003e\n        \u003cp\u003eROI is popular because it is easy to calculate and compare. Its main limitation is that it compresses an investment into only a cost and an ending value. It does not capture the timing of interim cash flows, financing structure, taxes, liquidity, volatility, or the probability of achieving the outcome. For complex projects with multiple cash flows, discounted cash flow methods such as net present value or internal rate of return may be more informative.\u003c\/p\u003e\n        \u003cul class=\"roi-list\"\u003e\n          \u003cli\u003eUse consistent definitions of cost and return across alternatives.\u003c\/li\u003e\n          \u003cli\u003eDo not compare total ROI across different holding periods without checking annualized ROI.\u003c\/li\u003e\n          \u003cli\u003eInclude relevant fees and costs rather than using only the headline purchase price.\u003c\/li\u003e\n          \u003cli\u003eDo not treat the smooth chart path as actual historical performance.\u003c\/li\u003e\n          \u003cli\u003eConsider risk and cash-flow timing alongside the calculated percentage.\u003c\/li\u003e\n        \u003c\/ul\u003e\n        \u003cp\u003eFor further background, see Investor.gov’s \u003ca href=\"https:\/\/www.investor.gov\/financial-tools-calculators\/calculators\/compound-interest-calculator\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ecompound interest calculator\u003c\/a\u003e and Investopedia’s explanation of \u003ca href=\"https:\/\/www.investopedia.com\/terms\/r\/returnoninvestment.asp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ereturn on investment\u003c\/a\u003e. The calculator provides general educational estimates and is not personalized investment, tax, legal, or accounting advice.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003cdiv class=\"roi-footer-space\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909480161523,"sku":"roi","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/roi.webp?v=1783935363","url":"https:\/\/financialmodelslab.com\/products\/roi","provider":"Financial Models Lab","version":"1.0","type":"link"}