{"id":100108,"date":"2026-02-15T20:16:59","date_gmt":"2026-02-15T20:16:59","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100108"},"modified":"2026-07-02T19:21:04","modified_gmt":"2026-07-02T19:21:04","slug":"gage-rr-calculator","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/mr\/calculators\/gage-rr-calculator\/","title":{"rendered":"Gage R&#038;R Calculator | AIAG MSA | Measurement System Analysis"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Gage R&R Calculator\",\"description\":\"Gage R&R calculator for measurement system analysis per the AIAG MSA methodology (repeatability and reproducibility terminology per ISO 5725).\",\"url\":\"https:\/\/vibromera.eu\/calculators\/gage-rr-calculator\/\",\"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}<\/script>\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"What is Gage R&R?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Gage R&R (Repeatability and Reproducibility) evaluates a measurement system's variation. Repeatability is variation when the same operator measures the same part repeatedly. Reproducibility is variation between different operators measuring the same part.\"}},\n{\"@type\":\"Question\",\"name\":\"What is an acceptable %GRR?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Less than 10% GRR is considered excellent. 10-30% is conditionally acceptable depending on application. Greater than 30% is unacceptable \u2014 the measurement system needs improvement.\"}},\n{\"@type\":\"Question\",\"name\":\"What is ndc?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ndc (number of distinct categories) indicates how many groups of parts the measurement system can reliably distinguish. ndc \u2265 5 is acceptable. ndc = 1.41 \u00d7 (Part variation \/ GRR).\"}},\n{\"@type\":\"Question\",\"name\":\"How many parts and operators are needed?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A typical Gage R&R study uses 10 parts, 3 operators, and 2-3 trials per combination. Minimum is 5 parts and 2 operators with 2 trials. More parts and trials improve the study's statistical power.\"}},\n{\"@type\":\"Question\",\"name\":\"What is the difference between R&R and ANOVA methods?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The Range (R&R) method uses average ranges to estimate variation \u2014 simpler but less precise. ANOVA decomposes total variation statistically and can also estimate operator-by-part interaction. ANOVA is preferred for more accurate results.\"}}\n]}<\/script>\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gage R&R Calculator\",\"item\":\"https:\/\/vibromera.eu\/calculators\/gage-rr-calculator\/\"}]}<\/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:#fff;--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,.06),0 4px 12px rgba(26,26,26,.04);--vc-radius:8px;--vc-radius-lg:12px;--vc-font:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--vc-mono:'JetBrains Mono','Consolas',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}.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:.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:-.02em}.vc-header-subtitle{font-size:15px;color:var(--vc-ink-secondary);margin:0 auto 20px;max-width:600px}\n.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-form{padding:24px}.vc-form-grid{display:grid;grid-template-columns:1fr 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}\n.vc-label{font-size:12px;font-weight:600;letter-spacing:.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 .15s,box-shadow .15s}.vc-select{padding-right:36px;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,.12)}\n.vc-data-grid{margin-top:18px;overflow-x:auto}.vc-data-grid table{width:100%;border-collapse:collapse;font-size:13px}.vc-data-grid th,.vc-data-grid td{padding:6px 8px;border:1px solid var(--vc-border-light);text-align:center}.vc-data-grid th{background:var(--vc-surface-alt);font-size:11px;font-weight:600;text-transform:uppercase;color:var(--vc-ink-secondary)}.vc-data-grid input{width:70px;padding:4px 6px;border:1px solid var(--vc-border);border-radius:4px;font-family:var(--vc-mono);font-size:13px;text-align:center}\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 .5s cubic-bezier(.4,0,.2,1),padding .3s}.vc-results.vc-visible{max-height:4000px;padding:24px}\n.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}\n.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 .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}}\n.vc-rcard{background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;transition:transform .2s}.vc-rcard:hover{transform:translateY(-1px)}.vc-rcard-primary{border-color:var(--vc-accent);border-width:2px;background:linear-gradient(135deg,#fdf6f2,var(--vc-surface));grid-column:1\/-1}\n.vc-rcard-label{font-family:var(--vc-mono);font-size:10px;font-weight:500;letter-spacing:.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:28px;color:var(--vc-accent)}.vc-rcard-unit{font-size:14px;font-weight:400;color:var(--vc-ink-secondary)}.vc-rcard-desc{font-size:13px;color:var(--vc-ink-secondary);margin-top:6px}\n.vc-status-pass{color:var(--vc-green);font-weight:700}.vc-status-warn{color:var(--vc-yellow);font-weight:700}.vc-status-fail{color:var(--vc-red);font-weight:700}\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 .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 .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 .4s cubic-bezier(.4,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}\n.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}\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 .15s}.vc-faq-q:hover{background:#ede9e3}.vc-faq-chevron{width:16px;height:16px;color:var(--vc-ink-muted);flex-shrink:0;transition:transform .25s}.vc-faq-item.vc-open .vc-faq-chevron{transform:rotate(180deg)}.vc-faq-a{max-height:0;overflow:hidden;transition:max-height .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}\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 .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 .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<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-gage-rr\">\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool<\/p>\n    <h1 class=\"vc-header-title\">Gage R&amp;R Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Evaluate measurement system variation using the AIAG MSA methodology. Enter measurements for multiple parts, operators, and trials. Calculate repeatability, reproducibility, %GRR, and ndc.<\/p>\n    <div class=\"vc-badges\"><span class=\"vc-badge\">AIAG MSA<\/span><span class=\"vc-badge\">Range Method<\/span><span class=\"vc-badge\">%GRR &amp; ndc<\/span><\/div>\n<\/header>\n<div class=\"vc-card\">\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-parts\">Parts<\/label><select class=\"vc-select\" id=\"vc-parts\"><option value=\"5\">5<\/option><option value=\"6\">6<\/option><option value=\"7\">7<\/option><option value=\"8\">8<\/option><option value=\"9\">9<\/option><option value=\"10\" selected>10<\/option><\/select><\/div>\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-operators\">Operators<\/label><select class=\"vc-select\" id=\"vc-operators\"><option value=\"2\">2<\/option><option value=\"3\" selected>3<\/option><\/select><\/div>\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-trials\">Trials<\/label><select class=\"vc-select\" id=\"vc-trials\"><option value=\"2\" selected>2<\/option><option value=\"3\">3<\/option><\/select><\/div>\n        <\/div>\n        <div class=\"vc-data-grid\" id=\"vc-grid\"><\/div>\n        <div style=\"margin-top:16px;text-align:center\"><button type=\"button\" class=\"vc-preset-btn\" id=\"vc-load-sample\" style=\"padding:8px 20px;font-size:13px;font-weight:600\">Load Sample Data<\/button><\/div>\n    <\/form>\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\"><h2 class=\"vc-results-title\">Results<\/h2><button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\"><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<\/button><\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\"><div class=\"vc-rcard-label\">%GRR (of Total Variation)<\/div><div class=\"vc-rcard-value\" id=\"vc-r-grr\">\u2014<\/div><\/div>\n            <div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Repeatability (EV)<\/div><div class=\"vc-rcard-value\" id=\"vc-r-ev\">\u2014<\/div><\/div>\n            <div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Reproducibility (AV)<\/div><div class=\"vc-rcard-value\" id=\"vc-r-av\">\u2014<\/div><\/div>\n            <div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Part Variation (PV)<\/div><div class=\"vc-rcard-value\" id=\"vc-r-pv\">\u2014<\/div><\/div>\n            <div class=\"vc-rcard\"><div class=\"vc-rcard-label\">ndc (Distinct Categories)<\/div><div class=\"vc-rcard-value\" id=\"vc-r-ndc\">\u2014<\/div><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udcd8<\/span><span class=\"vc-section-title\">Theory &amp; Formulas<\/span><\/span><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><\/button>\n    <div class=\"vc-section-body\"><div class=\"vc-section-inner vc-theory\">\n        <h3>%GRR Criteria<\/h3>\n        <p><strong>&lt; 10%<\/strong> \u2014 Excellent. Measurement system acceptable.<br><strong>10\u201330%<\/strong> \u2014 Conditionally acceptable. May be acceptable depending on application and cost.<br><strong>&gt; 30%<\/strong> \u2014 Unacceptable. Measurement system needs improvement.<\/p>\n        <p>These %GRR acceptance thresholds and the ndc \u2265 5 criterion come from the AIAG MSA (Measurement Systems Analysis) manual. ISO 5725 defines the underlying concepts of repeatability and reproducibility for measurement methods, but it does not set these acceptance bands.<\/p>\n        <h3>Number of Distinct Categories (ndc)<\/h3>\n        <div class=\"vc-formula-box\" id=\"vc-katex-1\"><\/div>\n        <p>ndc \u2265 5 indicates the measurement system can adequately distinguish between parts.<\/p>\n    <\/div><\/div>\n<\/div>\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udd17<\/span><span class=\"vc-section-title\">Related Calculators<\/span><\/span><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><\/button>\n    <div class=\"vc-section-body\"><div class=\"vc-section-inner\"><div class=\"vc-related\">\n        <a class=\"vc-related-link\" href=\"\/calculators\/measurement-uncertainty\/\">Measurement Uncertainty<\/a>\n        <a class=\"vc-related-link\" href=\"\/calculators\/aql-sampling-calculator\/\">AQL Sampling<\/a>\n    <\/div><\/div><\/div>\n<\/div>\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\u2753<\/span><span class=\"vc-section-title\">Frequently Asked Questions<\/span><\/span><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><\/button>\n    <div class=\"vc-section-body\"><div class=\"vc-section-inner\"><div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div><\/div><\/div>\n<\/div>\n<div class=\"vc-promo\"><div class=\"vc-promo-text\"><strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>High-precision vibration measurement instruments for reliable MSA-compliant data collection.<\/div><a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a><\/div>\n<footer class=\"vc-footer\"><p>&copy; 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p><p style=\"font-size:12px;margin-top:4px;\">Based on the AIAG MSA manual; repeatability &amp; reproducibility terminology per ISO 5725. Last updated: July 2026<\/p><div class=\"vc-footer-links\"><a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a><a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a><\/div><\/footer>\n<\/div>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\n<script>\n(function(){\n'use strict';\nfunction $(id){return document.getElementById(id)}\nfunction fmt(n,d){if(isNaN(n))return'\u2014';return n.toFixed(d===undefined?4:d)}\n\nvar D2={2:1.128,3:1.693};\nvar d2Star={1:1.414,2:1.128,3:1.693,4:2.059,5:2.326,6:2.534,7:2.704,8:2.847,9:2.970,10:3.078,15:3.472};\n\nfunction buildGrid(){\n    var np=parseInt($('vc-parts').value),no=parseInt($('vc-operators').value),nt=parseInt($('vc-trials').value);\n    var html='<table><thead><tr><th>Part<\/th>';\n    for(var o=1;o<=no;o++)for(var t=1;t<=nt;t++)html+='<th>Op'+o+' T'+t+'<\/th>';\n    html+='<\/tr><\/thead><tbody>';\n    for(var p=1;p<=np;p++){html+='<tr><td>'+p+'<\/td>';for(var o=1;o<=no;o++)for(var t=1;t<=nt;t++)html+='<td><input type=\"number\" step=\"any\" class=\"vc-meas\" data-p=\"'+p+'\" data-o=\"'+o+'\" data-t=\"'+t+'\"><\/td>';html+='<\/tr>'}\n    html+='<\/tbody><\/table>';\n    $('vc-grid').innerHTML=html;\n    $('vc-grid').addEventListener('input',calculate);\n}\n\nfunction getData(){\n    var np=parseInt($('vc-parts').value),no=parseInt($('vc-operators').value),nt=parseInt($('vc-trials').value);\n    var data=[];\n    var inputs=$('vc-grid').querySelectorAll('.vc-meas');\n    var complete=true;\n    inputs.forEach(function(inp){\n        var v=parseFloat(inp.value);\n        if(isNaN(v))complete=false;\n        data.push({p:parseInt(inp.getAttribute('data-p')),o:parseInt(inp.getAttribute('data-o')),t:parseInt(inp.getAttribute('data-t')),v:v});\n    });\n    return{data:data,np:np,no:no,nt:nt,complete:complete};\n}\n\nfunction calculate(){\n    var d=getData();if(!d.complete){$('vc-results').classList.remove('vc-visible');return}\n    var np=d.np,no=d.no,nt=d.nt,data=d.data;\n    \/\/ Range method (Average & Range)\n    \/\/ 1. For each operator-part combo, calc range across trials\n    var ranges=[];\n    for(var o=1;o<=no;o++){\n        for(var p=1;p<=np;p++){\n            var vals=data.filter(function(x){return x.o===o&&x.p===p}).map(function(x){return x.v});\n            ranges.push(Math.max.apply(null,vals)-Math.min.apply(null,vals));\n        }\n    }\n    var Rbar=ranges.reduce(function(a,b){return a+b},0)\/ranges.length;\n    \/\/ EV = Rbar \/ d2 (for number of trials)\n    var EV=Rbar\/(D2[nt]||1.128);\n    \/\/ 2. Operator averages\n    var opAvgs=[];\n    for(var o=1;o<=no;o++){\n        var vals=data.filter(function(x){return x.o===o}).map(function(x){return x.v});\n        opAvgs.push(vals.reduce(function(a,b){return a+b},0)\/vals.length);\n    }\n    var Xdiff=Math.max.apply(null,opAvgs)-Math.min.apply(null,opAvgs);\n    var d2star_op=D2[no]||1.128;\n    var AV_sq=(Xdiff\/d2star_op)*(Xdiff\/d2star_op)-(EV*EV)\/(np*nt);\n    var AV=AV_sq>0?Math.sqrt(AV_sq):0;\n    var GRR=Math.sqrt(EV*EV+AV*AV);\n    \/\/ 3. Part variation\n    var partAvgs=[];\n    for(var p=1;p<=np;p++){\n        var vals=data.filter(function(x){return x.p===p}).map(function(x){return x.v});\n        partAvgs.push(vals.reduce(function(a,b){return a+b},0)\/vals.length);\n    }\n    var Rp=Math.max.apply(null,partAvgs)-Math.min.apply(null,partAvgs);\n    var d2star_p=d2Star[np]||3.078;\n    var PV=Rp\/d2star_p;\n    var TV=Math.sqrt(GRR*GRR+PV*PV);\n    var pctGRR=TV>0?(GRR\/TV)*100:0;\n    var ndc=PV>0?Math.floor(1.41*(PV\/GRR)):0;\n\n    var cls=pctGRR<10?'vc-status-pass':pctGRR<30?'vc-status-warn':'vc-status-fail';\n    var label=pctGRR<10?'Excellent':pctGRR<30?'Acceptable':'Unacceptable';\n    $('vc-r-grr').innerHTML='<span class=\"'+cls+'\">'+fmt(pctGRR,1)+'%<\/span> <span class=\"vc-rcard-unit\">\u2014 '+label+'<\/span>';\n    $('vc-r-ev').innerHTML=fmt(EV,4)+' <span class=\"vc-rcard-unit\">('+fmt(TV>0?EV\/TV*100:0,1)+'%)<\/span>';\n    $('vc-r-av').innerHTML=fmt(AV,4)+' <span class=\"vc-rcard-unit\">('+fmt(TV>0?AV\/TV*100:0,1)+'%)<\/span>';\n    $('vc-r-pv').innerHTML=fmt(PV,4)+' <span class=\"vc-rcard-unit\">('+fmt(TV>0?PV\/TV*100:0,1)+'%)<\/span>';\n    $('vc-r-ndc').innerHTML=ndc+(ndc>=5?' <span class=\"vc-status-pass\">\u2713<\/span>':' <span class=\"vc-status-fail\">\u2717 (need \u22655)<\/span>');\n    $('vc-results').classList.add('vc-visible');\n}\n\n$('vc-parts').addEventListener('change',buildGrid);\n$('vc-operators').addEventListener('change',buildGrid);\n$('vc-trials').addEventListener('change',buildGrid);\n\n$('vc-load-sample').addEventListener('click',function(){\n    var sample=[[10.1,10.2,10.1,10.3,10.2,10.2],[10.4,10.4,10.5,10.4,10.4,10.5],[9.8,9.9,9.8,9.9,9.9,9.8],[10.0,10.1,10.0,10.1,10.0,10.1],[10.3,10.2,10.3,10.3,10.2,10.3],[9.7,9.7,9.7,9.8,9.7,9.7],[10.5,10.6,10.5,10.5,10.6,10.5],[10.2,10.2,10.2,10.3,10.2,10.3],[9.9,10.0,9.9,10.0,10.0,9.9],[10.1,10.1,10.1,10.2,10.1,10.1]];\n    $('vc-parts').value='10';$('vc-operators').value='3';$('vc-trials').value='2';\n    buildGrid();\n    var inputs=$('vc-grid').querySelectorAll('.vc-meas');\n    var idx=0;\n    for(var p=0;p<10;p++){for(var i=0;i<6;i++){if(inputs[idx])inputs[idx].value=sample[p][i];idx++}}\n    calculate();\n});\n\n$('vc-copy-btn').addEventListener('click',function(){var text='Gage R&R Results\\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n%GRR: '+$('vc-r-grr').textContent+'\\nEV: '+$('vc-r-ev').textContent+'\\nAV: '+$('vc-r-av').textContent+'\\nPV: '+$('vc-r-pv').textContent+'\\nndc: '+$('vc-r-ndc').textContent+'\\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\/gage-rr-calculator\/';if(navigator.clipboard){navigator.clipboard.writeText(text).then(function(){var b=$('vc-copy-btn');b.classList.add('vc-copied');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!';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\ndocument.querySelectorAll('.vc-section-toggle').forEach(function(btn){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\nvar faqData=[\n    {q:'What is Gage R&R?',a:'<p><strong>Gage R&R<\/strong> evaluates measurement system variation. <strong>Repeatability<\/strong> (EV) = variation when same operator re-measures same part. <strong>Reproducibility<\/strong> (AV) = variation between operators.<\/p>'},\n    {q:'What is an acceptable %GRR?',a:'<p><strong>&lt;10%<\/strong> = Excellent. <strong>10\u201330%<\/strong> = Conditionally acceptable. <strong>&gt;30%<\/strong> = Unacceptable \u2014 needs improvement.<\/p>'},\n    {q:'What is ndc?',a:'<p><strong>ndc<\/strong> (number of distinct categories) = how many part groups the system can distinguish. ndc \u2265 5 is acceptable. ndc = 1.41 \u00d7 (PV\/GRR).<\/p>'},\n    {q:'How many parts and operators needed?',a:'<p>Typical: <strong>10 parts, 3 operators, 2\u20133 trials<\/strong>. Minimum: 5 parts, 2 operators, 2 trials.<\/p>'},\n    {q:'Range vs ANOVA method?',a:'<p><strong>Range method<\/strong>: simpler, uses average ranges. <strong>ANOVA<\/strong>: more precise, decomposes variance statistically and captures operator\u00d7part interaction. This calculator uses the Range method.<\/p>'}\n];\nvar fl=$('vc-faq-list');faqData.forEach(function(f){fl.innerHTML+='<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>'+f.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\">'+f.a+'<\/div><\/div><\/div>'});\nfl.addEventListener('click',function(e){var b=e.target.closest('.vc-faq-q');if(b)b.closest('.vc-faq-item').classList.toggle('vc-open')});\n\nfunction init(){\n    try{katex.render('ndc = 1.41 \\\\times \\\\frac{PV}{GRR}',$('vc-katex-1'),{displayMode:true,throwOnError:false})}catch(e){}\n    buildGrid();\n}\nif(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Free Gage R&#038;R calculator per ISO 5725. Enter measurements from multiple parts, operators, and trials to calculate repeatability, reproducibility, %GRR, and number of distinct categories.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100108","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/calculator\/100108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":3,"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/calculator\/100108\/revisions"}],"predecessor-version":[{"id":102118,"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/calculator\/100108\/revisions\/102118"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/media?parent=100108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/categories?post=100108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/mr\/wp-json\/wp\/v2\/tags?post=100108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}