{"id":100062,"date":"2026-02-15T20:10:03","date_gmt":"2026-02-15T20:10:03","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100062"},"modified":"2026-02-15T20:10:03","modified_gmt":"2026-02-15T20:10:03","slug":"compression-spring-design","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/bn\/calculators\/compression-spring-design\/","title":{"rendered":"\u09b8\u09b0\u09cd\u09aa\u09bf\u09b2 \u09b8\u0982\u0995\u09cb\u099a\u09a8 \u0995\u09c1\u09a3\u09cd\u09a1\u09b2\u09c0 \u09a1\u09bf\u099c\u09be\u0987\u09a8 \u0995\u09cd\u09af\u09be\u09b2\u0995\u09c1\u09b2\u09c7\u099f\u09b0 | \u09ac\u09bf\u09a8\u09be\u09ae\u09c2\u09b2\u09cd\u09af\u09c7 \u0985\u09a8\u09b2\u09be\u0987\u09a8 \u09b8\u09b0\u099e\u09cd\u099c\u09be\u09ae #064"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Helical Compression Spring Design Calculator\",\"alternateName\":[\"Spring Rate Calculator\",\"Compression Spring Calculator\",\"Coil Spring Designer\"],\"description\":\"Free online calculator for helical compression spring design. Calculate spring rate, maximum load, shear stress with Wahl factor, and solid height.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/compression-spring-design\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2024-01-01\",\"dateModified\":\"2025-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"Spring rate calculation k=Gd\u2074\/(8D\u00b3n)\",\"Wahl stress correction factor\",\"Solid height computation\",\"Multiple material presets\",\"Auto-calculation on input change\"],\"keywords\":\"compression spring, helical spring, spring rate, Wahl factor, shear stress, coil spring\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"How is the spring rate calculated?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The spring rate k for a helical compression spring is k = Gd\u2074\/(8D\u00b3n), where G is the shear modulus, d is wire diameter, D is mean coil diameter, and n is the number of active coils. This formula assumes round wire and negligible pitch angle.\"}},\n{\"@type\":\"Question\",\"name\":\"What is the Wahl correction factor?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The Wahl factor Kw accounts for curvature and direct shear effects in helical springs. Kw = (4C-1)\/(4C-4) + 0.615\/C, where C = D\/d is the spring index. It increases the calculated shear stress, especially for small spring indices (tight coils).\"}},\n{\"@type\":\"Question\",\"name\":\"What spring index C should I target?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A spring index C = D\/d between 4 and 12 is typical. C < 4 makes springs difficult to manufacture and causes high stresses. C > 12 can lead to tangling and buckling. C = 6\u201310 is optimal for most applications.\"}},\n{\"@type\":\"Question\",\"name\":\"What is solid height and why does it matter?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Solid height is the length of the spring when fully compressed so all coils touch. It equals (total coils) \u00d7 wire diameter. The spring must never be compressed to solid height in service, or permanent set (plastic deformation) will occur.\"}},\n{\"@type\":\"Question\",\"name\":\"Which shear modulus G should I use?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Common values: Music wire (ASTM A228) G \u2248 79.3 GPa, Stainless 302 G \u2248 69 GPa, Chrome-vanadium G \u2248 77.2 GPa, Phosphor bronze G \u2248 41.4 GPa. G varies slightly with temperature and wire diameter.\"}}\n]}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Compression Spring Design\",\"item\":\"https:\/\/vibromera.eu\/calculators\/compression-spring-design\/\"}\n]}\n<\/script>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&#038;family=JetBrains+Mono:wght@400;500;600&#038;family=Fraunces:opsz,wght@9..144,700;9..144,800&#038;display=swap\" rel=\"stylesheet\">\n\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.css\">\n\n<style>\n:root{--vc-bg:#f4f1ec;--vc-surface:#ffffff;--vc-surface-alt:#f8f6f2;--vc-ink:#1a1a1a;--vc-ink-secondary:#5a5650;--vc-ink-muted:#8a857e;--vc-accent:#c85a2a;--vc-accent-hover:#b04d22;--vc-accent-light:#fdf0ea;--vc-blue:#2a5c8c;--vc-blue-light:#eaf1f8;--vc-green:#2a7a4b;--vc-green-light:#eaf8ef;--vc-yellow:#a67c00;--vc-yellow-light:#fef9e8;--vc-red:#b91c1c;--vc-red-light:#fef2f2;--vc-border:#d9d4cc;--vc-border-light:#e8e4dd;--vc-shadow:0 1px 3px rgba(26,26,26,0.06),0 4px 12px rgba(26,26,26,0.04);--vc-shadow-lg:0 4px 12px rgba(26,26,26,0.08),0 16px 40px rgba(26,26,26,0.06);--vc-radius:8px;--vc-radius-lg:12px;--vc-font:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--vc-mono:'JetBrains Mono','Consolas','Monaco',monospace;--vc-display:'Fraunces',Georgia,serif}\n.vc-calculator{font-family:var(--vc-font);font-size:15px;line-height:1.65;color:var(--vc-ink);max-width:960px;margin:0 auto;padding:20px 16px 40px;-webkit-font-smoothing:antialiased}\n.vc-calculator *,.vc-calculator *::before,.vc-calculator *::after{box-sizing:border-box}\n.vc-header{text-align:center;padding:48px 24px 40px;position:relative}.vc-header::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:80px;height:3px;background:var(--vc-accent);border-radius:2px}.vc-header-eyebrow{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;color:var(--vc-accent);margin:0 0 12px}.vc-header-title{font-family:var(--vc-display);font-size:clamp(24px,4vw,36px);font-weight:800;line-height:1.15;color:var(--vc-ink);margin:0 0 16px;letter-spacing:-0.02em}.vc-header-subtitle{font-size:15px;color:var(--vc-ink-secondary);margin:0 auto 20px;max-width:600px}.vc-badges{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center}.vc-badge{font-family:var(--vc-mono);font-size:11px;font-weight:500;padding:4px 10px;border-radius:4px;background:var(--vc-surface);border:1px solid var(--vc-border);color:var(--vc-ink-secondary)}\n.vc-card{background:var(--vc-surface);border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);box-shadow:var(--vc-shadow);overflow:hidden;margin-top:32px}\n.vc-unit-bar{display:flex;border-bottom:1px solid var(--vc-border-light);background:var(--vc-surface-alt)}.vc-unit-btn{flex:1;padding:12px;border:none;background:transparent;font-family:var(--vc-font);font-size:13px;font-weight:600;color:var(--vc-ink-muted);cursor:pointer;transition:all 0.2s;position:relative}.vc-unit-btn:hover{color:var(--vc-ink-secondary);background:rgba(200,90,42,0.04)}.vc-unit-btn.vc-active{color:var(--vc-accent);background:var(--vc-surface)}.vc-unit-btn.vc-active::after{content:'';position:absolute;bottom:-1px;left:16px;right:16px;height:2px;background:var(--vc-accent);border-radius:1px 1px 0 0}\n.vc-form{padding:24px}.vc-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:600px){.vc-form-grid{grid-template-columns:1fr}}.vc-field{display:flex;flex-direction:column}.vc-field-full{grid-column:1\/-1}.vc-label{font-size:12px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:var(--vc-ink-secondary);margin-bottom:6px}.vc-label-hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--vc-ink-muted);font-size:11px}\n.vc-select,.vc-input{width:100%;padding:10px 12px;border:1.5px solid var(--vc-border);border-radius:6px;font-family:var(--vc-font);font-size:14px;color:var(--vc-ink);background:var(--vc-surface);transition:border-color 0.15s,box-shadow 0.15s}.vc-select{padding-right:36px;appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%235a5650' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:right 10px center}.vc-select:focus,.vc-input:focus{outline:none;border-color:var(--vc-accent);box-shadow:0 0 0 3px rgba(200,90,42,0.12)}.vc-select:hover,.vc-input:hover{border-color:var(--vc-ink-muted)}\n.vc-presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:18px;border-top:1px solid var(--vc-border-light)}.vc-presets-label{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--vc-ink-muted);width:100%;margin-bottom:2px}.vc-preset-btn{padding:5px 12px;font-family:var(--vc-font);font-size:12px;font-weight:500;border:1px solid var(--vc-border);border-radius:6px;background:var(--vc-surface-alt);color:var(--vc-ink-secondary);cursor:pointer;transition:all 0.15s}.vc-preset-btn:hover{border-color:var(--vc-accent);color:var(--vc-accent);background:var(--vc-accent-light)}\n.vc-results{border-top:1px solid var(--vc-border-light);background:var(--vc-surface-alt);padding:0;max-height:0;overflow:hidden;transition:max-height 0.5s cubic-bezier(0.4,0,0.2,1),padding 0.3s}.vc-results.vc-visible{max-height:2000px;padding:24px}.vc-results-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.vc-results-title{font-family:var(--vc-display);font-size:20px;font-weight:700;color:var(--vc-ink);margin:0}.vc-copy-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border:1px solid var(--vc-border);border-radius:6px;background:var(--vc-surface);font-family:var(--vc-font);font-size:12px;font-weight:500;color:var(--vc-ink-secondary);cursor:pointer;transition:all 0.15s}.vc-copy-btn:hover{border-color:var(--vc-accent);color:var(--vc-accent)}.vc-copy-btn.vc-copied{background:var(--vc-green-light);border-color:var(--vc-green);color:var(--vc-green)}\n.vc-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}@media(max-width:500px){.vc-result-grid{grid-template-columns:1fr}}.vc-rcard{background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;transition:transform 0.2s}.vc-rcard:hover{transform:translateY(-1px)}.vc-rcard-primary{border-color:var(--vc-accent);border-width:2px;background:linear-gradient(135deg,#fdf6f2 0%,var(--vc-surface) 100%);grid-column:1\/-1}.vc-rcard-label{font-family:var(--vc-mono);font-size:10px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:4px}.vc-rcard-value{font-family:var(--vc-mono);font-size:22px;font-weight:600;color:var(--vc-ink);line-height:1.2}.vc-rcard-primary .vc-rcard-value{font-size:30px;color:var(--vc-accent)}.vc-rcard-unit{font-size:14px;font-weight:400;color:var(--vc-ink-secondary)}\n.vc-section{margin-top:24px;border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);background:var(--vc-surface);box-shadow:var(--vc-shadow);overflow:hidden}.vc-section-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border:none;background:transparent;cursor:pointer;font-family:var(--vc-font);text-align:left;transition:background 0.15s}.vc-section-toggle:hover{background:var(--vc-surface-alt)}.vc-section-toggle-text{display:flex;align-items:center;gap:10px}.vc-section-icon{font-size:20px;line-height:1}.vc-section-title{font-family:var(--vc-display);font-size:18px;font-weight:700;color:var(--vc-ink);margin:0}.vc-section-chevron{width:20px;height:20px;color:var(--vc-ink-muted);transition:transform 0.3s;flex-shrink:0}.vc-section.vc-open .vc-section-chevron{transform:rotate(180deg)}.vc-section-body{max-height:0;overflow:hidden;transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1)}.vc-section.vc-open .vc-section-body{max-height:20000px}.vc-section-inner{padding:0 24px 24px;border-top:1px solid var(--vc-border-light)}\n.vc-theory h3{font-family:var(--vc-display);font-size:17px;font-weight:700;color:var(--vc-ink);margin:28px 0 10px}.vc-theory h3:first-child{margin-top:20px}.vc-theory p{font-size:14px;color:var(--vc-ink-secondary);margin:0 0 10px}.vc-theory ul,.vc-theory ol{font-size:14px;color:var(--vc-ink-secondary);margin:0 0 12px 18px;padding:0}.vc-theory li{margin-bottom:5px}.vc-formula-box{background:var(--vc-surface-alt);border:2px solid var(--vc-border);border-radius:6px;padding:14px 20px;font-family:var(--vc-mono);font-size:16px;font-weight:500;text-align:center;margin:14px 0;color:var(--vc-ink);overflow-x:auto}.vc-info-box{background:var(--vc-blue-light);border-left:3px solid var(--vc-blue);padding:14px 16px;border-radius:0 6px 6px 0;margin:14px 0}.vc-info-box p{margin:0;font-size:14px;color:var(--vc-ink-secondary)}.vc-warning-box{background:var(--vc-yellow-light);border-left:3px solid var(--vc-yellow);padding:14px 16px;border-radius:0 6px 6px 0;margin:14px 0}.vc-example-box{background:var(--vc-surface-alt);border:1px solid var(--vc-border-light);border-radius:6px;padding:16px;margin:14px 0}.vc-example-title{font-family:var(--vc-mono);font-size:13px;font-weight:600;color:var(--vc-accent);margin-bottom:8px}.vc-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}.vc-table th,.vc-table td{padding:10px 12px;border:1px solid var(--vc-border-light);text-align:left}.vc-table th{background:var(--vc-surface-alt);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--vc-ink-secondary)}.vc-table tr:nth-child(even){background:var(--vc-surface-alt)}@media(max-width:600px){.vc-table{font-size:12px}.vc-table th,.vc-table td{padding:8px}}\n.vc-faq-list{display:flex;flex-direction:column;gap:8px;margin-top:20px}.vc-faq-item{border:1px solid var(--vc-border-light);border-radius:6px;overflow:hidden}.vc-faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:none;background:var(--vc-surface-alt);cursor:pointer;font-family:var(--vc-font);font-size:15px;font-weight:600;color:var(--vc-ink);text-align:left;transition:background 0.15s}.vc-faq-q:hover{background:#ede9e3}.vc-faq-chevron{width:16px;height:16px;color:var(--vc-ink-muted);flex-shrink:0;transition:transform 0.25s}.vc-faq-item.vc-open .vc-faq-chevron{transform:rotate(180deg)}.vc-faq-a{max-height:0;overflow:hidden;transition:max-height 0.35s}.vc-faq-item.vc-open .vc-faq-a{max-height:1200px}.vc-faq-a-inner{padding:14px 16px;border-top:1px solid var(--vc-border-light);font-size:14px;color:var(--vc-ink-secondary)}.vc-faq-a-inner p{margin:0 0 8px}.vc-faq-a-inner p:last-child{margin-bottom:0}.vc-faq-a-inner ul{margin:4px 0 8px 16px;padding:0}.vc-faq-a-inner li{margin-bottom:3px}\n.vc-related{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.vc-related-link{display:inline-block;padding:8px 16px;font-family:var(--vc-font);font-size:13px;font-weight:600;background:var(--vc-surface-alt);color:var(--vc-ink-secondary);border:1px solid var(--vc-border);border-radius:var(--vc-radius);text-decoration:none;transition:all 0.15s}.vc-related-link:hover{border-color:var(--vc-accent);color:var(--vc-accent);background:var(--vc-accent-light)}\n.vc-promo{margin-top:24px;padding:20px;background:linear-gradient(135deg,var(--vc-accent-light),var(--vc-surface));border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);display:flex;align-items:center;gap:16px}.vc-promo-text{flex:1;font-size:14px;color:var(--vc-ink-secondary)}.vc-promo-text strong{color:var(--vc-ink)}.vc-promo-link{padding:8px 20px;font-size:13px;font-weight:700;color:#fff;background:var(--vc-accent);border-radius:var(--vc-radius);text-decoration:none;white-space:nowrap;transition:background 0.15s}.vc-promo-link:hover{background:var(--vc-accent-hover)}\n.vc-footer{text-align:center;padding:32px 16px;font-size:13px;color:var(--vc-ink-muted)}.vc-footer a{color:var(--vc-accent);text-decoration:none}.vc-footer a:hover{text-decoration:underline}.vc-footer-links{margin-top:8px;font-size:12px}.vc-footer-links a{margin:0 8px}\n@media print{.vc-section-body{max-height:none!important}.vc-faq-a{max-height:none!important}.vc-results{max-height:none!important;padding:24px!important}.vc-copy-btn,.vc-section-chevron,.vc-faq-chevron,.vc-presets,.vc-promo{display:none!important}}\n.vc-viz{margin:20px 0;background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;overflow:hidden}.vc-viz svg{width:100%;height:auto;display:block}.vc-viz-title{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:12px}\n<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-compression-spring\">\n\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool #064<\/p>\n    <h1 class=\"vc-header-title\">Helical Compression Spring Design Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Design helical compression springs. Enter wire diameter, coil diameter, free length, active coils, and shear modulus to calculate spring rate, max load, shear stress, and solid height.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">Spring Rate k<\/span>\n        <span class=\"vc-badge\">Wahl Factor<\/span>\n        <span class=\"vc-badge\">Auto-Calc<\/span>\n    <\/div>\n<\/header>\n\n<div class=\"vc-card\">\n    <div class=\"vc-unit-bar\">\n        <button type=\"button\" class=\"vc-unit-btn vc-active\" data-system=\"metric\">Metric (mm, N, MPa)<\/button>\n        <button type=\"button\" class=\"vc-unit-btn\" data-system=\"imperial\">Imperial (in, lbf, psi)<\/button>\n    <\/div>\n\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-wd\">Wire Diameter d <span class=\"vc-label-hint\" id=\"vc-wd-unit\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-wd\" inputmode=\"decimal\" step=\"any\" min=\"0.01\" placeholder=\"e.g. 4\" value=\"4\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-cd\">Mean Coil Diameter D <span class=\"vc-label-hint\" id=\"vc-cd-unit\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-cd\" inputmode=\"decimal\" step=\"any\" min=\"0.1\" placeholder=\"e.g. 30\" value=\"30\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-fl\">Free Length L\u2080 <span class=\"vc-label-hint\" id=\"vc-fl-unit\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-fl\" inputmode=\"decimal\" step=\"any\" min=\"0.1\" placeholder=\"e.g. 80\" value=\"80\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-na\">Active Coils n<\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-na\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 10\" value=\"10\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-mat\">Material (Shear Modulus G)<\/label>\n                <select class=\"vc-select\" id=\"vc-mat\">\n                    <option value=\"79300\" selected>Music Wire (79.3 GPa)<\/option>\n                    <option value=\"77200\">Chrome-Vanadium (77.2 GPa)<\/option>\n                    <option value=\"69000\">Stainless 302 (69.0 GPa)<\/option>\n                    <option value=\"41400\">Phosphor Bronze (41.4 GPa)<\/option>\n                    <option value=\"44800\">Beryllium Copper (44.8 GPa)<\/option>\n                    <option value=\"0\">Custom\u2026<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-custom-g-field\" style=\"display:none\">\n                <label class=\"vc-label\" for=\"vc-gval\">Custom G <span class=\"vc-label-hint\" id=\"vc-g-unit\">(MPa)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-gval\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 79300\" value=\"79300\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-ends\">End Type<\/label>\n                <select class=\"vc-select\" id=\"vc-ends\">\n                    <option value=\"2\" selected>Closed &amp; Ground (+2 coils)<\/option>\n                    <option value=\"2ng\">Closed, Not Ground (+2 coils)<\/option>\n                    <option value=\"1\">Open &amp; Ground (+1 coil)<\/option>\n                    <option value=\"0\">Plain (+0 coils)<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <div class=\"vc-presets\">\n            <div class=\"vc-presets-label\">Quick presets<\/div>\n            <button type=\"button\" class=\"vc-preset-btn\" data-d=\"4\" data-D=\"30\" data-L=\"80\" data-n=\"10\" data-G=\"79300\">d4 D30 L80 Music Wire<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-d=\"2\" data-D=\"16\" data-L=\"40\" data-n=\"12\" data-G=\"79300\">d2 D16 L40 Music Wire<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-d=\"6\" data-D=\"40\" data-L=\"120\" data-n=\"8\" data-G=\"77200\">d6 D40 L120 Cr-V<\/button>\n        <\/div>\n    <\/form>\n\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Results<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\n                <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n                Copy\n            <\/button>\n        <\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\">\n                <div class=\"vc-rcard-label\">Spring Rate k<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-rate\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Max Load at Solid (F<sub>solid<\/sub>)<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-fmax\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Max Shear Stress \u03c4 (with Kw)<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-stress\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Solid Height<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-solid\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Spring Index C<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-index\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Wahl Factor K<sub>w<\/sub><\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-wahl\">\u2014<\/div>\n            <\/div>\n        <\/div>\n        <div class=\"vc-viz\" id=\"vc-viz\"><div class=\"vc-viz-title\">Spring Profile<\/div><div id=\"vc-viz-svg\"><\/div><\/div>\n    <\/div>\n<\/div>\n\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\n        <span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udcd8<\/span><span class=\"vc-section-title\">Theory &amp; Formulas<\/span><\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>Spring Rate<\/h3>\n            <div class=\"vc-formula-box\" id=\"vc-katex-1\"><\/div>\n            <h3>Shear Stress with Wahl Correction<\/h3>\n            <div class=\"vc-formula-box\" id=\"vc-katex-2\"><\/div>\n            <h3>Wahl Factor<\/h3>\n            <div class=\"vc-formula-box\" id=\"vc-katex-3\"><\/div>\n            <p>where C = D\/d is the spring index.<\/p>\n            <h3>Solid Height<\/h3>\n            <div class=\"vc-formula-box\" id=\"vc-katex-4\"><\/div>\n\n            <table class=\"vc-table\">\n                <thead><tr><th>Material<\/th><th>G (GPa)<\/th><th>Typical Use<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>Music Wire (A228)<\/td><td>79.3<\/td><td>General purpose, high fatigue life<\/td><\/tr>\n                    <tr><td>Chrome-Vanadium<\/td><td>77.2<\/td><td>High-stress, shock loads<\/td><\/tr>\n                    <tr><td>Stainless 302<\/td><td>69.0<\/td><td>Corrosion resistance<\/td><\/tr>\n                    <tr><td>Phosphor Bronze<\/td><td>41.4<\/td><td>Electrical, non-magnetic<\/td><\/tr>\n                    <tr><td>Beryllium Copper<\/td><td>44.8<\/td><td>Non-sparking, conductive<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <div class=\"vc-example-box\">\n                <div class=\"vc-example-title\">Example \u2014 Music Wire Spring<\/div>\n                <p><strong>Given:<\/strong> d = 4 mm, D = 30 mm, L\u2080 = 80 mm, n = 10, G = 79300 MPa<\/p>\n                <p>C = 30\/4 = 7.5<\/p>\n                <p>k = 79300 \u00d7 4\u2074 \/ (8 \u00d7 30\u00b3 \u00d7 10) = 79300 \u00d7 256 \/ 2,160,000 = <strong>9.39 N\/mm<\/strong><\/p>\n                <p>Solid height = (10+2) \u00d7 4 = 48 mm \u2192 Travel = 80 \u2212 48 = 32 mm<\/p>\n                <p>F<sub>solid<\/sub> = 9.39 \u00d7 32 = <strong>300.5 N<\/strong><\/p>\n            <\/div>\n\n            <div class=\"vc-warning-box\">\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> Never compress a spring to solid height in service. Design working travel to \u226480% of available deflection. Check for buckling if free length\/mean diameter > 4.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udd17<\/span><span class=\"vc-section-title\">Related Calculators<\/span><\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-related\">\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-mount-selection\/\">Vibration Mount Selection<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/rubber-mount-calculator\/\">Rubber Mount Calculator<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/machine-vibration-isolation\/\">Machine Vibration Isolation<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/shaft-diameter-torsion\/\">Shaft Diameter for Torsion<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\u2753<\/span><span class=\"vc-section-title\">Frequently Asked Questions<\/span><\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"vc-promo\">\n    <div class=\"vc-promo-text\"><strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>Professional field balancing instruments and software. Used in 50+ countries.<\/div>\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\n<\/div>\n\n<footer class=\"vc-footer\">\n    <p>\u00a9 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\n    <p style=\"font-size:12px;margin-top:4px;\">Helical compression spring design. Last updated: February 2025<\/p>\n    <div class=\"vc-footer-links\"><a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a><a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a><\/div>\n<\/footer>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\n<script>\n(function() {\n    'use strict';\n    var SLUG = 'compression-spring-design';\n    var unitSystem = 'metric';\n    function $(id) { return document.getElementById(id); }\n    function fmt(n, d) { if(isNaN(n)||!isFinite(n)) return '\u2014'; var f=n.toFixed(d===undefined?2:d); return f.replace(\/(\\.\\d*?)0+$\/,'$1').replace(\/\\.$\/,''); }\n\n    $('vc-mat').addEventListener('change', function() {\n        $('vc-custom-g-field').style.display = this.value === '0' ? 'flex' : 'none';\n        calculate();\n    });\n\n    function calculate() {\n        var d = parseFloat($('vc-wd').value);\n        var D = parseFloat($('vc-cd').value);\n        var L0 = parseFloat($('vc-fl').value);\n        var na = parseFloat($('vc-na').value);\n        var Gsel = parseFloat($('vc-mat').value);\n        var G = Gsel === 0 ? parseFloat($('vc-gval').value) : Gsel;\n        var endsVal = $('vc-ends').value;\n\n        if (!d || d<=0 || !D || D<=0 || !L0 || L0<=0 || !na || na<1 || !G || G<=0) {\n            $('vc-results').classList.remove('vc-visible'); return;\n        }\n\n        \/\/ Convert imperial to metric for calc\n        var dMm = unitSystem === 'imperial' ? d * 25.4 : d;\n        var DMm = unitSystem === 'imperial' ? D * 25.4 : D;\n        var L0Mm = unitSystem === 'imperial' ? L0 * 25.4 : L0;\n        var GMpa = unitSystem === 'imperial' ? G * 0.00689476 : G; \/\/ psi to MPa if imperial\n\n        var deadCoils = endsVal === '0' ? 0 : endsVal === '1' ? 1 : 2;\n        var totalCoils = na + deadCoils;\n        var C = DMm \/ dMm;\n        var Kw = (4*C - 1)\/(4*C - 4) + 0.615\/C;\n        var k = GMpa * Math.pow(dMm, 4) \/ (8 * Math.pow(DMm, 3) * na); \/\/ N\/mm\n        var solidH = totalCoils * dMm; \/\/ mm\n        var travel = L0Mm - solidH;\n        var Fsolid = travel > 0 ? k * travel : 0; \/\/ N\n        var tauMax = 8 * Fsolid * DMm \/ (Math.PI * Math.pow(dMm, 3)) * Kw; \/\/ MPa\n\n        if (unitSystem === 'imperial') {\n            $('vc-r-rate').innerHTML = fmt(k * 0.00571015, 3) + ' <span class=\"vc-rcard-unit\">lbf\/in<\/span>';\n            $('vc-r-fmax').innerHTML = fmt(Fsolid * 0.224809, 2) + ' <span class=\"vc-rcard-unit\">lbf<\/span>';\n            $('vc-r-stress').innerHTML = fmt(tauMax * 145.038, 0) + ' <span class=\"vc-rcard-unit\">psi<\/span>';\n            $('vc-r-solid').innerHTML = fmt(solidH \/ 25.4, 3) + ' <span class=\"vc-rcard-unit\">in<\/span>';\n        } else {\n            $('vc-r-rate').innerHTML = fmt(k, 2) + ' <span class=\"vc-rcard-unit\">N\/mm<\/span>';\n            $('vc-r-fmax').innerHTML = fmt(Fsolid, 1) + ' <span class=\"vc-rcard-unit\">N<\/span>';\n            $('vc-r-stress').innerHTML = fmt(tauMax, 1) + ' <span class=\"vc-rcard-unit\">MPa<\/span>';\n            $('vc-r-solid').innerHTML = fmt(solidH, 1) + ' <span class=\"vc-rcard-unit\">mm<\/span>';\n        }\n        $('vc-r-index').innerHTML = fmt(C, 2);\n        $('vc-r-wahl').innerHTML = fmt(Kw, 4);\n\n        $('vc-results').classList.add('vc-visible');\n        drawSpringViz(dMm, DMm, L0Mm, solidH, na, deadCoils);\n\n        var u = new URL(window.location);\n        u.searchParams.set('wd', $('vc-wd').value); u.searchParams.set('cd', $('vc-cd').value);\n        u.searchParams.set('fl', $('vc-fl').value); u.searchParams.set('na', na);\n        history.replaceState(null, '', u.toString());\n\n        saveHistory({ d: $('vc-wd').value, D: $('vc-cd').value, L0: $('vc-fl').value, na: na, G: G,\n            _summary: 'd=' + $('vc-wd').value + ', D=' + $('vc-cd').value + ', n=' + na });\n    }\n\n    function drawSpringViz(d, D, L0, solidH, na, deadCoils) {\n        var el = $('vc-viz-svg'); if (!el) return;\n        var W = 400, H = 260, mx = 60, totalCoils = na + deadCoils;\n        var coilH = L0, coilW = D + d;\n        var scaleY = (H - 40) \/ coilH, scaleX = (W - 2 * mx) \/ coilW;\n        var sc = Math.min(scaleY, scaleX);\n        var drawH = coilH * sc, drawW = coilW * sc;\n        var ox = (W - drawW) \/ 2, oy = (H - drawH) \/ 2;\n        var pitch = drawH \/ totalCoils, r = drawW \/ 2;\n        var s = '<svg viewBox=\"0 0 ' + W + ' ' + H + '\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">';\n        s += '<rect width=\"' + W + '\" height=\"' + H + '\" fill=\"var(--vc-surface)\" rx=\"4\"\/>';\n        \/\/ Draw coils as sine wave\n        var cx = W \/ 2, pts = '';\n        for (var i = 0; i <= totalCoils * 20; i++) {\n            var t = i \/ 20; \/\/ coil number\n            var y = oy + t * pitch;\n            var x = cx + r * Math.sin(t * 2 * Math.PI);\n            pts += (i === 0 ? 'M' : 'L') + x.toFixed(1) + ',' + y.toFixed(1);\n        }\n        s += '<path d=\"' + pts + '\" fill=\"none\" stroke=\"var(--vc-accent)\" stroke-width=\"' + Math.max(d * sc * 0.5, 2.5).toFixed(1) + '\" stroke-linecap=\"round\"\/>';\n        \/\/ Top\/bottom end plates\n        s += '<line x1=\"' + (cx - r - 10) + '\" y1=\"' + oy.toFixed(1) + '\" x2=\"' + (cx + r + 10) + '\" y2=\"' + oy.toFixed(1) + '\" stroke=\"var(--vc-ink)\" stroke-width=\"2\"\/>';\n        s += '<line x1=\"' + (cx - r - 10) + '\" y1=\"' + (oy + drawH).toFixed(1) + '\" x2=\"' + (cx + r + 10) + '\" y2=\"' + (oy + drawH).toFixed(1) + '\" stroke=\"var(--vc-ink)\" stroke-width=\"2\"\/>';\n        \/\/ Dimension: free length\n        var dx = cx + r + 25;\n        s += '<line x1=\"' + dx + '\" y1=\"' + oy.toFixed(1) + '\" x2=\"' + dx + '\" y2=\"' + (oy + drawH).toFixed(1) + '\" stroke=\"var(--vc-ink-muted)\" stroke-width=\"1\"\/>';\n        s += '<line x1=\"' + (dx - 4) + '\" y1=\"' + oy.toFixed(1) + '\" x2=\"' + (dx + 4) + '\" y2=\"' + oy.toFixed(1) + '\" stroke=\"var(--vc-ink-muted)\" stroke-width=\"1\"\/>';\n        s += '<line x1=\"' + (dx - 4) + '\" y1=\"' + (oy + drawH).toFixed(1) + '\" x2=\"' + (dx + 4) + '\" y2=\"' + (oy + drawH).toFixed(1) + '\" stroke=\"var(--vc-ink-muted)\" stroke-width=\"1\"\/>';\n        s += '<text x=\"' + (dx + 6) + '\" y=\"' + (oy + drawH \/ 2 + 4).toFixed(1) + '\" font-size=\"10\" font-family=\"var(--vc-mono)\" fill=\"var(--vc-ink-muted)\">L\u2080=' + L0.toFixed(1) + '<\/text>';\n        \/\/ Dimension: diameter\n        var dy = oy + drawH + 18;\n        s += '<line x1=\"' + (cx - r).toFixed(1) + '\" y1=\"' + dy + '\" x2=\"' + (cx + r).toFixed(1) + '\" y2=\"' + dy + '\" stroke=\"var(--vc-blue)\" stroke-width=\"1\"\/>';\n        s += '<text x=\"' + cx + '\" y=\"' + (dy + 13) + '\" text-anchor=\"middle\" font-size=\"10\" font-family=\"var(--vc-mono)\" fill=\"var(--vc-blue)\">D=' + D.toFixed(1) + '<\/text>';\n        \/\/ Wire diameter label\n        s += '<text x=\"' + (cx - r - 8) + '\" y=\"' + (oy + pitch + 4).toFixed(1) + '\" text-anchor=\"end\" font-size=\"9\" font-family=\"var(--vc-mono)\" fill=\"var(--vc-accent)\">d=' + d.toFixed(1) + '<\/text>';\n        s += '<\/svg>';\n        el.innerHTML = s;\n    }\n\n    var unitBtns = document.querySelectorAll('.vc-unit-btn');\n    unitBtns.forEach(function(btn) {\n        btn.addEventListener('click', function() {\n            unitBtns.forEach(function(b) { b.classList.remove('vc-active'); });\n            this.classList.add('vc-active');\n            unitSystem = this.getAttribute('data-system');\n            var mm = unitSystem === 'imperial';\n            $('vc-wd-unit').textContent = mm ? '(in)' : '(mm)';\n            $('vc-cd-unit').textContent = mm ? '(in)' : '(mm)';\n            $('vc-fl-unit').textContent = mm ? '(in)' : '(mm)';\n            $('vc-g-unit').textContent = mm ? '(psi)' : '(MPa)';\n            try { localStorage.setItem('vc_units', unitSystem); } catch(e) {}\n            calculate();\n        });\n    });\n\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            $('vc-wd').value = this.getAttribute('data-d');\n            $('vc-cd').value = this.getAttribute('data-D');\n            $('vc-fl').value = this.getAttribute('data-L');\n            $('vc-na').value = this.getAttribute('data-n');\n            $('vc-mat').value = this.getAttribute('data-G');\n            $('vc-custom-g-field').style.display = 'none';\n            calculate();\n        });\n    });\n\n    $('vc-form').addEventListener('input', calculate);\n    $('vc-form').addEventListener('change', calculate);\n\n    $('vc-copy-btn').addEventListener('click', function() {\n        var text = 'Compression Spring Design\\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\n            'Wire d: ' + $('vc-wd').value + '\\nCoil D: ' + $('vc-cd').value + '\\nFree Length: ' + $('vc-fl').value + '\\nActive Coils: ' + $('vc-na').value + '\\n' +\n            'Spring Rate: ' + $('vc-r-rate').textContent + '\\nMax Load: ' + $('vc-r-fmax').textContent + '\\nMax Stress: ' + $('vc-r-stress').textContent + '\\nSolid Height: ' + $('vc-r-solid').textContent + '\\n' +\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\nvibromera.eu\/calculators\/' + SLUG + '\/';\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(text).then(function() {\n                var b = $('vc-copy-btn'); b.classList.add('vc-copied');\n                b.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg> Copied!';\n                setTimeout(function() { b.classList.remove('vc-copied'); b.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy'; }, 2000);\n            });\n        }\n    });\n\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\n        btn.addEventListener('click', function() { var s = this.closest('.vc-section'); s.classList.toggle('vc-open'); this.setAttribute('aria-expanded', s.classList.contains('vc-open')); });\n    });\n\n    var faqData = [\n        { q: 'How is the spring rate calculated?', a: '<p>Spring rate k = Gd\u2074\/(8D\u00b3n), where G is shear modulus, d is wire diameter, D is mean coil diameter, and n is active coils. This assumes round wire and negligible pitch angle.<\/p>' },\n        { q: 'What is the Wahl correction factor?', a: '<p>The Wahl factor K<sub>w<\/sub> = (4C\u22121)\/(4C\u22124) + 0.615\/C accounts for curvature and direct shear. C = D\/d is the spring index. It increases calculated shear stress, especially for tight coils (low C).<\/p>' },\n        { q: 'What spring index C should I target?', a: '<p>C = 4 to 12 is typical. C &lt; 4 is hard to manufacture with high stresses. C &gt; 12 leads to tangling and buckling. C = 6\u201310 is optimal.<\/p>' },\n        { q: 'What is solid height and why does it matter?', a: '<p>Solid height = total coils \u00d7 wire diameter. It\\'s the fully compressed length. Never compress to solid in service \u2014 limit working deflection to 80% of available travel.<\/p>' },\n        { q: 'Which shear modulus G should I use?', a: '<p>Music wire: 79.3 GPa, Stainless 302: 69 GPa, Chrome-vanadium: 77.2 GPa, Phosphor bronze: 41.4 GPa. G varies slightly with temperature.<\/p>' }\n    ];\n    var faqList = $('vc-faq-list');\n    faqData.forEach(function(faq) {\n        faqList.innerHTML += '<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>' + faq.q + '<\/span><svg class=\"vc-faq-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button><div class=\"vc-faq-a\"><div class=\"vc-faq-a-inner\">' + faq.a + '<\/div><\/div><\/div>';\n    });\n    faqList.addEventListener('click', function(e) { var b = e.target.closest('.vc-faq-q'); if(b) b.closest('.vc-faq-item').classList.toggle('vc-open'); });\n\n    function saveHistory(entry) {\n        var key = 'vc_history_' + SLUG; var arr = [];\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\n        entry._ts = new Date().toISOString(); arr.unshift(entry);\n        if (arr.length > 10) arr = arr.slice(0, 10);\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\n    }\n\n    function loadParams() {\n        var p = new URLSearchParams(window.location.search);\n        p.forEach(function(v, k) { var el = $(k) || $('vc-' + k); if (el) el.value = v; });\n    }\n\n    function renderFormulas() {\n        try {\n            katex.render('k = \\\\frac{G d^4}{8 D^3 n} \\\\quad [\\\\text{N\/mm}]', $('vc-katex-1'), { displayMode: true, throwOnError: false });\n            katex.render('\\\\tau = \\\\frac{8 F D}{\\\\pi d^3} \\\\times K_w \\\\quad [\\\\text{MPa}]', $('vc-katex-2'), { displayMode: true, throwOnError: false });\n            katex.render('K_w = \\\\frac{4C - 1}{4C - 4} + \\\\frac{0.615}{C}, \\\\quad C = \\\\frac{D}{d}', $('vc-katex-3'), { displayMode: true, throwOnError: false });\n            katex.render('L_{solid} = n_{total} \\\\times d', $('vc-katex-4'), { displayMode: true, throwOnError: false });\n        } catch(e) {}\n    }\n\n    function init() {\n        try { var saved = localStorage.getItem('vc_units'); if (saved === 'imperial') { unitSystem = 'imperial'; unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === 'imperial'); }); } } catch(e) {}\n        loadParams(); renderFormulas(); calculate();\n    }\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u09ac\u09bf\u09a8\u09be\u09ae\u09c2\u09b2\u09cd\u09af\u09c7 \u0985\u09a8\u09b2\u09be\u0987\u09a8 \u09b9\u09c7\u09b2\u09bf\u0995\u09be\u09b2 \u0995\u09ae\u09cd\u09aa\u09cd\u09b0\u09c7\u09b6\u09a8 \u09b8\u09cd\u09aa\u09cd\u09b0\u09bf\u0982 \u0995\u09cd\u09af\u09be\u09b2\u0995\u09c1\u09b2\u09c7\u099f\u09b0\u0964 \u09a4\u09be\u09b0 \u09ac\u09cd\u09af\u09be\u09b8, \u0995\u09af\u09bc\u09c7\u09b2 \u09ac\u09cd\u09af\u09be\u09b8, \u09ae\u09c1\u0995\u09cd\u09a4 \u09a6\u09c8\u09b0\u09cd\u0998\u09cd\u09af, \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09af\u09bc\u09c7\u09b2 \u098f\u09ac\u0982 \u0989\u09aa\u09be\u09a6\u09be\u09a8 \u09b6\u09bf\u09af\u09bc\u09be\u09b0 \u09ae\u09a1\u09c1\u09b2\u09be\u09b8 \u09aa\u09cd\u09b0\u09ac\u09c7\u09b6 \u0995\u09b0\u09c1\u09a8 \u09b8\u09cd\u09aa\u09cd\u09b0\u09bf\u0982 \u09b9\u09be\u09b0, \u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b2\u09cb\u09a1, \u09b6\u09bf\u09af\u09bc\u09be\u09b0 \u099a\u09be\u09aa \u098f\u09ac\u0982 \u0995\u09a0\u09bf\u09a8 \u0989\u099a\u09cd\u099a\u09a4\u09be \u0997\u09a3\u09a8\u09be \u0995\u09b0\u09a4\u09c7\u0964<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100062","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100062\/revisions"}],"predecessor-version":[{"id":100373,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100062\/revisions\/100373"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/media?parent=100062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/categories?post=100062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/tags?post=100062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}