Why this matters: tolerances are the silent cost driver.
On a typical CNC-machined part, the choice between ±0.1 mm and ±0.01 mm can change the price by a factor of 3–5. Not because the feature is harder to physically cut — but because of everything that surrounds it: more setup rigidity, finer tooling, in-process measurement, longer cycle times, and higher scrap rates.
Most engineers intuit this. The mistake we see most often is defaulting to tighter tolerances "just to be safe." A block of dimensions all toleranced at ±0.02 mm — when only two of them actually affect fit — quietly doubles the part cost. This guide gives you the reference tables to call out tight tolerances only where they matter.
ISO 2768 general tolerances — the starting point.
ISO 2768 (replacing older DIN 7168) specifies four classes of general tolerance for linear dimensions: fine (f), medium (m), coarse (c), and very coarse (v). Most CNC drawings are called out as ISO 2768-m or ISO 2768-mK. These are the default tolerances for any dimension not otherwise specified on the drawing.
Here is the full table for linear dimensions:
| Nominal size range (mm) | Fine (f) | Medium (m) | Coarse (c) | Very coarse (v) |
|---|---|---|---|---|
| 0.5 – 3 | ±0.05 | ±0.10 | ±0.20 | — |
| 3 – 6 | ±0.05 | ±0.10 | ±0.30 | ±0.50 |
| 6 – 30 | ±0.10 | ±0.20 | ±0.50 | ±1.00 |
| 30 – 120 | ±0.15 | ±0.30 | ±0.80 | ±1.50 |
| 120 – 400 | ±0.20 | ±0.50 | ±1.20 | ±2.50 |
| 400 – 1000 | ±0.30 | ±0.80 | ±2.00 | ±4.00 |
| 1000 – 2000 | ±0.50 | ±1.20 | ±3.00 | ±6.00 |
Every CNC shop can meet ISO 2768-m without thinking about it. 2768-f is where you start to pay attention — it's still routine, but parts will get inspected more carefully. The "K" suffix (as in 2768-mK) adds general geometric tolerances: flatness, straightness, symmetry, and runout.
How fobproto thinks about tolerances: three tiers.
Standards are good for drawing callouts, but for quoting we group everything into three tiers that roughly map to process capability and cost:
Standard
ISO 2768-m / medium. The cheapest tier. All standard 3-axis CNC parts without second-operation inspection. Use for 80% of dimensions on a typical part.
Precision
ISO 2768-f / fine. Requires CMM inspection and finer tooling. Use on critical fits — bearing bores, locating pins, mating faces.
Ultra-precision
Grinding or jig-boring territory. Requires temperature-controlled finishing, slow final cuts, and full GD&T. Call ahead.
Linear dimensions — tolerance chart by tier and size.
Achievable on milled and turned parts in soft metals (aluminum, mild steel, brass):
| Size range (mm) | Standard | Precision | Ultra-precision |
|---|---|---|---|
| Up to 6 | ±0.10 | ±0.05 | ±0.005 |
| 6 – 30 | ±0.20 | ±0.10 | ±0.010 |
| 30 – 120 | ±0.30 | ±0.15 | ±0.015 |
| 120 – 400 | ±0.50 | ±0.20 | ±0.025 |
| 400 – 1000 | ±0.80 | ±0.30 | ±0.050 |
For harder alloys (stainless, Inconel, titanium, tool steel), expect tolerances roughly 1.5× wider at the same tier — or, equivalently, a 30–50% cost premium to hold the softer-metal tolerance.
Hole diameters and hole-to-hole locations.
Holes are where tolerances get tight fast. ISO 286 defines H7/h6/g6 bore fits — here's what CNC can deliver without second-op reaming or boring:
| Feature | Standard (drilled) | Precision (reamed) | Ultra (bored / ground) |
|---|---|---|---|
| Hole diameter <10 mm | +0.1 / −0.0 | H7 (+0.015) | H6 (+0.009) |
| Hole diameter 10–50 mm | +0.2 / −0.0 | H7 (+0.025) | H6 (+0.016) |
| Hole diameter 50–100 mm | +0.3 / −0.0 | H7 (+0.030) | H6 (+0.019) |
| Hole-to-hole location | ±0.15 | ±0.05 | ±0.015 |
| Perpendicularity to face | 0.1 / 100 mm | 0.03 / 100 mm | 0.01 / 100 mm |
| Bore circularity | 0.05 | 0.015 | 0.005 |
Form and position — GD&T on CNC parts.
ASME Y14.5 geometric tolerances map cleanly onto CNC capabilities — but only if you specify datums correctly. Here are typical achievable values per 100 mm of feature size:
| GD&T callout | Standard | Precision | Ultra-precision |
|---|---|---|---|
| Flatness | 0.05 mm | 0.02 mm | 0.005 mm |
| Straightness | 0.05 mm | 0.02 mm | 0.005 mm |
| Parallelism | 0.08 mm | 0.025 mm | 0.008 mm |
| Perpendicularity | 0.08 mm | 0.025 mm | 0.008 mm |
| Position (hole pattern) | Ø0.2 mm | Ø0.05 mm | Ø0.015 mm |
| Circularity (turned OD) | 0.02 mm | 0.008 mm | 0.002 mm |
| Runout (total) | 0.05 mm | 0.015 mm | 0.005 mm |
| Symmetry | 0.1 mm | 0.03 mm | 0.01 mm |
Surface roughness achievable by process.
| Process | Typical Ra (µm) | Best Ra (µm) | Comments |
|---|---|---|---|
| Face milling (rough) | 3.2 | 1.6 | Standard pocketing/facing |
| Face milling (finish) | 1.6 | 0.8 | Finish pass with ground insert |
| End milling (side wall) | 1.6 | 0.8 | Depends on stepover |
| Turning (rough) | 3.2 | 1.6 | — |
| Turning (finish) | 0.8 | 0.4 | CNMG insert, 0.1 mm/rev |
| Drilling | 3.2 | 1.6 | — |
| Reaming | 0.8 | 0.4 | — |
| Grinding (surface) | 0.4 | 0.1 | Standard precision grind |
| Polishing | 0.2 | 0.025 | Manual / mechanical |
| Wire EDM | 1.6 | 0.4 | 4-pass skim for best Ra |
| Bead blast (glass) | 1.6–3.2 | — | Matte cosmetic finish |
What each CNC process can actually hold.
Different processes hit different tolerance ceilings. Know which process is cutting your feature before you specify the tolerance:
| Process | Typical tolerance | Best tolerance | Best use |
|---|---|---|---|
| 3-axis milling | ±0.05 mm | ±0.015 mm | Prismatic parts, pockets |
| 5-axis milling | ±0.05 mm | ±0.010 mm | Complex contours |
| CNC lathe (2-axis) | ±0.03 mm | ±0.008 mm | Turned OD/ID |
| Swiss turning | ±0.015 mm | ±0.005 mm | Small slender parts |
| Wire EDM | ±0.010 mm | ±0.003 mm | Hardened steel detail |
| Sinker EDM | ±0.015 mm | ±0.005 mm | Sharp corners, cavities |
| Jig grinding | ±0.005 mm | ±0.002 mm | Mold inserts, gauge bores |
Five rules for tolerancing a CNC drawing.
1. Default everything to ISO 2768-mK. Tighten only what matters.
ISO 2768-mK in the title block. Now only features that need tighter tolerance get explicit callouts. This single change reduces cost on almost every CNC drawing we see — because it stops the shop from over-inspecting features that don't matter.