Top CNC Error Codes, Alarms and Programming Mistakes (Fanuc & Haas): 2025 Mega Troubleshooting Guide
CNC machines almost never “break randomly”. In more than 90% of cases the root cause is a predictable combination of alarm code + human mistake. This guide collects the most searched CNC errors, real-world alarm codes and the programming mistakes behind them, with a strong focus on Fanuc and Haas controls.
Use this as a living reference on your site: it’s highly shareable, bookmarkable and solves real problems that machinists Google every single day.
1. The 10 Most Costly CNC Programming Mistakes
1.1 Wrong Sign in Z: G00 Z-100 vs G00 Z100
One of the most dangerous rapid errors:
- Operator thinks the tool is above the part and wants to rapid up.
- Instead of typing: G00 Z100. they type: G00 Z-100.
- On most mills, negative Z is down into the table/part.
- Result: full-rapid crash into workpiece, vise, or rotary.
How to avoid:
- Always visualize Z: negative = into the part, positive = away from it.
- Use a safe retract macro (e.g.
G91 G28 Z0.orG53 Z0.) instead of hand-typing large Z distances. - Do not allow operators to edit Z-rapids at the machine on production programs.
1.2 G90 / G91 Mode Confusion (Absolute vs Incremental)
Another classic error: mixing incremental and absolute without realizing it.
Example:
- Program expects G90 (absolute), but user added: G91
G01 Z-5. F200. - Next move: G01 X100. Y50. now happens in incremental mode, sending the tool relative to the last position instead of to absolute coordinates.
Symptoms:
- Tool suddenly travels “too far”.
- Hole patterns shifted in X/Y.
- Random crashes into clamps or fixtures.
Prevention:
- Always explicitly cancel with
G90when leaving a local incremental section. - Use comments like
(...) ; G91 SECTION STARTand(...) ; BACK TO G90. - In post processors, never rely on “modal memory” for motion modes.
1.3 Wrong Work Offset (G54 vs G55 vs G56…)
Programming is correct, tool is correct, but the wrong work offset is active:
- Part 1 uses G54, part 2 on the same fixture uses G55.
- Operator forgets to switch, program runs with G54 values on the G55 part.
- Result: perfectly executed cut at the wrong location.
Checklist:
- Always show active offset on setup sheet.
- Put a clear comment at program top: (THIS PROGRAM USES G55 ONLY)
- For multi-vise setups, consider printing a picture of the table with G54/G55/G56 labels.
1.4 Tool Length Offset Mismatch (H-Number Error)
Example:
- Tool in spindle: T12 (150 mm long).
- Program uses
G43 H11. - H11 belongs to a completely different tool (e.g. 200 mm).
- Machine will drive Z 50 mm off target.
How it happens:
- Copy–paste program from another tool.
- Manual tool change without offset adjustment.
Solution:
- Always keep T number = H number on mills (T12 → H12).
- Post processor: force H to match tool number automatically.
1.5 Wrong Tool Radius Compensation (G41/G42)
Typical error patterns:
- Using G41 when tool should be on the other side → undersized or oversized parts.
- Entering wrong D value (cutter radius).
- Entering diameter instead of radius.
Signs:
- Profile is consistently off by 2–3× tool radius.
- Corners look rounded or offset.
Prevention:
- Always verify travel direction vs G41/G42 on paper.
- Use test cut on scrap for new programs.
- Document D-table values.
1.6 Forgetting to Cancel Modal States
Commonly forgotten modes:
- G41 / G42 (cutter comp)
- G43 / G43.4 / TCP
- G68 (coordinate rotation)
- G93 (inverse time feed)
- G52 (local coordinate system)
- G54.4 / DWO (dynamic work offset)
If not cancelled, the next operation behaves “mysteriously”:
- Feeds look insane (G93 still active).
- Toolpath rotated (G68 still active).
- Work origin shifted (G52 still on).
Rule: any time you start a new operation, reset critical modes explicitly:
G40 G49 G69 G94 G54etc. as a “safe line”.
1.7 Using G00 in Tight Spaces
Rapid motion is unforgiving. Typical mistake:
- Roughing left stock close to clamps or walls.
- Finishing toolpath with
G00rapids skims only 0.5 mm away from clamps. - Toolholder or collet hits the clamp during G00 reposition.
Safer practice:
- Use
G01with high feed (F5000/F10000) in tight areas. - Reserve full
G00rapids for safe-clearance zones only.
1.8 Forgetting Decimal Points
On controls where no decimal means full unit:
- Intended: Z-0.5
- Typed: Z-5
or:
- Intended: X1.
- Typed: X.1 or X1 (different meaning by control).
Always:
- Use fixed format from your post (e.g. 4 decimal places: Z-0.5000).
- Avoid editing coordinates manually on the control when possible.
1.9 Wrong Plane Selection (G17 / G18 / G19)
Running an arc (G02/G03) in the wrong plane is a classic error:
- Program was in G17 (XY plane), but someone inserted G18 or G19 earlier.
- Circular moves now become invalid → arc alarm or weird motion.
Prevention:
- At program start of any milling operation, force: G17 G90 G40 G49
- If using G18/G19 for special features, always revert back to G17 immediately after.
1.10 Absolute vs Machine Coordinates Confusion
Using G53 or machine coordinate values incorrectly:
- Operator assumes G53 Z0 is work zero, while it is actually machine Z home.
- Call: G53 Z0. while part is near spindle → dangerous, high-speed Z move.
Only use G53 if you fully understand machine coordinate system and home positions.
2. Most Searched Fanuc Error Codes and Their Meaning
Note: exact text may vary by builder, but the logic is very similar across Fanuc-based machines.
2.1 Overtravel and Stroke Alarms (500–504 Range)
Typical alarms:
- 500: X AXIS OVERTRAVEL
- 501: Y AXIS OVERTRAVEL
- 502: Z AXIS OVERTRAVEL
Cause:
- Program tries to move outside soft limits.
- Wrong zero point.
- Wrong sign in move (e.g. X instead of -X).
Fix:
- Switch to machine coordinates display.
- Check where axis actually is vs travel limits.
- Manually jog back into safe zone.
- Review program for wrong coordinates / offsets.
2.2 SERVO ALARM 414 / 413 / 420 (Servo Errors)
Highly searched Fanuc alarms:
- 414 SERVO ALARM (X or Y) – Excessive following error.
- 413 SERVO ALARM – Overload.
- 420 SERVO ALARM – Overtravel or servo parameter error.
Typical reasons:
- Axis tries to accelerate too quickly (bad accel/dec settings).
- Axis jammed mechanically (chip build-up, crash).
- Trying to push tool into solid material because of offset error.
Action:
- Inspect for physical damage or crash marks.
- Check axis moves smoothly by handwheel.
- Reduce feed / depth; verify work and tool offsets.
2.3 007, 010, 014 Program Format Errors
Common format/sequence alarms:
- 007: SEQUENCE NUMBER ERROR
- 010: ILLEGAL G-CODE IN BLOCK
- 014: UNKNOWN ADDRESS/CHARACTER
Causes:
- Mixed metric/inch formats incorrectly.
- Illegal combo like
G21 G20same line. - Typo in letter (e.g.
F*100orZ-..5).
Fix:
- Inspect the line the alarm points to.
- Remove non-ASCII characters from copy–paste.
- Check posts and DNC transfer for corruption.
2.4 086 / 087 Communication / I/O Alarms
- 086: DR SIGNAL OFF
- 087: BUFFER OVERFLOW / I/O ERROR
Occurs during program transfer or DNC.
Checklist:
- Wrong baud rate / parity settings.
- Cable wiring incorrect.
- Program name too long or unsupported characters.
- Memory full.
2.5 300 APC ALARM (Absolute Pulse Coder)
Very searched alarm when machines lose home position.
Typical causes:
- Battery failure for absolute encoders.
- Axis moved with power off.
- New motor/encoder installed.
Fix:
- Replace batteries.
- Re-home and set new reference using maintenance procedure.
- Keep a log of reference marks and parameters.
3. Most Searched Haas Alarm Types
3.1 Overtravel / Travel Limit Alarms
Similar logic to Fanuc:
- “X AXIS OVER TRAVEL”
- “TOOL CHANGER MISMATCH”
- “Z AXIS NEGATIVE LIMIT SWITCH TRIGGERED”
Often caused by:
- Wrong G54/G55.
- Wrong sign or too large coordinate.
- Misaligned tool change position.
Good practice:
- Always use a tested safe position before tool change.
- Document maximum safe Z above part for each setup.
3.2 Spindle and Vector Drive Alarms
Symptoms:
- “SPINDLE DRIVE FAULT”
- “VECTOR DRIVE FAULT”
Causes:
- Tool overloaded (too heavy cut).
- Short circuit in motor or cable.
- Power quality issues.
- Sudden crash at high RPM.
Actions:
- Inspect tool and part for crash marks.
- De-rate feed and depth.
- If alarm repeats with no mechanical cause → call service.
3.3 Probe & Tool Setter Alarms
- “PROBE FAILURE”
- “TOOL SETTER NOT FOUND”
- “MACRO VARIABLE OUT OF RANGE”
Often due to:
- Incorrect approach distance.
- Wrong macro variable IDs in a custom probing routine.
- Loose or damaged probe stylus.
4. High-Impact “Crash Scenarios” That People Constantly Search
4.1 G00 Z-100 Crash Case Study
Realistic sequence:
- Tool is sitting at Z5 above the part.
- Operator wants to retract to clearance.
- Instead of
G00 Z100.(up), typesG00 Z-100.. - Machine rapids at full speed into:
- The part.
- The vise.
- The rotary table.
- Or even directly into the table.
Lessons:
- Use machine-level retracts:
G91 G28 Z0.→ always goes to home via incremental path.- Or
G53 Z0.→ direct move in machine coordinates (if safe). - Avoid large numeric edits at the control; change CAM, repost, re-load if possible.
- Set soft limits and use
G22stroke protection where available.
4.2 G91 Incremental Disaster
Example:
- You think: G01 Z-5. F200. is going to Z-5 absolute, but machine is in G91.
- After 10 repetitions, you are 50 mm deeper than expected.
- Often seen in macro loops and drilling subprograms.
Solution:
- Inside loops, always force mode explicitly at the start:
G90orG91, never rely on previous state.- After returning from subprograms, reset mode in main program.
5. Systematic CNC Alarm Troubleshooting Workflow
Instead of guessing, use a professional step-by-step approach:
- Read the exact alarm number and full text.
Don’t ignore minor words like “X AXIS”, “SPINDLE”, “APC”, “PARITY”. - Check which block raised the alarm.
Most controls show the line number or last executed block. - Classify the error:
- Motion (overtravel, servo, soft limit).
- Format (illegal G-code, bad character).
- I/O (communication, memory, file).
- Logic (macro variables, out of range, missing data).
- Inspect the program segment.
- Look for wrong signs, G90/G91, leftover G68, G93, etc.
- Confirm tool, offset, work offset combination.
- Check mechanical and setup factors.
- Clamps, vises, rotaries, fixture heights.
- Tool length and diameter measurements.
- Probing offsets.
- Re-run in Single Block + Dry Run + Feed Hold.
- Use slow feed and keep hand on E-stop.
- Watch machine behavior in machine coordinates.
- Document the root cause.
- Build an internal “alarm knowledge base”.
- Record alarm number, cause and fix so it’s searchable later.
6. Building a Permanent CNC Error Code Knowledge Base
Content that gets constant search traffic usually has these characteristics:
- Covers real alarm numbers and real messages.
- Groups errors by machine brand (Fanuc, Haas, Siemens, Heidenhain).
- Explains:
- What the alarm really means in practice.
- Which human mistake usually causes it.
- How to fix and how to prevent it next time.
- Includes real G-code examples of bad vs. good practice:
G00 Z-100. (DANGEROUS IF PART IS BELOW)G91 G28 Z0. (SAFE RETRACT TO HOME VIA INCREMENTAL)
A well-maintained “CNC Error Code & Alarm Encyclopedia” becomes one of the most visited sections of any CNC-focused website, because every machinist and programmer eventually searches the same problems again and again.
7. Quick Checklist: How to Reduce CNC Errors by 80%
- Always retract Z to a known safe position before X/Y moves.
- Never hand-edit deep Z values or large coordinates at the control.
- Force base modes at top of every operation:
G17 G90 G40 G49 G94. - Cancel advanced states when leaving a special section:
G69,G94,G40,G54. - Use soft limits / stroke protection when available (
G22where supported). - Log every alarm with cause and fix to build your own reference.
The controls will keep throwing the same alarms across the world—whoever explains them clearly and practically becomes the site that everyone bookmarks and shares.
Leave a comment