How to Run a Gauge R&R Study (and Why a Passing %GRR Can Still Fail the Part)
Back to blog

How to Run a Gauge R&R Study (and Why a Passing %GRR Can Still Fail the Part)

A Gauge R&R study can clear the 10% line and still be worthless, because the number is being read against the wrong denominator. A worked study, run through QualityEngineer.ai's own Analyze module, showing what %GRR against tolerance hides, why NDC catches it, and how Element 8 coverage finds the gauge nobody studied at all.

Daniel CrouseDaniel Crouse,September 9, 2026,9 min read

How to Run a Gauge R&R Study (and Why a Passing %GRR Can Still Fail the Part)

A strategic sourcing manager put it plainly in a LinkedIn thread on MSA last summer: "The MSA is critical as well to ensure R&R, less 10%." Fair enough, that is the number everyone learns first. His own follow-up is the one that matters: less than ten percent of what? A %GRR calculated against a wide tolerance and a %GRR calculated against the actual spread of your study parts can land in completely different places, and the AIAG manual lets you report either one. Tolerance flatters a gauge on a wide print. A gauge that looks like a clean pass against tolerance can still be unable to tell your parts apart.

We built the Analyze module to stop that gap from hiding inside a green checkmark. This post walks one Gauge R&R study end to end, using the site's own ANOVA math, and shows exactly where a study can pass on paper and fail on the floor.

Less than ten percent, against what?

Open backend/app/services/stats/msa.py, the module behind the Analyze module's Gauge R&R calculation, and the answer to the denominator question is right there in the return payload. Every study computes two different %GRR numbers, not one:

  • pct_grr_tolerance, GRR study variation divided by the print's tolerance band (USL minus LSL)
  • pct_grr_sv, GRR variation divided by total study variation (GRR plus part-to-part variation)

Both numbers are returned to the UI. Only one of them decides pass, conditional, or fail. The status field in the code is assigned directly from pct_grr_sv, the percent of study variation, never from the tolerance-based number. Read the comment on that line: grr_percent = pct_grr_sv # %GRR of study variation. The tolerance percentage rides along for context. It never gates the verdict.

That is not an arbitrary implementation choice, it is the AIAG MSA 4th Edition's own preferred convention when a study is meant to answer "can this system see the parts," rather than "does this system fit inside the print." A gauge measuring a loose-tolerance bracket can post a tiny %GRR against tolerance while still being a poor measurement system relative to the actual part variation it needs to resolve. The site reports both so an engineer can explain a conditional or marginal result to a customer, but it will not let a wide print quietly launder an unacceptable gauge into a passing one.

A study that passes against tolerance and fails against itself

Here is a real run, not a hypothetical. Ten parts, three operators, three trials each, ninety measurements, fed through the same Gauge R&R calculation the Analyze module runs, with a tolerance band of 0.5 mm (a loose print, the kind of dimension where "the tolerance is wide, so the gauge is fine" gets said out loud in a review). The parts were deliberately pulled from a narrow slice of the process, the way a rushed study grabs whatever ten pieces are sitting on the bench instead of walking the full production range.

The output:

MetricValue
%GRR against tolerance1.83%
%GRR against study variation36.32%
NDC3
StatusUnacceptable

Read the first row on its own and this study looks closed. 1.83% against a 0.5 mm tolerance is the kind of number that gets rubber-stamped in a Friday-afternoon review. Read the second row, computed from the exact same ninety measurements, and the same gauge is unacceptable, more than a third of the observed variation in this study came from the measurement system, not the parts. NDC of 3 confirms it independently: the AIAG floor is 5, and a gauge that cannot separate more than three groups of parts cannot support a real capability study, no matter how the tolerance-based number reads.

Cross-checking the same result through the adequacy evaluator (evaluate_msa_adequacy in the same module, the function the Analyze module calls to turn a raw %GRR and NDC into a recommendation) returns the same verdict from a different angle: GRR status unacceptable, NDC marginal, overall INADEQUATE, "not suitable for quality decisions, corrective actions required." Three separate reads of the same ninety numbers, all landing on the same answer, none of them fooled by the tolerance-flattering denominator.

The fix in this specific case is not a better gauge. It is a better study. Ten parts pulled from a narrow slice of production cannot demonstrate what a measurement system can resolve across the part's real range. Rerun with parts spanning the full tolerance, and the same gauge often clears both numbers.

The study passes and the gauge still cannot see the process

This is the trap the acceptance-criteria math alone does not warn you about, and it is why Element 8 coverage on the site does not stop at "was a study attached." The MSA coverage matrix (msa_coverage.py, the module behind Element 8's coverage check) reads the study's own verdict and applies a rule that catches exactly the gap above: a study with an acceptable %GRR still reads as weak, not covered, when its NDC comes back under 5.

if status == "acceptable":
    if study_type == "grr" and ndc < 5:
        return "weak", status
    return "covered", status

That single condition is the difference between an Element 8 that looks complete and one that is actually defensible. A characteristic with an acceptable-looking %GRR and a marginal NDC gets flagged with its own advisory text on the coverage matrix: "MSA marginal, %GRR X% but ndc Y (< 5): the system cannot adequately distinguish parts. Review before relying on this data." It is a soft advisory, never a hard block on submission, the same soft-gate convention the rest of Element 8 follows. But it surfaces on the page the reviewer actually looks at, not buried three tabs into a study report nobody reopens.

Every control-plan gauge needs a study, and the one without it is the finding

A passing study on the wrong gauge is one failure mode. A control plan that references a gauge with no study behind it at all is a more common one, and it is where a package usually gets caught. Running the same worked example's unacceptable result through the control-plan-to-MSA linkage check alongside a second, unstudied gauge produces two separate findings, not one:

  • A critical finding on the gauge with the 36.3% GRR result: "Control plan uses gauges with unacceptable MSA results... Measurement system is inadequate."
  • A separate critical finding on the second gauge, which the control plan references and no study covers at all: "Control plan specifies gauges without MSA studies. These measurement systems have not been validated for capability."

Those are two different problems that a rejected PPAP package often carries at the same time: one gauge that was studied and shouldn't have passed, and one gauge that was never studied in the first place. Element 8 coverage exists to put both findings in front of the engineer before a reviewer finds them, matching PPAP Element 8's own requirement that every gauge used to measure a critical or significant characteristic carry a study, and IATF 16949 Clause 7.1.5.1.1's requirement that the organization conduct appropriate statistical studies on its measurement systems, referencing the AIAG manual as the method.

"It is a mistake to perform any time-based calibration"

One practitioner put the interval question sharper than most quality manuals do: "It is a mistake to perform annual, or any time-based, calibrations." A calendar interval is a compliance floor, not a description of when a gauge actually drifts. A metrology quality manager at a calibration lab described the same problem from the other side: walking a torque screwdriver interval down from twelve months to one and finding the tools still needed adjustment every time, the fail rate never flattened, because the interval was a number in a spreadsheet, not a number tied to the equipment's own out-of-tolerance history.

Here is exactly what the calibration record on the site does and does not do about that. Every CalibrationRecord carries as_found and as_left readings, and for an org running IATF 16949 as an active standard, both fields are required the moment a calibration result comes back fail (_FAIL_REQUIRED_BY_STANDARD in backend/app/api/v1/calibration.py). A failed calibration also opens an OutOfToleranceEvent, capturing the disposition, adjust and recalibrate, send external, retire, or accept the deviation under a documented justification, with a named approver. That is a real, structured history: every drift event on every gauge, dated and disposed.

What is not wired up yet is the other half of that quality manager's point: nothing reads that out-of-tolerance history back into the interval itself. calibration_interval_days is a fixed number set on the equipment record and only moves when someone edits it by hand; the reminder task that fires recall notices reads that same fixed number, it does not compute a shorter interval from a gauge's own OOT pattern. The site captures the evidence an interval-from-history decision would need. It does not yet make that decision for you. If your calibration program needs a usage-based or history-based interval today, that judgment still belongs to the person reading the OOT events, not to the schedule.

The operator with the best score became the work instruction

One more pattern worth naming, because it shows up in the ANOVA breakdown and rarely gets talked about outside a metrology lab. When reproducibility (the operator-to-operator variance component) dominates a GRR result over repeatability (the gauge's own variance), the fix usually is not a new gauge, it is a rewritten measurement procedure. One practitioner's experience captured this well: the operator who consistently posted the tightest R&R numbers became the de facto author of the work instruction, because whatever that person was doing with their hands, their grip, their approach angle, their part-seating habit, was the actual technique the rest of the study needed to match.

The site's ANOVA table breaks GRR into repeatability and reproducibility separately for exactly this reason, so a high-reproducibility, low-repeatability result reads as an operator-technique problem, not a hardware problem, before anyone spends money on a new gauge that was never the issue.

Running your own study

The Analyze module takes the same appraiser-part-trial matrix used in the worked example above (parts, operators, replicate readings) and returns %GRR against both tolerance and study variation side by side, the NDC, the ANOVA breakdown of repeatability against reproducibility, and the AIAG pass, conditional, or unacceptable read, driven off study variation the way the underlying math intends. Attach the result to Element 8 and the coverage matrix will tell you, per characteristic, whether the study behind that gauge is covered, weak, or missing, before a customer's reviewer asks the same question. Start a 30-day trial, no credit card required.

Related reading: Gauge R&R acceptance criteria and what AIAG requires, PPAP Element 8 coverage beyond the GRR report, what actually gets a PPAP package rejected, Cpk vs Ppk for PPAP submission, building a control plan that survives an audit, PPAP Element 11 initial process studies, and Western Electric rules for SPC control charts.

Related reading

Daniel Crouse
Daniel Crouse

Founder, QualityEngineer.ai

15+ years in supplier quality, PPAP, and manufacturing systems. Built QualityEngineer.ai because quality engineers deserve better tools than Excel.

View profile →
Built for quality engineers

Ready to automate your PPAP workflow?

QualityEngineer.ai handles the documentation-heavy parts of quality engineering: PPAP, supplier assessments, document analysis, CAPA, and more. Start with a free 30-day trial.