TL;DR: Standard CNC milling holds ±0.005″ (±0.125 mm) by default. A well-equipped shop can hit ±0.0005″ on specific features in forgiving materials. What you can actually achieve depends on feature geometry, material, and workholding, not the machine’s spec sheet. Spec tight tolerance only where function demands it.

The Advertised vs. Achievable Tolerance Gap
Shop capability claims and production-realistic tolerances differ by 5-10x. Machine tool builders market their equipment based on ideal conditions. A standard Haas VF-2 vertical machining center lists a positioning accuracy of ±0.0002″ (0.005 mm) and repeatability of ±0.0001″.
The problem is, positioning accuracy measures the machine moving through empty air. Once a cutting tool engages material, cutting forces, tool deflection, and workholding flex all enter the equation. This is why major digital manufacturing networks like Xometry and Protolabs quote a standard default tolerance of ±0.005″ (0.125 mm) for CNC milled parts.
Requesting tighter tolerances requires manual intervention. A machinist has to slow down feed rates, add spring passes, measure features in-process. A shop can hit ±0.0005″ on a milled feature. They will not apply that precision across an entire part by default.
| Metric | Typical Value | Condition |
|---|---|---|
| Machine Positioning Accuracy | ±0.0002″ (0.005 mm) | No load, ideal temperature |
| Standard Quoted Tolerance | ±0.005″ (0.125 mm) | Default for online quoting |
| Tightest Practical Milling | ±0.0005″ (0.012 mm) | Requires finishing passes, high cost |
A Realistic Tolerance Chart by Feature Type
The tolerance you can actually hold depends more on the feature than the machine. A flat face machined with a large shell mill behaves nothing like a deep pocket cut with a long, thin end mill.
Drilled holes rely entirely on the drill bit’s geometry and tend to wander. A standard jobber drill can reliably hold ±0.005″. To get ±0.0005″ on a hole diameter, the machinist drills undersize, then uses a boring head or a reamer.
The chart below outlines achievable precision for common CNC-milled features in a baseline material like 6061-T6 aluminum.
| Feature Type | Standard Tolerance | Tightest Practical Tolerance | Process Required for Tight Spec |
|---|---|---|---|
| Flat Faces | ±0.005″ | ±0.001″ | Skim pass with face mill |
| Drilled Holes | ±0.005″ | ±0.002″ | Spot drill + high-quality carbide drill |
| Bored / Reamed Holes | ±0.001″ | ±0.0005″ | Drill undersize + bore/ream |
| Shallow Pockets (< 2:1 depth) | ±0.005″ | ±0.001″ | Roughing + separate finishing end mill |
| Deep Pockets (> 4:1 depth) | ±0.010″ | ±0.005″ | Reduced stepdowns, spring passes |
| External Profiles | ±0.005″ | ±0.001″ | Contour finishing pass |
How Material Choice Changes What’s Possible
Material properties dictate how well a part holds its shape during and after machining. This is the section most designers skip, and it’s the one that bites them hardest at inspection.
Aluminum 6061-T6 machines easily, giving you excellent surface finishes and low cutting forces. It also has a Coefficient of Thermal Expansion (CTE) of 23.6 µm/m-°C, which is high. It swells noticeably as it absorbs heat from the cutting process, which is fine on the machine but matters when the part cools down before inspection.
Titanium Ti-6Al-4V has a much lower CTE of 8.6 µm/m-°C, so it’s thermally stable. The catch is titanium’s low thermal conductivity, which concentrates heat right at the cutting edge and chews through tools. As the end mill wears, the feature gradually drifts out of tolerance, and if you’re not measuring between parts in a run, you won’t catch it until the last twenty are already in the bin. 17-4 PH stainless sits in the middle, with a CTE around 10.8 µm/m-°C, but the high cutting forces mean tool deflection becomes your dominant error source instead of thermal growth. I still spec 17-4 for parts where I probably could’ve gotten away with 303 stainless, mostly out of habit from doing a lot of marine work early on. Not always justified.
Plastics present the hardest challenge for tight tolerances. Delrin (Acetal) has a CTE of roughly 110 µm/m-°C, nearly five times aluminum’s. Machining also removes the outer “skin” of extruded plastics, releasing internal stresses that cause the part to warp after it leaves the vise. Holding ±0.001″ on a Delrin part is often physically impossible without extensive annealing. I’ve watched a Delrin bracket measure perfectly at the machine and be visibly bowed by the time it got to the inspection bench twenty minutes later.
| Material | CTE (µm/m-°C) | Machinability | Primary Tolerance Challenge |
|---|---|---|---|
| Aluminum 6061-T6 | 23.6 | Excellent | Thermal expansion during heavy cuts |
| 17-4 PH Stainless | 10.8 | Fair | Tool deflection from high cutting forces |
| Titanium Ti-6Al-4V | 8.6 | Poor | Rapid tool wear changing dimensions |
| Delrin (Acetal) | ~110.0 | Excellent | Extreme thermal expansion, stress warping |
The Cost Curve of Tightening Tolerances
Tightening tolerance from ±0.005″ to ±0.001″ typically increases cost in the ballpark of 1.5-3x. From ±0.001″ to ±0.0002″, you’re looking at a 5-10x multiplier.
The curve is not linear. At ±0.005″, a machinist programs the toolpath, loads the stock, and lets the machine run at full feed rates. Minimal inspection.
When a drawing specifies ±0.001″, the process changes. The machinist separates roughing and finishing tools, stops the machine before the final pass, measures the part, adjusts tool wear offsets in the controller, then runs the finishing pass. That’s real labor time.
Pushing to ±0.0002″ usually exceeds what milling can do at all. Anecdotally, machinists on r/Machinists talk about quoting 5-10x higher the moment they see ±0.0002″ on a print, because they know the part is going to a precision grinder or Wire EDM after the mill is done with it. You also need a climate-controlled inspection room, or you’re measuring noise. You’re paying for specialized secondary equipment, extended setup times, and a much higher scrap rate.
Geometry That Silently Kills Your Tolerance
Even on a perfectly calibrated machine, some part geometries guarantee tolerance failures. The most common culprit is tool deflection.
When an end mill cuts metal, it acts like a cantilever beam. Deflection scales with the cube of the tool’s length (L³) and inversely with the fourth power of its diameter (D⁴). Design a pocket that needs a 0.250″ diameter end mill to reach 1.5″ deep — a 6:1 aspect ratio — and the tool will bend away from the material. The resulting wall tapers. Holding ±0.001″ at the bottom of that pocket isn’t happening.
Thin walls have a similar problem. Walls thinner than 0.030″ (0.76 mm) lack the rigidity to withstand cutting forces, so instead of cutting cleanly, the wall flexes away from the end mill and chatters.
To hold tight tolerances, keep pocket depth-to-width ratios below 4:1, and design walls at least 0.060″ (1.5 mm) thick. If you have to machine deep features, spec looser tolerances at the bottom of the feature than at the top. Nobody will complain. The machinist will send you a thank-you note.
When to Use GD&T Instead of ± Tolerances
Standard ± tolerances control local size, but they don’t control form, orientation, or location in any meaningful way. Geometric Dimensioning and Tolerancing (GD&T) per ASME Y14.5 solves this by defining how features relate to each other.
Use GD&T when functional stackup matters. If you have a pattern of six bolt holes and you apply ±0.005″ to the X and Y coordinates of each one, you’ve created a square tolerance zone. The hole can drift further diagonally than horizontally, which makes no physical sense for a round fastener. A True Position callout creates a cylindrical tolerance zone, which actually mimics how a round bolt fits a round hole.
Milling machines are good at some GD&T controls and bad at others.
- Parallelism and Perpendicularity: easily held to 0.001″ on a 3-axis mill, provided the part is rigid and the vise is trammed.
- True Position: a well-maintained CNC mill can hold true position of 0.002″ for hole patterns machined in a single setup.
- Flatness: milling induces stress. A face mill might cut a surface flat to 0.0005″, but the second you open the vise the part bows. For flatness better than 0.001″, spec grinding.
- Concentricity. Hard to measure, expensive to machine, and the standard itself has largely moved on. Use runout or true position whenever you can.
Why Your Part Came Back Out of Tolerance (Even Though the Machine Can Hold It)
Engineers regularly receive parts that fail incoming inspection even though the shop swears the parts measured perfectly on the machine. This discrepancy almost always comes down to thermal drift or workholding distortion.
Thermal drift happens when the part’s temperature changes between machining and inspection. Take a 100 mm long part made of 6061 aluminum. If the shop floor is 30°C (86°F) during an afternoon machining run, and your QC department inspects the part the next morning in a 20°C (68°F) CMM room, the part will shrink.
Using the CTE of 23.6 µm/m-°C, a 10°C drop causes that 100 mm dimension to shrink by 0.0236 mm (about 0.0009″). If your tolerance was ±0.0005″, the part just failed inspection on physics alone, before anyone did anything wrong.
Workholding distortion is the other big one. To keep a part from flying out of the machine, machinists clamp it tightly in a vise, which compresses the material. The machine then cuts a perfectly round hole into the compressed part. Open the vise, the material springs back, the perfectly round hole is now an oval. Thin-walled rectangular parts in a standard vise are the classic offender here.
How to Spec Tolerance Smartly on a Drawing
Over-tolerancing is the fastest way to inflate part costs, and it’s what I spend most of my time pushing back on during design reviews. The smart approach is to lean on a general tolerance block for 90% of the dimensions, and apply tight specific tolerances only to critical mating features.
Most international drawings use ISO 2768 for general tolerances. ISO 2768-m (medium) is the standard baseline for CNC machining. Under ISO 2768-m, a linear dimension between 30 mm and 120 mm gets a default tolerance of ±0.3 mm (±0.012″).
Spec ISO 2768-f (fine), and that same 30-120 mm dimension now needs ±0.15 mm (±0.006″). Applying “fine” across the whole drawing forces the machinist to inspect non-critical features. Your quote goes up for no functional reason.
Poor Practice: ±0.001″ applied to the overall length, width, and thickness of a baseplate, plus ±0.001″ on every hole location.
Smart Practice: ISO 2768-m in the title block. ±0.0005″ only on the two bearing bores. A 0.002″ True Position callout on the dowel pin holes used for alignment. Everything else floats on the general tolerance.
That drawing will get quoted at maybe a third of what the first version costs, and the finished part will do its job exactly the same.
FAQ
What is the tightest tolerance achievable with CNC milling?
Under tightly controlled conditions, high-end CNC mills can achieve ±0.0002″ (0.005 mm). That requires climate control, specialized tooling, and highly machinable materials. For standard production, ±0.0005″ is the practical limit before you’re switching over to grinding.
Is ±0.001″ realistic for a production part?
Yes, on specific features. Bored holes or milled pockets in aluminum or steel will hold ±0.001″ reliably. Applying it globally to every dimension will drastically increase cycle times and cost.
Do I need a 5-axis machine for tight tolerances?
Not necessarily. A 3-axis machine can hold the same local tolerances as a 5-axis. What a 5-axis does is reduce the number of setups. Every time a machinist flips a part in a 3-axis mill, they introduce a setup error, which stacks up across operations. 5-axis lets you cut multiple sides in a single setup, which kills that specific error source. If your part is a simple plate with features on one or two sides, 5-axis buys you nothing. If it’s a complex housing with critical features on five faces that all have to relate to each other, 5-axis is worth the premium. The volumetric accuracy of the machine itself is typically in the ±0.001″ to ±0.002″ range either way, so don’t assume 5-axis means tighter numbers.
Why does tight tolerance cost so much more?
Slower feed rates, separate roughing and finishing tools, in-process measurement, more frequent tool changes to fight wear, and a higher scrap rate. You’re paying for the time and the risk the shop takes on.
Should I use ISO 2768-m or ISO 2768-f for general tolerances?
ISO 2768-m. Reserve tight tolerances for specific critical dimensions.


