{"id":25647,"date":"2026-07-02T15:36:10","date_gmt":"2026-07-02T13:36:10","guid":{"rendered":"https:\/\/shop.stagnoligears.com\/?post_type=centro-tecnico&#038;p=25647"},"modified":"2026-07-10T13:48:55","modified_gmt":"2026-07-10T11:48:55","slug":"belt-length-and-transmission-geometry-calculator","status":"publish","type":"centro-tecnico","link":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/","title":{"rendered":"Belt length and transmission geometry calculator"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <meta name=\"description\" content=\"Calculate the belt length, transmission ratio and wrap angles of a two-pulley drive, starting from the pulley diameters and the center distance.\" \/>\n  <title>Belt length and transmission geometry calculator<\/title>\n\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\" \/>\n\n  <!-- KaTeX for formula rendering -->\n  <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.9\/dist\/katex.min.css\" crossorigin=\"anonymous\" \/>\n  <script defer src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.9\/dist\/katex.min.js\" crossorigin=\"anonymous\"><\/script>\n\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --green:        #1a6b3c;\n      --green-dark:   #0f4a28;\n      --green-mid:    #2d8a55;\n      --green-light:  #e8f4ed;\n      --green-xlight: #f2faf5;\n      --amber:        #b45309;\n      --amber-light:  #fef3c7;\n      --red:          #b91c1c;\n      --bg:           #ffffff;\n      --bg-soft:      #f8f9fa;\n      --bg-muted:     #f1f3f5;\n      --border:       #e5e7eb;\n      --border-mid:   #d1d5db;\n      --text-primary:   #111827;\n      --text-secondary: #4b5563;\n      --text-muted:     #9ca3af;\n      --gray-650:       #4b5563;\n      --radius-sm: 6px;\n      --radius-md: 8px;\n\n    }\n\n    body { min-height: 100vh; padding: 40px 28px 64px;       \n      font-family: 'Inter', sans-serif;\n      font-size: 14px;\n      letter-spacing: 0.02em;\n      color: var(--text-primary);}\n\n    .article__title {\n      font-size: 22px;\n      font-weight: 700;\n      color: var(--text-primary);\n      line-height: 1.3;\n      margin-bottom: 8px;\n    }\n\n    .article__subtitle {\n      font-size: 14px;\n      color: var(--text-secondary);\n      line-height: 1.75;\n      margin-bottom: 24px;\n    }\n\n    \/* \u2500\u2500 Shell \u2500\u2500 *\/\n    .ci-host { display: flex; flex-direction: column; gap: 14px; margin-top: 4px; }\n\n    \/* \u2500\u2500 Mode tabs \u2500\u2500 *\/\n    .ci-tabs {\n      display: inline-flex;\n      gap: 4px;\n      padding: 4px;\n      background: var(--bg-soft);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n      align-self: flex-start;\n    }\n    .ci-tab {\n      display: inline-flex;\n      align-items: center;\n      gap: 7px;\n      border: none;\n      background: none;\n      cursor: pointer;\n      padding: 8px 16px;\n      border-radius: var(--radius-sm);\n      font-family: inherit;\n      font-size: 13.5px;\n      font-weight: 600;\n      color: var(--text-secondary);\n      transition: color 0.15s, background 0.15s, box-shadow 0.15s;\n    }\n    .ci-tab:hover { color: var(--text-primary); }\n    .ci-tab--active {\n      background: var(--green);\n      color: #fff;\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n    }\n\n    .ci-tab-blurb {\n      margin: 0;\n      max-width: 820px;\n      font-size: 13px;\n      line-height: 1.55;\n      color: var(--text-secondary);\n    }\n\n    \/* \u2500\u2500 Unit selector \u2500\u2500 *\/\n    .ci-unit-row {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 10px;\n    }\n    .ci-unit-label { font-size: 13px; font-weight: 500; color: var(--text-secondary); }\n    .ci-unit-seg {\n      display: inline-flex;\n      border: 1px solid var(--border-mid);\n      border-radius: var(--radius-sm);\n      overflow: hidden;\n    }\n    .ci-unit-btn {\n      border: none;\n      background: var(--bg);\n      cursor: pointer;\n      padding: 6px 13px;\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 13px;\n      font-weight: 500;\n      color: var(--text-secondary);\n      border-left: 1px solid var(--border-mid);\n      transition: background 0.15s, color 0.15s;\n    }\n    .ci-unit-btn:first-child { border-left: none; }\n    .ci-unit-btn:hover { background: var(--bg-soft); }\n    .ci-unit-btn--active { background: var(--green); color: #fff; }\n\n    .ci-layout {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n      gap: 22px;\n      align-items: stretch;\n    }\n\n    .ci-card {\n      background: var(--bg);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n    }\n\n    .ci-params {\n      padding: 22px 22px 20px;\n      display: flex;\n      flex-direction: column;\n      gap: 18px;\n    }\n    .ci-params-head { display: flex; align-items: center; justify-content: space-between; }\n    .ci-params-title {\n      font-size: 16px;\n      font-weight: 700;\n      color: var(--text-primary);\n      letter-spacing: -0.01em;\n    }\n\n    .ci-reset-btn {\n      display: inline-flex;\n      align-items: center;\n      gap: 5px;\n      background: none;\n      border: none;\n      cursor: pointer;\n      color: var(--text-secondary);\n      font-family: inherit;\n      font-size: 12.5px;\n      font-weight: 500;\n      padding: 4px 8px;\n      border-radius: var(--radius-sm);\n      transition: color 0.15s, background 0.15s;\n    }\n    .ci-reset-btn:hover { color: var(--text-primary); background: var(--bg-soft); }\n\n    .ci-field { display: flex; flex-direction: column; gap: 6px; cursor: auto; }\n    .ci-field-head {\n      display: flex;\n      align-items: baseline;\n      justify-content: space-between;\n      gap: 8px;\n    }\n    .ci-field-label { font-size: 13px; font-weight: 500; color: var(--text-secondary); }\n    .ci-field-hint  { font-size: 11px; color: var(--gray-650); flex-shrink: 0; }\n\n    .ci-field-input-wrap { position: relative; display: flex; align-items: center; }\n\n    .ci-field-input {\n      width: 100%;\n      padding: 10px 50px 10px 13px;\n      border: 1px solid var(--border-mid);\n      border-radius: var(--radius-sm);\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 15px;\n      font-weight: 500;\n      color: var(--text-primary);\n      background: var(--bg);\n      outline: none;\n      transition: border-color 0.15s, box-shadow 0.15s;\n      -moz-appearance: textfield;\n    }\n    .ci-field-input::-webkit-outer-spin-button,\n    .ci-field-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n    .ci-field-input:hover  { border-color: var(--green-mid); }\n    .ci-field-input:focus  { border-color: var(--green); box-shadow: 0 0 0 3px rgba(26,107,60,.15); }\n    .ci-field-input--invalid { border-color: #dc2626; }\n    .ci-field-input--invalid:focus { border-color: #dc2626; box-shadow: 0 0 0 3px rgba(220,38,38,.15); }\n\n    .ci-field-error { font-size: 11.5px; color: #dc2626; line-height: 1.4; }\n\n    .ci-field-suffix {\n      position: absolute;\n      right: 12px;\n      font-size: 12px;\n      color: var(--gray-650);\n      pointer-events: none;\n      user-select: none;\n    }\n\n    .ci-results { display: flex; flex-direction: column; gap: 14px; }\n\n    .ci-readouts { padding: 6px 22px 12px; flex: 1; }\n    .ci-readout {\n      display: flex;\n      align-items: baseline;\n      justify-content: space-between;\n      padding: 11px 0;\n      border-bottom: 1px solid var(--border);\n      gap: 12px;\n    }\n    .ci-readout:last-child { border-bottom: none; }\n    .ci-readout--big { padding: 18px 0 20px; }\n    .ci-readout-label { font-size: 12px; font-weight: 500; color: var(--text-secondary); line-height: 1.4; }\n    .ci-readout--big .ci-readout-label {\n      font-size: 12px;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n    }\n    .ci-readout-val-wrap { display: flex; align-items: baseline; gap: 5px; flex-shrink: 0; }\n    .ci-readout-val {\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 17px;\n      font-weight: 600;\n      color: var(--text-primary);\n      font-variant-numeric: tabular-nums;\n      letter-spacing: -0.01em;\n      line-height: 1;\n    }\n    .ci-readout--big .ci-readout-val { font-size: 42px; font-weight: 700; letter-spacing: -0.03em; }\n    .ci-readout-val--accent { color: var(--green); }\n    .ci-readout-unit { font-size: 13px; color: var(--gray-650); font-weight: 500; }\n    .ci-readout--big .ci-readout-unit { font-size: 15px; }\n\n    .ci-warn {\n      display: flex;\n      align-items: flex-start;\n      gap: 8px;\n      padding: 10px 14px;\n      background: #fffbeb;\n      border: 1px solid #f59e0b;\n      border-radius: var(--radius-sm);\n      font-size: 12.5px;\n      color: #78350f;\n      line-height: 1.5;\n    }\n    .ci-warn svg { flex-shrink: 0; margin-top: 1px; }\n\n    .ci-formula-bar {\n      display: flex;\n      align-items: center;\n      gap: 16px;\n      flex-wrap: wrap;\n      padding: 14px 20px;\n      background: var(--bg-soft);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n    }\n    .ci-formula-tag {\n      font-size: 10px;\n      font-weight: 700;\n      letter-spacing: 0.1em;\n      text-transform: uppercase;\n      color: var(--gray-650);\n      flex-shrink: 0;\n    }\n    .ci-formula-text {\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 15px;\n      color: var(--text-primary);\n      font-weight: 500;\n    }\n    .ci-formula-spacer { flex: 1; min-width: 0; }\n\n    .ci-formula-toggle {\n      display: inline-flex;\n      align-items: center;\n      gap: 5px;\n      background: none;\n      border: 1px solid var(--green-light);\n      border-radius: var(--radius-sm);\n      cursor: pointer;\n      color: var(--green);\n      font-family: inherit;\n      font-size: 12.5px;\n      font-weight: 600;\n      padding: 5px 10px;\n      transition: background 0.15s, border-color 0.15s;\n      flex-shrink: 0;\n    }\n    .ci-formula-toggle:hover { background: var(--green-xlight); border-color: var(--green-mid); }\n    .ci-formula-toggle svg { transition: transform 0.2s; }\n    .ci-formula-toggle--open svg { transform: rotate(180deg); }\n\n    .ci-formula-panel { border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }\n\n    .ci-ftable { width: 100%; border-collapse: collapse; font-size: 12.5px; }\n    .ci-fth {\n      padding: 9px 16px;\n      background: var(--green);\n      color: #fff;\n      font-weight: 600;\n      font-size: 11px;\n      letter-spacing: 0.04em;\n      text-align: left;\n    }\n    .ci-fth--right { text-align: right; }\n    .ci-tr--alt { background: var(--bg-soft); }\n    .ci-ftd { padding: 9px 16px; border-top: 1px solid var(--border); color: var(--text-secondary); vertical-align: middle; }\n    .ci-ftd--val {\n      text-align: right;\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-weight: 600;\n      color: var(--green);\n      white-space: nowrap;\n    }\n\n    \/* \u2500\u2500 SVG pulley diagram \u2500\u2500 *\/\n    .ci-diagram { padding: 12px 14px 6px; }\n    .ci-svg { width: 100%; height: auto; display: block; }\n    .ci-svg-pulley { fill: var(--bg-soft); stroke: var(--text-secondary); stroke-width: 2; }\n    .ci-svg-dot { fill: var(--text-secondary); }\n    .ci-svg-diam-line { stroke: var(--text-secondary); stroke-width: 1.2; }\n    .ci-svg-diam-label {\n      fill: var(--text-primary);\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 18px;\n      font-weight: 700;\n    }\n    .ci-svg-belt { fill: none; stroke: var(--green); stroke-width: 5; stroke-linejoin: round; }\n    .ci-svg-center-line { stroke: var(--text-muted); stroke-width: 1; stroke-dasharray: 4 4; }\n    .ci-svg-label--l {\n      fill: var(--green);\n      font-weight: 600;\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 16px;\n    }\n\n    .hidden { display: none; }\n\n    @media (max-width: 900px) {\n      body { padding: 28px 16px 48px; }\n      .ci-layout { grid-template-columns: 1fr; }\n    }\n    @media (max-width: 540px) {\n      .ci-readout--big .ci-readout-val { font-size: 30px; }\n      .ci-unit-row { flex-direction: column; align-items: flex-start; gap: 6px; }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"WebApplication\",\n  \"@id\": \"#calc-belt-length\",\n  \"name\": \"Belt length and transmission geometry calculator\",\n  \"description\": \"Calculate the belt length, transmission ratio and wrap angles of a two-pulley drive, starting from the pulley diameters and the center distance.\",\n  \"applicationCategory\": \"UtilitiesApplication\",\n  \"operatingSystem\": \"Web\",\n  \"browserRequirements\": \"Requires JavaScript\",\n  \"inLanguage\": \"en\",\n  \"isAccessibleForFree\": true,\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"0\",\n    \"priceCurrency\": \"EUR\"\n  },\n  \"featureList\": [\n    \"Belt length\",\n    \"Transmission ratio\",\n    \"Pulley wrap angle\"\n  ],\n  \"about\": [\n    {\n      \"@type\": \"Thing\",\n      \"name\": \"Belt length\"\n    },\n    {\n      \"@type\": \"Thing\",\n      \"name\": \"Transmission ratio\"\n    },\n    {\n      \"@type\": \"Thing\",\n      \"name\": \"Wrap angle\"\n    }\n  ]\n}\n  <\/script>\n\n  <h1 class=\"article__title\">Belt length calculator<\/h1>\n  <p class=\"article__subtitle\">\n    Calculate the belt length, the transmission ratio and the wrap angles of a\n    two-pulley drive, starting from the pulley diameters and the center distance.\n  <\/p>\n\n  <div class=\"ci-host\">\n\n    <!-- \u2500\u2500 Mode tabs \u2500\u2500 -->\n    <div class=\"ci-tabs\" role=\"tablist\" id=\"tabs\"><\/div>\n\n    <p class=\"ci-tab-blurb\" id=\"tab-blurb\"><\/p>\n\n    <div class=\"ci-layout\">\n\n      <!-- \u2500\u2500 Left: Parameters \u2500\u2500 -->\n      <section class=\"ci-card ci-params\">\n        <div class=\"ci-params-head\">\n          <h2 class=\"ci-params-title\" id=\"parameters\">Parameters<\/h2>\n          <button class=\"ci-reset-btn\" id=\"btn-reset\" type=\"button\">\n            <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"1 4 1 10 7 10\"><\/polyline>\n              <path d=\"M3.51 15a9 9 0 1 0 .49-5.66\"><\/path>\n            <\/svg>\n            Reset\n          <\/button>\n        <\/div>\n\n        <!-- unit selector -->\n        <div class=\"ci-unit-row\">\n          <span class=\"ci-unit-label\">Units<\/span>\n          <div class=\"ci-unit-seg\" role=\"group\" aria-label=\"Units\" id=\"unit-seg\"><\/div>\n        <\/div>\n\n        <!-- Dm -->\n        <label class=\"ci-field\">\n          <div class=\"ci-field-head\">\n            <span class=\"ci-field-label\">Driving pulley diameter<\/span>\n            <span class=\"ci-field-hint\" id=\"hint-dm\">d (driving)<\/span>\n          <\/div>\n          <div class=\"ci-field-input-wrap\">\n            <input class=\"ci-field-input\" id=\"input-dm\" type=\"number\" step=\"1\" min=\"0\" placeholder=\"\u2014\" \/>\n            <span class=\"ci-field-suffix suffix\">mm<\/span>\n          <\/div>\n        <\/label>\n\n        <!-- Dc -->\n        <label class=\"ci-field\">\n          <div class=\"ci-field-head\">\n            <span class=\"ci-field-label\">Driven pulley diameter<\/span>\n            <span class=\"ci-field-hint\" id=\"hint-dc\">D (driven)<\/span>\n          <\/div>\n          <div class=\"ci-field-input-wrap\">\n            <input class=\"ci-field-input\" id=\"input-dc\" type=\"number\" step=\"1\" min=\"0\" placeholder=\"\u2014\" \/>\n            <span class=\"ci-field-suffix suffix\">mm<\/span>\n          <\/div>\n          <span class=\"ci-field-error hidden\" id=\"err-dc\"><\/span>\n        <\/label>\n\n        <!-- Center distance -->\n        <label class=\"ci-field\">\n          <div class=\"ci-field-head\">\n            <span class=\"ci-field-label\">Center distance<\/span>\n            <span class=\"ci-field-hint\">C<\/span>\n          <\/div>\n          <div class=\"ci-field-input-wrap\">\n            <input class=\"ci-field-input\" id=\"input-a\" type=\"number\" step=\"1\" min=\"0\" placeholder=\"\u2014\" \/>\n            <span class=\"ci-field-suffix suffix\">mm<\/span>\n          <\/div>\n        <\/label>\n      <\/section>\n\n      <!-- \u2500\u2500 Right: Diagram + Results \u2500\u2500 -->\n      <section class=\"ci-results\">\n        <div class=\"ci-card ci-diagram\" id=\"diagram\"><\/div>\n\n        <div class=\"ci-card ci-readouts\">\n          <div class=\"ci-readout ci-readout--big\">\n            <span class=\"ci-readout-label\">Belt length&nbsp;&nbsp;L<\/span>\n            <div class=\"ci-readout-val-wrap\">\n              <span class=\"ci-readout-val ci-readout-val--accent\" id=\"out-L\">\u2014<\/span>\n              <span class=\"ci-readout-unit unit-out\">mm<\/span>\n            <\/div>\n          <\/div>\n          <div class=\"ci-readout\">\n            <span class=\"ci-readout-label\">Transmission ratio&nbsp;&nbsp;i<\/span>\n            <div class=\"ci-readout-val-wrap\">\n              <span class=\"ci-readout-val\" id=\"out-i\">\u2014<\/span>\n            <\/div>\n          <\/div>\n          <div class=\"ci-readout\">\n            <span class=\"ci-readout-label\">Small pulley wrap&nbsp;&nbsp;\u03b1<\/span>\n            <div class=\"ci-readout-val-wrap\">\n              <span class=\"ci-readout-val\" id=\"out-a\">\u2014<\/span>\n              <span class=\"ci-readout-unit\">\u00b0<\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div id=\"warnings\"><\/div>\n      <\/section>\n    <\/div>\n\n    <!-- \u2500\u2500 Formula bar \u2500\u2500 -->\n    <div class=\"ci-formula-bar\">\n      <span class=\"ci-formula-tag\">Formula<\/span>\n      <span class=\"ci-formula-text\" id=\"formula-main\"><\/span>\n      <div class=\"ci-formula-spacer\"><\/div>\n      <button class=\"ci-formula-toggle\" id=\"btn-formulas\" type=\"button\">\n        <span id=\"formula-toggle-label\">All formulas<\/span>\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n        <\/svg>\n      <\/button>\n    <\/div>\n\n    <div class=\"ci-formula-panel hidden\" id=\"formula-panel\">\n      <table class=\"ci-ftable\">\n        <thead>\n          <tr>\n            <th class=\"ci-fth\">Quantity<\/th>\n            <th class=\"ci-fth\">Formula<\/th>\n            <th class=\"ci-fth ci-fth--right\">Calculated value<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody id=\"formula-rows\"><\/tbody>\n      <\/table>\n    <\/div>\n\n  <\/div>\n\n  <script>\n    \/\/ \u2500\u2500 SVG icons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    const ICON_TREND_DOWN = `<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"><\/polyline><polyline points=\"17 18 23 18 23 12\"><\/polyline><\/svg>`;\n    const ICON_TREND_UP   = `<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"><\/polyline><polyline points=\"17 6 23 6 23 12\"><\/polyline><\/svg>`;\n    const ICON_WARN = `<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"><\/path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"><\/line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line><\/svg>`;\n\n    \/\/ \u2500\u2500 Units \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    const UNITS = [\n      { id: 'mm', label: 'mm', toMm: 1 },\n      { id: 'cm', label: 'cm', toMm: 10 },\n      { id: 'm',  label: 'm',  toMm: 1000 },\n    ];\n\n    \/\/ \u2500\u2500 Tabs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    const TABS = {\n      reduction: {\n        id: 'reduction',\n        label: 'Reduction',\n        icon: ICON_TREND_DOWN,\n        blurb: 'The driven pulley is larger than the driving one: output speed decreases and torque increases. Typical uses: conveyor belts, mixers, winches, reducers for electric motors.',\n        rLeft: 46, rRight: 76,\n      },\n      multiplication: {\n        id: 'multiplication',\n        label: 'Overdrive',\n        icon: ICON_TREND_UP,\n        blurb: 'The driven pulley is smaller than the driving one: output speed increases and torque decreases. Typical uses: fans, centrifugal pumps and compressors, spindles, centrifuges.',\n        rLeft: 76, rRight: 46,\n      },\n    };\n\n    \/\/ \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function fmt(n, d = 2) {\n      if (!Number.isFinite(n)) return '\u2014';\n      return n.toFixed(d);\n    }\n\n    function tex(el, str) {\n      if (window.katex) katex.render(str, el, { throwOnError: false });\n      else el.textContent = str;\n    }\n\n    \/\/ \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    let state = {\n      tab: 'reduction',\n      unitId: 'mm',\n      vals: { dm: undefined, dc: undefined, a: undefined },\n      formulasOpen: false,\n    };\n\n    \/\/ \u2500\u2500 Solver \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function solve({ dm, dc, a }) {\n      const ok = [dm, dc, a].every(n => Number.isFinite(n) && n > 0);\n      if (!ok) return { ok: false };\n\n      const D = Math.max(dm, dc);\n      const d = Math.min(dm, dc);\n      const L = 2 * a + (Math.PI \/ 2) * (D + d) + Math.pow(D - d, 2) \/ (4 * a);\n\n      const ratioSin = (D - d) \/ (2 * a);\n      const geomValid = Math.abs(ratioSin) <= 1;\n      const beta = geomValid ? (Math.asin(ratioSin) * 180) \/ Math.PI : NaN;\n      const alphaSmall = 180 - 2 * beta;\n      const alphaBig   = 180 + 2 * beta;\n\n      const i = dc \/ dm;\n\n      return { ok: true, L, D, d, alphaSmall, alphaBig, i, geomValid };\n    }\n\n    \/\/ \u2500\u2500 Belt-path geometry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function buildBelt(x1, r1, x2, r2, cy) {\n      const D = x2 - x1;\n      const theta = Math.acos((r1 - r2) \/ D);\n      const c = Math.cos(theta), s = Math.sin(theta);\n      const T1u = [x1 + r1 * c, cy - r1 * s];\n      const T2u = [x2 + r2 * c, cy - r2 * s];\n      const T1l = [x1 + r1 * c, cy + r1 * s];\n      const T2l = [x2 + r2 * c, cy + r2 * s];\n      const rightLarge = r2 > r1 ? 1 : 0;\n      const leftLarge  = r1 > r2 ? 1 : 0;\n      const p = (x) => `${x[0].toFixed(1)} ${x[1].toFixed(1)}`;\n      return `M ${p(T1u)} L ${p(T2u)} ` +\n             `A ${r2} ${r2} 0 ${rightLarge} 1 ${p(T2l)} ` +\n             `L ${p(T1l)} ` +\n             `A ${r1} ${r1} 0 ${leftLarge} 1 ${p(T1u)} Z`;\n    }\n\n    function diagramSVG(tabId) {\n      const t = TABS[tabId];\n      const cy = 150;\n      const x1 = 160, x2 = 400;\n      const beltPath = buildBelt(x1, t.rLeft, x2, t.rRight, cy);\n\n      const bigger = t.rLeft >= t.rRight;\n      const leftDia  = bigger ? 'D' : 'd';\n      const rightDia = bigger ? 'd' : 'D';\n      const maxR = Math.max(t.rLeft, t.rRight);\n\n      const ANGLE = -40 * Math.PI \/ 180;\n      const dx = Math.cos(ANGLE);\n      const dy = Math.sin(ANGLE);\n\n      function pulley(cx, r, label) {\n        const ax = cx + r * dx, ay = cy + r * dy;\n        const bx = cx - r * dx, by = cy - r * dy;\n        const lx = cx - (r + 12) * dx, ly = cy - (r + 12) * dy;\n        return `<g>\n          <circle cx=\"${cx}\" cy=\"${cy}\" r=\"${r}\" class=\"ci-svg-pulley\" \/>\n          <line x1=\"${ax.toFixed(1)}\" y1=\"${ay.toFixed(1)}\" x2=\"${bx.toFixed(1)}\" y2=\"${by.toFixed(1)}\" class=\"ci-svg-diam-line\" \/>\n          <circle cx=\"${cx}\" cy=\"${cy}\" r=\"2.5\" class=\"ci-svg-dot\" \/>\n          <text x=\"${lx.toFixed(1)}\" y=\"${(ly + 4).toFixed(1)}\" text-anchor=\"end\" class=\"ci-svg-diam-label\">${label}<\/text>\n        <\/g>`;\n      }\n\n      return `<svg viewBox=\"0 0 560 300\" class=\"ci-svg\" role=\"img\" aria-label=\"Belt drive diagram\">\n        <path d=\"${beltPath}\" class=\"ci-svg-belt\" \/>\n        <text x=\"${(x1 + x2) \/ 2}\" y=\"${cy - maxR - 12}\" text-anchor=\"middle\" class=\"ci-svg-label--l\">L<\/text>\n        ${pulley(x1, t.rLeft, leftDia)}\n        ${pulley(x2, t.rRight, rightDia)}\n        <line x1=\"${x1}\" y1=\"${cy}\" x2=\"${x2}\" y2=\"${cy}\" class=\"ci-svg-center-line\" \/>\n        <circle cx=\"${x1}\" cy=\"${cy}\" r=\"2.5\" class=\"ci-svg-dot\" \/>\n        <circle cx=\"${x2}\" cy=\"${cy}\" r=\"2.5\" class=\"ci-svg-dot\" \/>\n        <text x=\"${(x1 + x2) \/ 2}\" y=\"${cy - 14}\" text-anchor=\"middle\" class=\"ci-svg-diam-label\">C<\/text>\n      <\/svg>`;\n    }\n\n    \/\/ \u2500\u2500 Build static UI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function buildTabs() {\n      const wrap = document.getElementById('tabs');\n      wrap.innerHTML = Object.values(TABS).map(t => `\n        <button role=\"tab\" type=\"button\" data-tab=\"${t.id}\"\n          class=\"ci-tab${state.tab === t.id ? ' ci-tab--active' : ''}\"\n          aria-selected=\"${state.tab === t.id}\">\n          ${t.icon}${t.label}\n        <\/button>`).join('');\n      wrap.querySelectorAll('.ci-tab').forEach(btn => {\n        btn.addEventListener('click', () => { state.tab = btn.dataset.tab; render(); });\n      });\n    }\n\n    function buildUnits() {\n      const wrap = document.getElementById('unit-seg');\n      wrap.innerHTML = UNITS.map(un => `\n        <button type=\"button\" data-unit=\"${un.id}\"\n          class=\"ci-unit-btn${state.unitId === un.id ? ' ci-unit-btn--active' : ''}\">${un.label}<\/button>`).join('');\n      wrap.querySelectorAll('.ci-unit-btn').forEach(btn => {\n        btn.addEventListener('click', () => changeUnit(btn.dataset.unit));\n      });\n    }\n\n    function changeUnit(newId) {\n      if (newId === state.unitId) return;\n      const from = UNITS.find(u => u.id === state.unitId);\n      const to   = UNITS.find(u => u.id === newId);\n      const factor = from.toMm \/ to.toMm;\n      const conv = v => (v === undefined ? undefined : Number((v * factor).toFixed(6)));\n      state.vals = { dm: conv(state.vals.dm), dc: conv(state.vals.dc), a: conv(state.vals.a) };\n      state.unitId = newId;\n      syncInputs();\n      render();\n    }\n\n    function syncInputs() {\n      document.getElementById('input-dm').value = state.vals.dm !== undefined ? state.vals.dm : '';\n      document.getElementById('input-dc').value = state.vals.dc !== undefined ? state.vals.dc : '';\n      document.getElementById('input-a').value  = state.vals.a  !== undefined ? state.vals.a  : '';\n    }\n\n    function parseField(v) {\n      const raw = v.trim();\n      if (raw === '') return undefined;\n      const n = parseFloat(raw);\n      return Number.isFinite(n) ? n : undefined;\n    }\n\n    \/\/ \u2500\u2500 Render \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function render() {\n      const { tab, vals } = state;\n      const unit = UNITS.find(u => u.id === state.unitId);\n      const u = unit.label;\n      const calc = solve(vals);\n\n      \/\/ tabs active state\n      document.querySelectorAll('.ci-tab').forEach(btn => {\n        const active = btn.dataset.tab === tab;\n        btn.classList.toggle('ci-tab--active', active);\n        btn.setAttribute('aria-selected', active);\n      });\n      document.querySelectorAll('.ci-unit-btn').forEach(btn => {\n        btn.classList.toggle('ci-unit-btn--active', btn.dataset.unit === state.unitId);\n      });\n\n      document.getElementById('tab-blurb').textContent = TABS[tab].blurb;\n\n      \/\/ hints\n      const drivingDia = tab === 'reduction' ? 'd' : 'D';\n      const drivenDia  = tab === 'reduction' ? 'D' : 'd';\n      document.getElementById('hint-dm').textContent = `${drivingDia} (driving)`;\n      document.getElementById('hint-dc').textContent = `${drivenDia} (driven)`;\n\n      \/\/ unit suffixes\n      document.querySelectorAll('.suffix').forEach(s => s.textContent = u);\n      document.querySelectorAll('.unit-out').forEach(s => s.textContent = u);\n\n      \/\/ diagram\n      document.getElementById('diagram').innerHTML = diagramSVG(tab);\n\n      \/\/ constraint\n      const bothDiam = Number.isFinite(vals.dm) && Number.isFinite(vals.dc);\n      const violatesReduction      = bothDiam && vals.dc < vals.dm;\n      const violatesMultiplication = bothDiam &#038;&#038; vals.dc > vals.dm;\n      const violated = tab === 'reduction' ? violatesReduction : violatesMultiplication;\n      const constraintError = tab === 'reduction'\n        ? 'In reduction the driven pulley must be \u2265 the driving one.'\n        : 'In overdrive the driven pulley must be \u2264 the driving one.';\n\n      const dcInput = document.getElementById('input-dc');\n      const errDc = document.getElementById('err-dc');\n      dcInput.classList.toggle('ci-field-input--invalid', violated);\n      if (violated) { errDc.textContent = constraintError; errDc.classList.remove('hidden'); }\n      else { errDc.classList.add('hidden'); }\n\n      const showResults = calc.ok && !violated;\n\n      \/\/ readouts\n      document.getElementById('out-L').textContent = showResults ? fmt(calc.L) : '\u2014';\n      document.getElementById('out-i').textContent = showResults ? fmt(calc.i, 3) : '\u2014';\n      document.getElementById('out-a').textContent = showResults ? fmt(calc.alphaSmall) : '\u2014';\n\n      \/\/ warnings\n      const warnings = [];\n      if (violated) warnings.push(constraintError + ' Correct the diameters or switch tab.');\n      if (showResults && calc.ok && !calc.geomValid)\n        warnings.push('Center distance too small for the chosen diameters: the belt cannot wrap both pulleys.');\n      if (showResults && Number.isFinite(calc.alphaSmall) && calc.alphaSmall < 120)\n        warnings.push(`\u03b1 (small pulley) = ${fmt(calc.alphaSmall)}\u00b0 < 120\u00b0 \u2014 low wrap angle, risk of slippage under load.`);\n\n      document.getElementById('warnings').innerHTML = warnings.map(w =>\n        `<div class=\"ci-warn\">${ICON_WARN}<span>${w}<\/span><\/div>`).join('');\n\n      \/\/ formula panel values\n      const FORMULA_ROWS = [\n        { g: 'Belt length  L',                t: 'L = 2C + \\\\dfrac{\\\\pi}{2}\\\\,(D + d) + \\\\dfrac{(D - d)^2}{4C}',            v: showResults ? fmt(calc.L) + ' ' + u : '\u2014' },\n        { g: 'Transmission ratio  i',         t: 'i = \\\\dfrac{d_{driven}}{d_{driving}}',                                     v: showResults ? fmt(calc.i, 3) : '\u2014' },\n        { g: 'Small pulley wrap',             t: '\\\\alpha_{s} = 180^\\\\circ - 2\\\\arcsin\\\\!\\\\left(\\\\dfrac{D - d}{2C}\\\\right)', v: showResults ? fmt(calc.alphaSmall) + '\u00b0' : '\u2014' },\n        { g: 'Large pulley wrap',             t: '\\\\alpha_{l} = 180^\\\\circ + 2\\\\arcsin\\\\!\\\\left(\\\\dfrac{D - d}{2C}\\\\right)', v: showResults ? fmt(calc.alphaBig) + '\u00b0' : '\u2014' },\n      ];\n      const rowsWrap = document.getElementById('formula-rows');\n      rowsWrap.innerHTML = FORMULA_ROWS.map((r, idx) => `\n        <tr class=\"${idx % 2 === 1 ? 'ci-tr--alt' : ''}\">\n          <td class=\"ci-ftd\">${r.g}<\/td>\n          <td class=\"ci-ftd ci-ftd--tex\"><\/td>\n          <td class=\"ci-ftd ci-ftd--val\">${r.v}<\/td>\n        <\/tr>`).join('');\n      rowsWrap.querySelectorAll('.ci-ftd--tex').forEach((cell, idx) => tex(cell, FORMULA_ROWS[idx].t));\n    }\n\n    \/\/ \u2500\u2500 Wire inputs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function wireInput(id, key) {\n      document.getElementById(id).addEventListener('input', e => {\n        state.vals[key] = parseField(e.target.value);\n        render();\n      });\n    }\n\n    function init() {\n      buildTabs();\n      buildUnits();\n      wireInput('input-dm', 'dm');\n      wireInput('input-dc', 'dc');\n      wireInput('input-a', 'a');\n\n      document.getElementById('btn-reset').addEventListener('click', () => {\n        state.vals = { dm: undefined, dc: undefined, a: undefined };\n        syncInputs();\n        render();\n      });\n\n      const panel = document.getElementById('formula-panel');\n      const toggle = document.getElementById('btn-formulas');\n      toggle.addEventListener('click', () => {\n        state.formulasOpen = !state.formulasOpen;\n        panel.classList.toggle('hidden', !state.formulasOpen);\n        toggle.classList.toggle('ci-formula-toggle--open', state.formulasOpen);\n        document.getElementById('formula-toggle-label').textContent =\n          state.formulasOpen ? 'Hide' : 'All formulas';\n      });\n\n      tex(document.getElementById('formula-main'), 'L = 2C + \\\\dfrac{\\\\pi}{2}\\\\,(D + d) + \\\\dfrac{(D - d)^2}{4C}');\n      render();\n    }\n\n    if (document.readyState === 'loading') {\n      window.addEventListener('DOMContentLoaded', () => {\n        \/\/ ensure katex is ready (deferred); render text falls back gracefully\n        init();\n      });\n    } else {\n      init();\n    }\n\n    \/\/ re-render formulas once KaTeX finishes loading, in case it wasn't ready\n    window.addEventListener('load', () => {\n      tex(document.getElementById('formula-main'), 'L = 2C + \\\\dfrac{\\\\pi}{2}\\\\,(D + d) + \\\\dfrac{(D - d)^2}{4C}');\n      render();\n    });\n  <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Calculate the belt length, transmission ratio and wrap angles of a two-pulley drive, starting from the pulley diameters and the center distance.<\/p>\n","protected":false},"parent":0,"template":"","meta":{"_acf_changed":false},"campo-applicazione":[5452],"categoria-ct":[5447],"class_list":["post-25647","centro-tecnico","type-centro-tecnico","status-publish","hentry","campo-applicazione-calcolo","categoria-ct-belts-pulleys-and-belt-drives"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Belt Length Calculator | Stagnoli Gears Shop<\/title>\n<meta name=\"description\" content=\"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Belt Length Calculator | Stagnoli Gears Shop\" \/>\n<meta property=\"og:description\" content=\"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Stagnoli Gears Shop\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/StagnoliGears\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-10T11:48:55+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/belt-length-and-transmission-geometry-calculator\\\/\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/belt-length-and-transmission-geometry-calculator\\\/\",\"name\":\"Belt Length Calculator | Stagnoli Gears Shop\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#website\"},\"datePublished\":\"2026-07-02T13:36:10+00:00\",\"dateModified\":\"2026-07-10T11:48:55+00:00\",\"description\":\"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/belt-length-and-transmission-geometry-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/belt-length-and-transmission-geometry-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/belt-length-and-transmission-geometry-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Belt length and transmission geometry calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\",\"name\":\"Stagnoli\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#organization\",\"name\":\"Stagnoli Gears\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/wp-content\\\/uploads\\\/logo-stagnoli-shop.svg\",\"contentUrl\":\"https:\\\/\\\/shop.stagnoligears.com\\\/wp-content\\\/uploads\\\/logo-stagnoli-shop.svg\",\"width\":1,\"height\":1,\"caption\":\"Stagnoli Gears\"},\"image\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/StagnoliGears\",\"https:\\\/\\\/www.youtube.com\\\/@stagnoli_gears\",\"https:\\\/\\\/www.linkedin.com\\\/showcase\\\/stagnoli-gears\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Belt Length Calculator | Stagnoli Gears Shop","description":"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Belt Length Calculator | Stagnoli Gears Shop","og_description":"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.","og_url":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/","og_site_name":"Stagnoli Gears Shop","article_publisher":"https:\/\/www.facebook.com\/StagnoliGears","article_modified_time":"2026-07-10T11:48:55+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/","url":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/","name":"Belt Length Calculator | Stagnoli Gears Shop","isPartOf":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#website"},"datePublished":"2026-07-02T13:36:10+00:00","dateModified":"2026-07-10T11:48:55+00:00","description":"Calculate belt length, transmission ratio and wrap angles for two-pulley belt drives.","breadcrumb":{"@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/belt-length-and-transmission-geometry-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/shop.stagnoligears.com\/en\/"},{"@type":"ListItem","position":2,"name":"Belt length and transmission geometry calculator"}]},{"@type":"WebSite","@id":"https:\/\/shop.stagnoligears.com\/en\/#website","url":"https:\/\/shop.stagnoligears.com\/en\/","name":"Stagnoli","description":"","publisher":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shop.stagnoligears.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/shop.stagnoligears.com\/en\/#organization","name":"Stagnoli Gears","url":"https:\/\/shop.stagnoligears.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shop.stagnoligears.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/shop.stagnoligears.com\/wp-content\/uploads\/logo-stagnoli-shop.svg","contentUrl":"https:\/\/shop.stagnoligears.com\/wp-content\/uploads\/logo-stagnoli-shop.svg","width":1,"height":1,"caption":"Stagnoli Gears"},"image":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/StagnoliGears","https:\/\/www.youtube.com\/@stagnoli_gears","https:\/\/www.linkedin.com\/showcase\/stagnoli-gears\/"]}]}},"_links":{"self":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/centro-tecnico\/25647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/centro-tecnico"}],"about":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/types\/centro-tecnico"}],"wp:attachment":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/media?parent=25647"}],"wp:term":[{"taxonomy":"campo-applicazione","embeddable":true,"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/campo-applicazione?post=25647"},{"taxonomy":"categoria-ct","embeddable":true,"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/categoria-ct?post=25647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}