← Back to CNC Programming

Common Beginner Mistakes

This page collects the mistakes that cause most beginner crashes and scrap, with concrete numbers and a checklist. It is not a list of scare stories; each item has a verification step you can run before cycle start.

Level: BScope: Machine-neutral concepts; controller-specific examples are labelledPrerequisite: Diagnosing CNC Program Problems
After this lesson, you can:

Concept

Beginner CNC programming errors cluster in a few predictable areas: offsets, units, modal state, and unsafe motion. Almost every crash traces back to an assumed state rather than a typo. The goal is to make those assumptions explicit before the machine moves.

Why It Matters

A minute of verification prevents hours of cleanup. The cost of a wrong offset or a unit mismatch is a broken tool, a scrapped part, or a crashed spindle. New programmers repeatedly make the same errors until they build a pre-run checklist.

How It Works

The Pre-Run Checklist

  1. Work offset (G54) — set on the correct datum? Measured and verified?
  2. Tool offset (H/D) — matches the physical tool? H for length, D for radius (per controller convention)?
  3. Units — G20 vs G21 matches the drawing?
  4. Distance mode — G90 absolute vs G91 incremental?
  5. Compensation — G40 canceled at the right place? G41/G42 on the correct side?
  6. Canned cycles — G80 where appropriate? Cycle parameters correct?
  7. Spindle and coolant — direction, speed, M08 timing?

Case A: Work Offset Translation

Drawing origin should be at machine (-300,-200). If G54 is mistakenly entered as (-280,-200), a programmed hole at (30,10) lands at machine (-250,-190) instead of (-270,-190). On the part, the hole appears 20 mm in +X. Both X and Y origins must be checked separately; a +20 error in X does not imply a +20 error in Y. Fix G54, not the program.

Case B: Width Is Not a Position Error

A slot programmed to be 20.00 mm wide measures 20.30 mm. Shifting G54 X by 0.30 moves the whole slot; the width is still 20.30. Width errors point to cutter compensation, actual tool diameter, tool wear, or deflection — not work offset. Measure again before changing any offset.

Units: Direction Matters

If the drawing is in inches but the program runs G21 (mm), the values are interpreted as mm and the part comes out 1/25.4 of the expected size. If the drawing is mm but G20 is active, values are treated as inches and the part comes out 25.4× too large. Both directions are possible; check the first block.

G90 vs G91

Starting at X20: G90 X30 moves to X30. G91 X30 moves 30 mm from current, to X50. The block text looks identical; the mode decides where the tool ends. Always confirm distance mode before a rapid move.

Illustration for G90 vs G91. Its dimensions and assumptions are explained in the adjacent lesson text.G90 vs G91 start X20 G90 X30 = end X30 G91 X30 = end X50
Same block text, different endpoint, depending on G90/G91.

Code Review Exercise

Given entry state: G90 G21 G94 G54, H02 and spindle already established, Z at verified R-plane clearance. Fragment: G81 Z-5 R2 F100; X50 Y20. On a Haas mill the bare X50 Y20 repeats the drill cycle. If you meant to reposition, write G00 X50 Y20 (or G80 first), and only then move at clearance.

Example

A beginner program starts with G21 G90 G54, calls T01, and immediately rapid-moves to X50 Y50. The operator should have checked: T01 is the physical tool in the spindle, H01 matches, G54 is on the correct datum, and the Z height at that XY move is above the fixture. If any of these is wrong, the crash happens before the first cut.

Why Modal Codes Bite Beginners

G01, G90, G41, and canned cycles all persist until changed. A code from ten blocks ago still controls motion. Reading the current line alone is not enough; track modal state.

Run the Checklist Every Time

The checklist is not a one-time lesson. Run it on every new program and every new setup. It is cheap insurance.

Reading a Program Before You Run It

Read the whole program once on paper. Identify the startup block, the tool calls, the first cut, and the program end. If anything surprises you, fix it before cycle start.

When in Doubt, Single Block

Single block the first approach, the first cut, and the first retract. Slow motion is safer than a surprise.

Common Mistakes About the Mistakes

Why This List Is Not Just a Warning

Every mistake on this page comes from a real crash or a real scrapped part. The reason they recur is that they all share the same root: the programmer assumed the machine knew what they meant, instead of writing it explicitly. "The tool knows it is at safe Z" — no, it does not. "G40 was already on" — no, you must cancel it explicitly. "G81 was canceled by the next XY" — on Haas, a bare XY repeats the cycle. The fix for every one of these mistakes is the same: write the startup block, write G80, write G40, write G49, and never assume state.

In the absolute tool-length model used on this site, G43 H01 loads a measured tool length. If H01 is left at 0, the machine treats the tool tip as if it were at the gauge line. On a 120 mm tool, that puts the tip 120 mm below where you think it is. The result is a crash into the table. Always verify the H value matches the tool before the first Z move. Different tool-setup methods (preset length, touch-off) use different signs; verify the convention on your machine.

The second most expensive mistake is confusing G54 shift with size error. A slot that measures 20.30 against a 20.00 target is 0.30 too wide. Shifting G54 X moves the whole slot left and right; it does not change the width. The width is set by the D offset (or by the tool center path when running G40). Diagnose by which dimension is off before you change any offset.

Read this page once before every first-article run for the first month. After that, the habit becomes automatic: startup block, offsets verified, safe Z, single block, reduced rapid. The point is not to memorize the list; it is to make the checks unconscious. Use the reduced-rapid value your shop prescribes, not a fixed percentage.

Why These Mistakes Happen

Almost every beginner mistake traces back to one of three root causes: forgetting that the machine remembers state (modal codes, work offsets, tool offsets), confusing programmed coordinates with machine coordinates, or rushing the first part. The startup block exists to erase remembered state. G54 is the translation between program and machine. Dry run and single-block are how you prove the program before you trust it. If you internalize those three ideas, most mistakes stop happening on their own. The rest of this page lists the specific mistakes, grouped by cause, so you can check yourself against each one before pressing cycle start.

Practice

1. A hole appears 20 mm in +X from where expected. What do you check first?

Ans

Measure relative to the part datum, then check whether G54 X was entered with a 20 mm error. Do not edit program coordinates.

2. A slot is 0.3 mm too wide. Is adjusting G54 X the fix?

Ans

No. Shifting G54 moves the slot; width unchanged. Check cutter compensation, actual tool diameter, wear, and deflection.

3. The drawing is in mm but G20 is active. What happens to the part?

Ans

Values are interpreted as inches without conversion, so every linear dimension is 25.4× too large.

Sources