{"product_id":"eoq","title":"EOQ Calculator (Economic Order Quantity)","description":"\u003cstyle\u003e\n.eoq-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  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  box-shadow: 0 1px 2px rgba(15,23,42,.06);\n  container-type: inline-size;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  font-size: 15px;\n  line-height: 1.55;\n  margin: 0 auto;\n  max-width: 1200px;\n  overflow-wrap: anywhere;\n  padding: 24px;\n  width: 100%;\n}\n.eoq-calculator,\n.eoq-calculator *,\n.eoq-calculator *::before,\n.eoq-calculator *::after {\n  box-sizing: border-box;\n  min-width: 0;\n}\n.eoq-calculator h2,\n.eoq-calculator h3,\n.eoq-calculator p {\n  margin-top: 0;\n}\n.eoq-calculator h2 {\n  font-size: 24px;\n  font-weight: 700;\n  line-height: 1.25;\n  margin-bottom: 8px;\n}\n.eoq-calculator h3 {\n  font-size: 18px;\n  font-weight: 650;\n  line-height: 1.35;\n  margin-bottom: 12px;\n}\n.eoq-calculator a {\n  color: var(--primary);\n  font-weight: 600;\n  text-decoration-thickness: 1px;\n  text-underline-offset: 2px;\n}\n.eoq-calculator a:hover {\n  text-decoration-thickness: 2px;\n}\n.eoq-calculator button,\n.eoq-calculator input {\n  font: inherit;\n}\n.eoq-calculator button {\n  cursor: pointer;\n}\n.eoq-calculator button:focus-visible,\n.eoq-calculator input:focus-visible,\n.eoq-calculator summary:focus-visible,\n.eoq-calculator a:focus-visible {\n  outline: 3px solid rgba(29,78,216,.35);\n  outline-offset: 2px;\n}\n.eoq-header {\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  padding: 24px;\n}\n.eoq-subtitle {\n  color: var(--muted);\n  margin-bottom: 16px;\n  max-width: 760px;\n}\n.eoq-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n.eoq-pill {\n  align-items: baseline;\n  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 999px;\n  color: var(--muted);\n  display: inline-flex;\n  font-size: 13px;\n  font-weight: 500;\n  gap: 8px;\n  line-height: 1.35;\n  padding: 6px 10px;\n}\n.eoq-pill strong {\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n  font-weight: 700;\n}\n.eoq-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px;\n  margin: 16px 0;\n}\n.eoq-button {\n  align-items: center;\n  border-radius: 6px;\n  display: inline-flex;\n  font-size: 15px;\n  font-weight: 700;\n  gap: 10px;\n  justify-content: center;\n  line-height: 1.2;\n  min-height: 46px;\n  padding: 12px 18px;\n  text-align: center;\n  white-space: nowrap;\n}\n.eoq-download {\n  background: var(--accent);\n  border: 1px solid var(--accent);\n  color: #ffffff;\n}\n.eoq-download:hover,\n.eoq-download:active {\n  background: var(--accent-hover);\n  border-color: var(--accent-hover);\n}\n.eoq-reset {\n  background: var(--surface);\n  border: 1px solid #94a3b8;\n  color: var(--ink);\n}\n.eoq-reset:hover {\n  border-color: var(--ink);\n  box-shadow: 0 2px 6px rgba(15,23,42,.10);\n}\n.eoq-icon {\n  display: inline-block;\n  font-size: 18px;\n  line-height: 1;\n}\n.eoq-workspace {\n  display: grid;\n  gap: 16px;\n  grid-template-columns: 1fr;\n}\n.eoq-panel,\n.eoq-breakdown,\n.eoq-chart,\n.eoq-table-card,\n.eoq-education {\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  box-shadow: 0 1px 2px rgba(15,23,42,.04);\n  padding: 24px;\n}\n.eoq-panel-title {\n  align-items: center;\n  display: flex;\n  gap: 8px;\n  justify-content: flex-start;\n  margin-bottom: 16px;\n}\n.eoq-fields {\n  display: grid;\n  gap: 16px;\n  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\n}\n.eoq-field {\n  align-content: start;\n  display: grid;\n  gap: 8px;\n}\n.eoq-label {\n  color: var(--ink);\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 1.35;\n}\n.eoq-control-wrap {\n  position: relative;\n}\n.eoq-input {\n  background: #ffffff;\n  border: 1px solid #94a3b8;\n  border-radius: 6px;\n  color: var(--ink);\n  font-size: 15px;\n  height: 46px;\n  line-height: 1.3;\n  padding: 10px 12px;\n  width: 100%;\n}\n.eoq-input:hover {\n  border-color: #64748b;\n}\n.eoq-input[aria-invalid=\"true\"] {\n  border-color: #b91c1c;\n}\n.eoq-helper,\n.eoq-error {\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 1.45;\n  min-height: 38px;\n}\n.eoq-helper {\n  color: var(--muted);\n}\n.eoq-error {\n  color: #991b1b;\n  display: none;\n}\n.eoq-field.eoq-has-error .eoq-helper {\n  display: none;\n}\n.eoq-field.eoq-has-error .eoq-error {\n  display: block;\n}\n.eoq-formula {\n  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  margin-top: 16px;\n  padding: 12px;\n}\n.eoq-primary-result {\n  border-left: 4px solid var(--primary);\n  margin-bottom: 16px;\n  padding-left: 16px;\n}\n.eoq-primary-label {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n  margin-bottom: 4px;\n}\n.eoq-primary-value {\n  color: var(--ink);\n  font-size: 30px;\n  font-variant-numeric: tabular-nums;\n  font-weight: 700;\n  line-height: 1.2;\n}\n.eoq-primary-caption {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  margin-top: 6px;\n}\n.eoq-result-grid {\n  display: grid;\n  gap: 12px;\n  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n}\n.eoq-result-card {\n  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  padding: 16px;\n}\n.eoq-result-card span {\n  color: var(--muted);\n  display: block;\n  font-size: 13px;\n  font-weight: 600;\n  line-height: 1.35;\n  margin-bottom: 6px;\n}\n.eoq-result-card strong {\n  color: var(--ink);\n  display: block;\n  font-size: 20px;\n  font-variant-numeric: tabular-nums;\n  font-weight: 700;\n  line-height: 1.25;\n}\n.eoq-live {\n  clip: rect(0 0 0 0);\n  clip-path: inset(50%);\n  height: 1px;\n  overflow: hidden;\n  position: absolute;\n  white-space: nowrap;\n  width: 1px;\n}\n.eoq-section {\n  margin-top: 16px;\n}\n.eoq-breakdown-grid {\n  display: grid;\n  gap: 12px;\n  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n}\n.eoq-breakdown-card {\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  padding: 16px;\n}\n.eoq-breakdown-card span {\n  color: var(--muted);\n  display: block;\n  font-size: 13px;\n  font-weight: 600;\n  margin-bottom: 6px;\n}\n.eoq-breakdown-card strong {\n  display: block;\n  font-size: 20px;\n  font-variant-numeric: tabular-nums;\n  font-weight: 700;\n}\n.eoq-breakdown-card small {\n  color: var(--muted);\n  display: block;\n  font-size: 13px;\n  font-weight: 500;\n  margin-top: 6px;\n}\n.eoq-chart-head {\n  margin-bottom: 16px;\n}\n.eoq-chart-head p {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  margin-bottom: 0;\n}\n.eoq-chart-cluster {\n  align-items: center;\n  display: grid;\n  gap: 24px;\n  grid-template-columns: 1fr;\n  margin: 0 auto;\n  max-width: 960px;\n}\n.eoq-plot-wrap {\n  min-height: 300px;\n  width: 100%;\n}\n.eoq-svg {\n  display: block;\n  height: auto;\n  max-width: 100%;\n  overflow: visible;\n  width: 100%;\n}\n.eoq-legend {\n  align-content: start;\n  display: grid;\n  gap: 10px;\n  justify-content: center;\n}\n.eoq-legend-row {\n  align-items: center;\n  display: grid;\n  font-size: 13px;\n  font-weight: 600;\n  gap: 8px 12px;\n  grid-template-columns: 12px minmax(100px, auto) auto;\n  justify-content: start;\n}\n.eoq-swatch {\n  border-radius: 2px;\n  height: 12px;\n  width: 12px;\n}\n.eoq-legend-value {\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n  white-space: nowrap;\n}\n.eoq-chart-callout,\n.eoq-table-note {\n  background: var(--tint);\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  margin-top: 16px;\n  padding: 10px 12px;\n}\n.eoq-empty {\n  align-items: center;\n  background: var(--tint);\n  border: 1px dashed #94a3b8;\n  border-radius: 6px;\n  color: var(--muted);\n  display: none;\n  font-size: 13px;\n  font-weight: 600;\n  justify-content: center;\n  min-height: 90px;\n  padding: 16px;\n  text-align: center;\n}\n.eoq-chart.eoq-is-empty .eoq-chart-cluster,\n.eoq-chart.eoq-is-empty .eoq-chart-callout {\n  display: none;\n}\n.eoq-chart.eoq-is-empty .eoq-empty {\n  display: flex;\n}\n.eoq-overflow {\n  max-width: 100%;\n  overflow-x: auto;\n  overscroll-behavior-inline: contain;\n  width: 100%;\n}\n.eoq-table {\n  border-collapse: collapse;\n  font-variant-numeric: tabular-nums;\n  min-width: 760px;\n  width: 100%;\n}\n.eoq-table th,\n.eoq-table td {\n  border-bottom: 1px solid var(--border);\n  padding: 11px 12px;\n  text-align: right;\n  vertical-align: middle;\n}\n.eoq-table th {\n  background: #e8eefc;\n  color: var(--ink);\n  font-size: 13px;\n  font-weight: 700;\n  white-space: nowrap;\n}\n.eoq-table th:first-child,\n.eoq-table td:first-child {\n  text-align: left;\n}\n.eoq-table td {\n  color: var(--ink);\n  font-size: 13px;\n  font-weight: 500;\n}\n.eoq-table tbody tr:hover {\n  background: var(--tint);\n}\n.eoq-table tbody tr.eoq-optimal-row {\n  background: #eff6ff;\n  font-weight: 700;\n}\n.eoq-table-empty {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n  padding: 16px 0;\n  text-align: center;\n}\n.eoq-safe-stack .eoq-chart-cluster {\n  gap: 28px;\n  grid-template-columns: 1fr;\n}\n.eoq-safe-stack .eoq-legend {\n  justify-content: center;\n  margin-top: 0;\n}\n.eoq-safe-stack .eoq-chart-callout {\n  margin-top: 20px;\n}\n.eoq-safe-table-stack .eoq-table-note {\n  margin-top: 20px;\n}\n.eoq-education {\n  margin-top: 16px;\n}\n.eoq-education-grid {\n  display: grid;\n  gap: 24px;\n  grid-template-columns: 1fr;\n}\n.eoq-education section {\n  border-top: 1px solid var(--border);\n  padding-top: 20px;\n}\n.eoq-education section:first-child {\n  border-top: 0;\n  padding-top: 0;\n}\n.eoq-education p,\n.eoq-education li {\n  color: #334155;\n}\n.eoq-education ul {\n  margin: 0 0 16px;\n  padding-left: 22px;\n}\n.eoq-education li + li {\n  margin-top: 8px;\n}\n.eoq-equation {\n  background: var(--tint);\n  border-left: 4px solid var(--primary);\n  border-radius: 0 6px 6px 0;\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n  font-weight: 700;\n  margin: 16px 0;\n  padding: 12px 16px;\n}\n@container (min-width: 640px) {\n  .eoq-chart-cluster {\n    grid-template-columns: minmax(0, 1fr) max-content;\n  }\n  .eoq-education-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n@container (min-width: 900px) {\n  .eoq-workspace {\n    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  }\n}\n@container (max-width: 639px) {\n  .eoq-calculator {\n    padding: 12px;\n  }\n  .eoq-header,\n  .eoq-panel,\n  .eoq-breakdown,\n  .eoq-chart,\n  .eoq-table-card,\n  .eoq-education {\n    padding: 16px;\n  }\n  .eoq-toolbar {\n    align-items: stretch;\n    display: grid;\n    grid-template-columns: 1fr;\n  }\n  .eoq-button {\n    width: 100%;\n  }\n  .eoq-fields {\n    grid-template-columns: 1fr;\n  }\n  .eoq-result-grid,\n  .eoq-breakdown-grid {\n    grid-template-columns: 1fr;\n  }\n  .eoq-plot-wrap {\n    min-height: 280px;\n  }\n  .eoq-legend {\n    justify-content: center;\n  }\n  .eoq-chart-callout,\n  .eoq-table-note {\n    margin-top: 12px;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"eoq-calculator\" data-calculator-root\u003e\n  \u003csection class=\"eoq-header\"\u003e\n    \u003ch2\u003eEconomic Order Quantity Calculator\u003c\/h2\u003e\n    \u003cp class=\"eoq-subtitle\"\u003eFind the order size that balances annual ordering expense with annual inventory holding expense, then compare nearby purchasing quantities.\u003c\/p\u003e\n    \u003cdiv class=\"eoq-pills\" aria-label=\"Live calculation summary\"\u003e\n      \u003cspan class=\"eoq-pill\"\u003eEOQ \u003cstrong data-role=\"pill-eoq\"\u003e1,581 units\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"eoq-pill\"\u003eOrders per year \u003cstrong data-role=\"pill-orders\"\u003e316.23\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"eoq-pill\"\u003eRelevant cost \u003cstrong data-role=\"pill-cost\"\u003e$6,324.56\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"eoq-pill\"\u003eAverage inventory \u003cstrong data-role=\"pill-average\"\u003e790.57 units\u003c\/strong\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv class=\"eoq-toolbar\" aria-label=\"Calculator actions\"\u003e\n    \u003cbutton class=\"eoq-button eoq-download\" type=\"button\" data-role=\"download\"\u003e\u003cspan class=\"eoq-icon\" aria-hidden=\"true\"\u003e⇩\u003c\/span\u003e\u003cspan\u003eDownload Excel\u003c\/span\u003e\u003c\/button\u003e\n    \u003cbutton class=\"eoq-button eoq-reset\" type=\"button\" data-role=\"reset\"\u003e\u003cspan class=\"eoq-icon\" aria-hidden=\"true\"\u003e↺\u003c\/span\u003e\u003cspan\u003eReset\u003c\/span\u003e\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"eoq-workspace\"\u003e\n    \u003csection class=\"eoq-panel\" aria-labelledby=\"eoq-inputs-heading\"\u003e\n      \u003cdiv class=\"eoq-panel-title\"\u003e\u003ch3 id=\"eoq-inputs-heading\"\u003eInventory assumptions\u003c\/h3\u003e\u003c\/div\u003e\n      \u003cdiv class=\"eoq-fields\"\u003e\n        \u003cdiv class=\"eoq-field\" data-field=\"demand\"\u003e\n          \u003clabel class=\"eoq-label\" for=\"eoq-demand\"\u003eYearly demand\u003c\/label\u003e\n          \u003cdiv class=\"eoq-control-wrap\"\u003e\u003cinput class=\"eoq-input\" id=\"eoq-demand\" data-role=\"demand\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"500,000\" aria-describedby=\"eoq-demand-help eoq-demand-error\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"eoq-helper\" id=\"eoq-demand-help\"\u003eTotal units expected to be used or sold during one year.\u003c\/div\u003e\n          \u003cdiv class=\"eoq-error\" id=\"eoq-demand-error\" role=\"alert\"\u003eEnter a nonnegative number.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"eoq-field\" data-field=\"orderCost\"\u003e\n          \u003clabel class=\"eoq-label\" for=\"eoq-order-cost\"\u003eOrder cost\u003c\/label\u003e\n          \u003cdiv class=\"eoq-control-wrap\"\u003e\u003cinput class=\"eoq-input\" id=\"eoq-order-cost\" data-role=\"order-cost\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"$10.00\" aria-describedby=\"eoq-order-cost-help eoq-order-cost-error\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"eoq-helper\" id=\"eoq-order-cost-help\"\u003eFixed administrative, receiving, freight setup, and processing cost per purchase order.\u003c\/div\u003e\n          \u003cdiv class=\"eoq-error\" id=\"eoq-order-cost-error\" role=\"alert\"\u003eEnter a nonnegative dollar amount.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"eoq-field\" data-field=\"holdingCost\"\u003e\n          \u003clabel class=\"eoq-label\" for=\"eoq-holding-cost\"\u003eYearly cost of holding one unit\u003c\/label\u003e\n          \u003cdiv class=\"eoq-control-wrap\"\u003e\u003cinput class=\"eoq-input\" id=\"eoq-holding-cost\" data-role=\"holding-cost\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"$4.00\" aria-describedby=\"eoq-holding-cost-help eoq-holding-cost-error\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"eoq-helper\" id=\"eoq-holding-cost-help\"\u003eAnnual storage, capital, insurance, shrinkage, and obsolescence cost for one unit.\u003c\/div\u003e\n          \u003cdiv class=\"eoq-error\" id=\"eoq-holding-cost-error\" role=\"alert\"\u003eEnter a positive amount when demand and order cost are above zero.\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"eoq-formula\"\u003eModel: EOQ = √(2 × yearly demand × order cost ÷ annual holding cost per unit)\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"eoq-panel\" aria-labelledby=\"eoq-results-heading\"\u003e\n      \u003cdiv class=\"eoq-panel-title\"\u003e\u003ch3 id=\"eoq-results-heading\"\u003eLive results\u003c\/h3\u003e\u003c\/div\u003e\n      \u003cdiv class=\"eoq-primary-result\"\u003e\n        \u003cdiv class=\"eoq-primary-label\"\u003eEconomic order quantity\u003c\/div\u003e\n        \u003cdiv class=\"eoq-primary-value\" data-role=\"primary-eoq\"\u003e1,581.14 units\u003c\/div\u003e\n        \u003cdiv class=\"eoq-primary-caption\" data-role=\"primary-caption\"\u003eOrder about 1,581 units at a time under the constant-demand EOQ assumptions.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"eoq-result-grid\"\u003e\n        \u003cdiv class=\"eoq-result-card\"\u003e\n\u003cspan\u003eOrders per year\u003c\/span\u003e\u003cstrong data-role=\"orders\"\u003e316.23\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"eoq-result-card\"\u003e\n\u003cspan\u003eDays between orders\u003c\/span\u003e\u003cstrong data-role=\"cycle-days\"\u003e1.15\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"eoq-result-card\"\u003e\n\u003cspan\u003eAverage inventory\u003c\/span\u003e\u003cstrong data-role=\"average-inventory\"\u003e790.57\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"eoq-result-card\"\u003e\n\u003cspan\u003eAnnual relevant cost\u003c\/span\u003e\u003cstrong data-role=\"relevant-cost\"\u003e$6,324.56\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"eoq-live\" aria-live=\"polite\" aria-atomic=\"true\" data-role=\"live-summary\"\u003e\u003c\/div\u003e\n    \u003c\/section\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"eoq-breakdown eoq-section\" aria-labelledby=\"eoq-breakdown-heading\"\u003e\n    \u003ch3 id=\"eoq-breakdown-heading\"\u003eCost balance at the optimal quantity\u003c\/h3\u003e\n    \u003cdiv class=\"eoq-breakdown-grid\"\u003e\n      \u003cdiv class=\"eoq-breakdown-card\"\u003e\n\u003cspan\u003eAnnual ordering cost\u003c\/span\u003e\u003cstrong data-role=\"annual-ordering\"\u003e$3,162.28\u003c\/strong\u003e\u003csmall data-role=\"ordering-note\"\u003e316.23 orders × $10.00 per order\u003c\/small\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"eoq-breakdown-card\"\u003e\n\u003cspan\u003eAnnual holding cost\u003c\/span\u003e\u003cstrong data-role=\"annual-holding\"\u003e$3,162.28\u003c\/strong\u003e\u003csmall data-role=\"holding-note\"\u003e790.57 average units × $4.00 per unit-year\u003c\/small\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"eoq-breakdown-card\"\u003e\n\u003cspan\u003eRelevant cost per demanded unit\u003c\/span\u003e\u003cstrong data-role=\"cost-per-unit\"\u003e$0.01\u003c\/strong\u003e\u003csmall\u003eOrdering plus holding cost divided by yearly demand\u003c\/small\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"eoq-breakdown-card\"\u003e\n\u003cspan\u003eInventory turns implied by EOQ\u003c\/span\u003e\u003cstrong data-role=\"inventory-turns\"\u003e632.46×\u003c\/strong\u003e\u003csmall\u003eYearly demand divided by average inventory\u003c\/small\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"eoq-chart eoq-section\" aria-labelledby=\"eoq-chart-heading\" data-role=\"chart-card\"\u003e\n    \u003cdiv class=\"eoq-chart-head\"\u003e\n      \u003ch3 id=\"eoq-chart-heading\"\u003eHow order quantity changes annual inventory cost\u003c\/h3\u003e\n      \u003cp data-role=\"chart-intro\"\u003eOrdering cost falls as batch size rises, while holding cost rises. Their sum reaches its minimum near the EOQ.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eoq-empty\" data-role=\"chart-empty\"\u003eEnter positive demand, order cost, and holding cost to see the cost curve.\u003c\/div\u003e\n    \u003cdiv class=\"eoq-chart-cluster\" data-role=\"chart-cluster\"\u003e\n      \u003cdiv class=\"eoq-plot-wrap\" data-role=\"plot-wrap\"\u003e\u003csvg class=\"eoq-svg\" data-role=\"chart-svg\" role=\"img\" aria-label=\"Annual ordering, holding, and total relevant cost by order quantity\"\u003e\u003c\/svg\u003e\u003c\/div\u003e\n      \u003cdiv class=\"eoq-legend\" data-role=\"chart-legend\" aria-label=\"Chart legend\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eoq-chart-callout\" data-role=\"chart-caption\"\u003eAt EOQ, annual ordering and holding costs are equal, which marks the minimum of the combined relevant-cost curve.\u003c\/div\u003e\n    \u003cdiv class=\"eoq-live\" data-role=\"chart-summary\"\u003eOrdering cost $3,162.28; holding cost $3,162.28; total relevant cost $6,324.56 at 1,581.14 units.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"eoq-table-card eoq-section\" aria-labelledby=\"eoq-table-heading\" data-role=\"table-card\"\u003e\n    \u003ch3 id=\"eoq-table-heading\"\u003eOrder-quantity comparison\u003c\/h3\u003e\n    \u003cdiv class=\"eoq-overflow\" data-role=\"table-wrap\"\u003e\n      \u003ctable class=\"eoq-table\"\u003e\n        \u003cthead\u003e\u003ctr\u003e\n\u003cth scope=\"col\"\u003eQuantity vs. EOQ\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eOrder quantity\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eOrders\/year\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eOrdering cost\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eHolding cost\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eRelevant cost\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eCost above minimum\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n        \u003ctbody data-role=\"scenario-body\"\u003e\u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003cdiv class=\"eoq-table-empty\" data-role=\"table-empty\"\u003eEnter positive assumptions to build the comparison table.\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eoq-table-note\" data-role=\"table-note\"\u003eThe comparison excludes purchase cost because a constant unit purchase price does not change the classical EOQ optimum. Quantity discounts should be evaluated separately.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"eoq-education\"\u003e\n    \u003ch2\u003eHow to use and interpret the EOQ model\u003c\/h2\u003e\n    \u003cdiv class=\"eoq-education-grid\"\u003e\n      \u003csection\u003e\n        \u003ch3\u003eWhat does this calculator estimate?\u003c\/h3\u003e\n        \u003cp\u003eEconomic order quantity, or EOQ, estimates the replenishment batch size that minimizes two recurring inventory expenses: the fixed cost of placing orders and the annual cost of carrying units in stock. Smaller orders reduce average inventory but create more purchase orders. Larger orders reduce ordering frequency but keep more cash and physical stock tied up. The EOQ is the mathematical balance point between those opposing costs.\u003c\/p\u003e\n        \u003cp\u003eThe calculator starts with a reference-style example of 500,000 units of yearly demand, a $10 fixed order cost, and a $4 annual holding cost per unit. Those assumptions produce an EOQ of about 1,581 units. Replace them with costs for one specific SKU, component, or raw material. Mixing several products with different demand patterns or carrying costs can make the result misleading.\u003c\/p\u003e\n      \u003c\/section\u003e\n      \u003csection\u003e\n        \u003ch3\u003eHow should each input be entered?\u003c\/h3\u003e\n        \u003cul\u003e\n          \u003cli\u003e\n\u003cstrong\u003eYearly demand\u003c\/strong\u003e is the expected annual number of units consumed or sold. Use a normalized twelve-month forecast, not revenue and not the value of inventory. Higher demand increases EOQ because more units must move through the system.\u003c\/li\u003e\n          \u003cli\u003e\n\u003cstrong\u003eOrder cost\u003c\/strong\u003e is the fixed cost incurred each time an order is placed, regardless of batch size. It can include buyer time, approvals, supplier setup, receiving, inspection, and fixed freight charges. Higher order cost favors fewer, larger orders and therefore raises EOQ.\u003c\/li\u003e\n          \u003cli\u003e\n\u003cstrong\u003eYearly cost of holding one unit\u003c\/strong\u003e is the annual carrying cost for one unit. Include warehouse space, insurance, handling, shrinkage, obsolescence, deterioration, and the financing or opportunity cost of cash tied up in stock. Higher holding cost makes inventory more expensive and lowers EOQ.\u003c\/li\u003e\n        \u003c\/ul\u003e\n        \u003cp\u003eAll three inputs are required for a meaningful optimum. Zero demand or zero ordering cost creates a boundary case rather than a normal EOQ decision. A zero holding cost means the classical formula has no finite optimum, because it would never penalize larger batches.\u003c\/p\u003e\n      \u003c\/section\u003e\n      \u003csection\u003e\n        \u003ch3\u003eHow does the formula work?\u003c\/h3\u003e\n        \u003cdiv class=\"eoq-equation\"\u003eEOQ = √((2 × D × S) ÷ H)\u003c\/div\u003e\n        \u003cp\u003eIn the formula, D is annual demand, S is the fixed cost per order, and H is the annual holding cost per unit. Annual ordering cost equals D ÷ Q × S, where Q is the selected order quantity. Annual holding cost equals Q ÷ 2 × H because the classical model assumes inventory falls evenly from Q units to zero, making average inventory Q ÷ 2.\u003c\/p\u003e\n        \u003cp\u003eAt the EOQ, annual ordering cost and annual holding cost are equal. That equality is a useful cross-check: if the two values shown in the cost balance differ materially, the assumptions or formula implementation should be reviewed. The combined relevant cost is the sum of those two expenses. Purchase cost is excluded from the optimization when unit price stays constant because the same annual demand is purchased regardless of batch size.\u003c\/p\u003e\n      \u003c\/section\u003e\n      \u003csection\u003e\n        \u003ch3\u003eWhat do the results mean?\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eEconomic order quantity\u003c\/strong\u003e is the recommended theoretical batch size. Operations may round it to a case pack, pallet, container, minimum order quantity, or supplier production multiple. Compare the rounded quantity with the table rather than assuming the exact decimal result is operationally possible.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eOrders per year\u003c\/strong\u003e is annual demand divided by EOQ. \u003cstrong\u003eDays between orders\u003c\/strong\u003e spreads those orders across 365 days and is a planning interval, not a reorder trigger. \u003cstrong\u003eAverage inventory\u003c\/strong\u003e is EOQ divided by two under the no-safety-stock assumption. \u003cstrong\u003eAnnual relevant cost\u003c\/strong\u003e combines ordering and holding costs at the optimum. The cost-per-demanded-unit metric makes that recurring inventory overhead easier to compare across SKUs, while implied inventory turns show how rapidly average stock cycles through demand.\u003c\/p\u003e\n      \u003c\/section\u003e\n      \u003csection\u003e\n        \u003ch3\u003eHow should the chart and table be read?\u003c\/h3\u003e\n        \u003cp\u003eThe blue ordering-cost line slopes downward because larger orders reduce the number of purchase orders. The teal holding-cost line slopes upward because larger batches increase average inventory. The purple total line combines both effects and reaches its low point around the EOQ. The legend reports each cost at the current optimum, and the accessible summary uses the same calculated data.\u003c\/p\u003e\n        \u003cp\u003eThe comparison table tests quantities from 25% to 200% of EOQ. “Cost above minimum” shows the annual penalty for choosing a different batch size. EOQ cost curves are often relatively flat near the minimum, so a practical pack size close to EOQ may add little cost. Far smaller or larger quantities usually create a more visible penalty.\u003c\/p\u003e\n      \u003c\/section\u003e\n      \u003csection\u003e\n        \u003ch3\u003eWhat assumptions and limitations matter?\u003c\/h3\u003e\n        \u003cp\u003eThe classical model assumes stable demand, immediate replenishment, no stockouts, constant ordering and holding costs, and no quantity discounts. Seasonal demand, uncertain supplier lead time, capacity constraints, perishable goods, or service-level targets require additional planning. Safety stock and reorder point answer when to order; EOQ answers how much to order. They are related but not interchangeable.\u003c\/p\u003e\n        \u003cp\u003eUse the output as a structured baseline and test it against supplier terms, warehouse capacity, cash-flow limits, and forecast error. Recalculate when demand, freight, labor, interest rates, storage fees, or obsolescence risk changes. For additional background, review the \u003ca href=\"https:\/\/openstax.org\/books\/principles-of-finance-2e\/pages\/19-5-inventory-management\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOpenStax inventory management overview\u003c\/a\u003e, the \u003ca href=\"https:\/\/www.investopedia.com\/terms\/e\/economicorderquantity.asp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eInvestopedia EOQ explanation\u003c\/a\u003e, and the \u003ca href=\"https:\/\/www.sba.gov\/business-guide\/manage-your-business\/manage-your-finances\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eU.S. Small Business Administration finance guidance\u003c\/a\u003e.\u003c\/p\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909479211251,"sku":"eoq","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/eoq.webp?v=1783935349","url":"https:\/\/financialmodelslab.com\/products\/eoq","provider":"Financial Models Lab","version":"1.0","type":"link"}