CNC Error Codes: Complete Guide for All Brands (2026)
A CNC alarm code is your machine's way of telling you exactly what went wrong - and where. Understanding what these codes mean, and what to do when they fire, is the difference between a 10-minute fix and a four-hour production stop.
This guide covers alarm code systems for every major CNC brand: Fanuc, Haas, Mazak, Siemens Sinumerik, DMG Mori, Heidenhain, Okuma, Mitsubishi, Mori Seiki, Brother, Makino, and Fagor. For each brand you'll find the most common codes, their causes, and the fastest resolution path.
Jump to your brand:
Key stat: Unplanned CNC downtime costs manufacturers an average of $260,000 per year. Industry data consistently shows that 35–40% of unplanned stops stem from addressable alarm codes — faults that operators could resolve in under 15 minutes with the right reference.
How to read a CNC alarm code
Before diving into brand-specific lists, it helps to understand the logic behind how alarm codes are structured. Most CNC control systems use a consistent pattern: a prefix letter or number group that identifies the alarm category, followed by a numeric code that pinpoints the fault.
Alarm categories - what the prefix tells you
Across most brands, alarms fall into four main categories:
- Program errors (P/S alarms on Fanuc, PS on Mazak) — Faults in the G-code program itself. Wrong syntax, out-of-range values, missing addresses. These are the easiest to fix: correct the program and re-run.
- Servo / axis alarms — Problems with the drive system, encoder, or motor on a specific axis. Often caused by excess load, cable faults, or power supply issues.
- Overtravel alarms (OT) — The machine axis hit a software or hardware travel limit. Usually caused by a wrong work offset or a runaway program command.
- System alarms — Internal control faults, memory errors, communication failures. These require more investigation and sometimes a Fanuc/Siemens service call.
How to decode any alarm in three seconds
- Look at the prefix letter(s) — this tells you the category (servo, overtravel, program, system).
- Read the numeric code — look it up in the brand-specific section below or in the manufacturer's parameter manual.
- Check for an axis identifier — many alarms include X, Y, Z, or a spindle number. This tells you which axis is affected.
Example: Fanuc alarm SV0401 breaks down as SV (servo) + 401 (specific fault code). Combined with the axis label shown on the operator panel, you immediately know: servo amplifier fault, axis 1.
Fanuc CNC alarm codes
Fanuc is the world's most widely used CNC control system, found in machines from DMG Mori, Mazak, Haas (partly), Brother, and hundreds of OEM builders. Fanuc alarms are classified by prefix: PS (program/setting), SV (servo), SP (spindle), OT (overtravel), OH (overheat), DS (diagnosis), and SR (serial communication).
| Alarm | Description | Most common cause |
|---|---|---|
| PS0010 | Improper G-code | Wrong or unsupported G-code for the active control variant |
| SV0401 | Servo alarm: V-ready off | Servo amplifier fault, power supply issue, or encoder cable damage |
| SV0411 | Servo alarm: excess error | Axis overloaded, wrong servo gain parameter, mechanical binding |
| OT0500 | Overtravel + direction | Axis commanded past hardware limit — check work offset or program start point |
| SP0741 | Spindle alarm | Spindle amplifier overheated or spindle encoder fault |
See the full Fanuc alarm code list with 200+ codes, causes, and fix procedures →
Haas CNC alarm codes
Haas uses its own proprietary control (HMC), though it draws heavily on Fanuc conventions. Haas alarms are displayed on the operator screen with an alarm number and short description. Alarms are divided into two types: alarms (require a reset before the machine can continue) and messages (informational, no stop).
| Alarm | Description | Most common cause |
|---|---|---|
| 101 | Door interlock | Side door or front door not fully closed before cycle start |
| 118 | Spindle encoder fault | Encoder cable damage, contamination, or failed encoder |
| 132 | Servo axis overload | Axis motor overheated or drive fault — check for mechanical binding |
| 156 | Low air pressure | Shop air below required threshold (typically 85 PSI minimum) |
| 263 | Tool not found | ATC called a tool pocket that is empty or has wrong tool number loaded |
See the full Haas alarm code list with fix procedures →
Mazak CNC alarm codes
Mazak machines use either the Mazatrol or EIA/ISO (G-code) programming environment, and alarm codes differ slightly between them. Mazak controls are built on Mitsubishi CNC hardware — so some deeper servo-level alarms share codes with the Mitsubishi system. Alarms are shown in the Alarm/Warning display with a code, message, and axis reference.
| Alarm | Description | Most common cause |
|---|---|---|
| 001 | Emergency stop | E-stop button pressed, safety circuit open, or drive fault during power-up |
| 010 | Servo alarm (axis) | Drive overcurrent, encoder failure, or amplifier fault on specified axis |
| 021 | Spindle alarm | Spindle drive fault, orientation failure, or overtemperature |
| 109 | Program error | Illegal command in Mazatrol program or G-code block |
| 203 | ATC arm fault | Tool changer didn't complete sequence — check tool pot sensors |
See the full Mazak alarm code list →
Siemens Sinumerik alarm codes
Siemens Sinumerik (800x, 840D, 828D) uses a structured alarm numbering system: alarms in the 0–9999 range are NC channel alarms, 10000–19999 are channel-specific, 25000–26999 are drive alarms (SINAMICS), and 380000+ are PLC alarms. Sinumerik is common in European precision machining centers, particularly DMG Mori machines.
| Alarm | Description | Most common cause |
|---|---|---|
| 1000 | Channel not ready | NCK not initialized — power cycle required |
| 10630 | Axis not ready | Drive not enabled or axis limit active |
| 25201 | Drive fault | SINAMICS drive hardware fault — check F-code on the drive display |
| 26000 | Encoder signal fault | Encoder dirty, cable break, or wrong encoder parameter |
| 380500 | PLC alarm | Machine-specific PLC logic triggered — check ladder diagram |
See the full Siemens Sinumerik alarm code list →
DMG Mori CNC alarm codes
DMG Mori machines run either Siemens Sinumerik or Fanuc control systems — sometimes both on different machine lines. The alarm code structure depends entirely on which control is fitted. DMG-specific machine alarms (coolant, ATC, pallet changer) appear as PLC messages alongside the NC alarms.
| Alarm type | Description | Resolution path |
|---|---|---|
| Fanuc SV (servo) | Same as Fanuc SV series | See Fanuc alarm reference above |
| Sinumerik 25xxx | SINAMICS drive faults | See Siemens Sinumerik reference above |
| PLC 7xxx | Machine-specific faults | Check DMG Mori machine manual for PLC alarm table |
| Thermal alarm | Spindle or axis motor overheat | Check cooling unit, clean filters, verify ambient temperature |
See the full DMG Mori alarm code reference →
Since DMG Mori machines often run Siemens, also see: Siemens Sinumerik alarm codes →
Heidenhain TNC alarm codes
Heidenhain TNC controls (TNC 320, 530, 620, 640) are used in high-precision milling centers, particularly in die/mold machining and aerospace applications. Heidenhain uses a plain-text error messaging system: error messages appear in plain language on screen, often with an error number and a direct reference to the cause.
| Error / Code | Description | Most common cause |
|---|---|---|
| DRIVE FAULT | Axis drive not ready | PWM module fault, motor cable issue, or E-stop condition |
| ENCODER FAULT | Position encoder signal lost | Encoder cable break, contamination on scale, or faulty encoder |
| FEED RATE = 0 | No feed rate defined | Missing F-word in program or active feed override set to 0% |
| TOOL NOT FOUND | Called tool not in tool table | Tool number not entered in tool table, or wrong tool call |
| CONTOUR ERROR | Profile calculation error | Incorrect contour definition in SL cycles — check geometry |
See the full Heidenhain error code list →
Okuma OSP alarm codes
Okuma machines run the proprietary OSP (Open Systems Platform) control. Alarms are displayed with a two-letter prefix and a four-digit code. Key prefixes: AL (axis alarms), MC (machine alarms), NC (NC system alarms), SL (spindle alarms), TC (tool changer).
| Alarm | Description | Most common cause |
|---|---|---|
| AL-001 | X axis servo alarm | Drive fault, encoder fault, or axis overload on X |
| AL-104 | Overtravel | Axis commanded past travel limit — check offset and restart position |
| SL-001 | Spindle drive alarm | Spindle inverter fault or overtemperature |
| MC-050 | ATC fault | Tool change sequence incomplete — check ATC sensors and air pressure |
| NC-100 | Program error | Invalid G or M code, or illegal parameter value in active block |
See the full Okuma OSP alarm code list →
Mitsubishi CNC alarm codes
Mitsubishi M700, M800, and E70 series controls are used in their own machines and as OEM controllers in Mazak and other brands. Alarms use a numeric code prefixed by the alarm type: Y (servo), SP (spindle), OT (overtravel), PR (parameter), PG (program error).
| Alarm | Description | Most common cause |
|---|---|---|
| Y01 | Servo axis abnormal current | Motor or amplifier fault — check drive unit LED codes |
| Y32 | Encoder error | Encoder cable disconnected, damaged, or incorrect encoder spec |
| OT01 | Hardware overtravel | Axis physical limit switch tripped — check axis position and limit setting |
| SP01 | Spindle alarm | Spindle drive fault — check drive unit fault code independently |
| PR01 | Invalid parameter | Parameter value out of allowed range after edit |
See the full Mitsubishi CNC alarm code list →
Mazak machines use Mitsubishi hardware — see also: Mazak alarm codes →
Mori Seiki CNC alarm codes
Mori Seiki machines (pre-2013 merger with DMG) run Fanuc or Mitsubishi controls depending on the machine series and year. NT, NL, and NMV series typically run Fanuc; MSX series ran Mitsubishi. After the DMG Mori merger, newer machines increasingly use Siemens or the proprietary CELOS interface on top of Fanuc.
| Control variant | Alarm structure | Reference |
|---|---|---|
| Fanuc 31i/32i (NT, NL series) | Standard Fanuc SV/PS/OT codes | See Fanuc reference |
| Mitsubishi MSX series | Standard Mitsubishi Y/SP/OT codes | See Mitsubishi reference |
| Machine PLC alarms | Mori Seiki-specific 4-digit codes | Check machine-specific PLC alarm table in maintenance manual |
See the full Mori Seiki alarm code reference →
Also relevant: DMG Mori alarm codes →
Brother CNC alarm codes
Brother Speedio tapping and machining centers use a Fanuc-compatible control with Brother-specific extensions. The control displays alarms with a numeric code and short message. Because Brother machines are primarily high-speed tapping centers, tool life and spindle-related alarms appear more frequently than on general machining centers.
| Alarm | Description | Most common cause |
|---|---|---|
| PS0001 | TH parity error | Program input error — incorrect format in data block |
| SV0360 | Serial pulse coder: battery alarm | Absolute encoder battery low — replace before position data is lost |
| SV0401 | Servo alarm: V-ready off | Same as Fanuc — drive amplifier or power module fault |
| OT0500 | Overtravel | Axis exceeded travel limit in positive direction |
| SP1002 | Spindle error | Spindle orientation failed or spindle encoder fault |
See the full Brother CNC alarm code list →
Brother uses Fanuc-compatible codes — also see: Fanuc alarm codes →
Makino CNC alarm codes
Makino machining centers run Fanuc-based controls with Makino-specific Pro 5 or Pro 6 interfaces. Alarm codes follow standard Fanuc prefix conventions (SV, PS, OT, SP) but Makino adds its own layer of machine-level alarms for pallet systems, coolant management, and tool management.
| Alarm | Description | Most common cause |
|---|---|---|
| SV0411 | Servo excess deviation | Axis overloaded or wrong gain parameter — common after crash |
| SP0741 | Spindle alarm | Spindle amplifier fault — check amplifier LED indicator code |
| OT0500 | Positive overtravel | Program or fixture setup error — verify datum and tool length |
| M-series PLC | Pallet or coolant alarm | Pallet clamp sensor, coolant level, or chip conveyor fault |
See the full Makino alarm code list →
Fagor CNC alarm codes
Fagor controls (8055, 8065, 8060) are found primarily in Spanish and European machine tool brands (Danobat, Soraluce, Bost). Fagor uses a structured error code system with separate categories for operator errors, program errors, system errors, and servo errors. Error numbers in the range 1–499 are typically operator/program related; 500–999 are system-level.
| Alarm | Description | Most common cause |
|---|---|---|
| 001 | Memory error | CNC internal memory fault — try a cold reboot first |
| 006 | SERCOS communication error | Drive communication ring broken — check SERCOS fiber optic cables |
| 028 | Emergency stop active | E-stop circuit open — check all E-stop buttons and safety relays |
| 104 | Incorrect G code | G code used in wrong modal group or not supported in active mode |
| 501 | Axis position error | Following error exceeded — check drive, encoder, and mechanical load |
See the full Fagor CNC error code list →
Step-by-step: what to do when a CNC alarm fires
Alarm codes tell you what happened. This workflow tells you what to do with that information.
The 5-step alarm response procedure
- Read and record the full alarm display. Write down the exact code, axis letter, and any message text. On Fanuc and Siemens this also appears in the alarm history log. Don't just reset and continue — if the fault returns, you'll need this information.
- Identify the alarm category. Is it a program error (fix the G-code), a servo fault (check the drive/axis), an overtravel (check position and offsets), or a system fault (may need service)? The prefix tells you which direction to look.
- Check for a secondary indicator. Most drives have their own LED fault codes or diagnostic displays — a Fanuc servo amplifier will show a two-digit code that gives more detail than the CNC alarm alone. Always check both.
- Run the appropriate diagnostic. On Fanuc, use the Diagnosis screen (System → Diagnose). On Siemens, use Service → Drive diagnostics. On Haas, use Diagnostic Data. These screens show axis load, following error, and signal states in real time.
- Log the incident. Record the alarm code, time, machine, and your resolution. Over time this data reveals patterns — if the same servo alarm fires every two weeks, you have a degrading component, not a random fault. See how to track machine downtime in Excel with a free template →
Common mistakes when responding to alarms
- Resetting without investigating. A reset clears the alarm display but not the underlying fault. On intermittent faults this is how you miss the window to catch a failing component.
- Looking up only the alarm number. The same alarm number can have three different root causes. Always cross-reference with the axis letter, the time of day, and what was running when it happened.
- Ignoring alarm history. Every modern CNC control stores alarm history. Before calling a service engineer, check whether this exact alarm has fired before — and what was done to resolve it.
From reactive to proactive: preventing CNC alarms before they happen
The troubleshooting workflow above is reactive — you're responding after a stop has already happened. Most high-performing machine shops run a parallel proactive system: monitoring trends so faults are caught before they become alarms.
What proactive alarm management looks like in practice
Reactive monitoring: operator sees an alarm, looks up the code, calls maintenance, machine sits idle for 40–90 minutes.
Proactive monitoring: the control system tracks servo load trends over 30 days. When axis load starts climbing — before it crosses the alarm threshold — maintenance is alerted. Bearing gets replaced during a scheduled stop. Zero unplanned downtime.
The difference comes down to data visibility. A few practical starting points:
- Track alarm frequency per machine. If machine A generates 3x more servo alarms than machine B of the same model, machine A has a problem worth investigating. See: Downtime Pareto analysis — free template →
- Monitor tool life before breakage alarms fire. Most CNC controls have tool life monitoring parameters — activating them prevents the tool breakage alarm from being the first sign of trouble. See: CNC tool breakage: causes, detection and prevention →
- Set up automatic alarm logging. Manual alarm logs depend on operators remembering to write things down. Automated logging via MTConnect or OPC-UA captures every alarm with a timestamp. See how to start for free: How to start monitoring your Fanuc CNC for free → / Haas → / Mazak →
Understanding alarm codes is the first step. Eliminating the conditions that produce them is the goal. Both start with data.
Frequently asked questions about CNC alarm codes
What is a CNC alarm code?
A CNC alarm code is a numbered fault signal generated by the CNC control system when the machine detects a condition it cannot continue operating under safely. Each code corresponds to a specific type of fault — a servo axis error, a program error, an overtravel condition, or a system fault — and is displayed on the operator panel with a description and usually an axis reference.
What is the difference between a CNC alarm and a CNC warning?
An alarm stops the machine — the cycle cannot continue until the alarm is acknowledged and cleared. A warning (called a "message" on Haas or an "operator message" on Fanuc) is informational: it displays on screen but does not interrupt the running program. Common warnings include coolant level low, tool life approaching limit, and oil lubrication interval due.
How do I reset a CNC alarm?
On most controls: press the Reset button on the operator panel. On Fanuc, this is the dedicated RESET key. On Haas, it is the RESET button in the control panel. On Siemens Sinumerik, press the Alarm Cancel key (ACK). Important: resetting an alarm clears the display but does not fix the underlying fault. If you reset without resolving the cause, the alarm will return — often immediately.
Why does the same alarm code keep coming back?
A recurring alarm almost always indicates an unresolved mechanical or electrical issue: a degrading bearing that is increasing axis load, a cable with intermittent continuity, a cooling fan that is no longer working, or a drive that is approaching end of life. Check the alarm history to see how frequently it is firing — if the interval is shortening, the fault is progressing.
What causes Fanuc servo alarm SV0401?
Fanuc alarm SV0401 (servo alarm: V-ready off) is triggered when the servo amplifier's V-ready signal is not received by the CNC. The most common causes are: servo amplifier hardware fault (check the amplifier's own LED code), power supply issue in the servo cabinet, E-stop relay not releasing fully, or a failed FSSB (serial servo bus) communication between the CNC and drive. Check the amplifier first — it will display its own fault code independently of the CNC alarm.
Can I connect my CNC machine to monitor alarm history automatically?
Yes. Most modern CNCs support MTConnect (Fanuc, Haas, Mazak, DMG Mori) or OPC-UA (Siemens) — open protocols that allow external software to read alarm history, axis data, and program status in real time. You can start with a free setup using your existing machine connection.
See the brand-specific monitoring guides: Fanuc → Haas → Heidenhain →
About MDCplus
Our key features are real-time machine monitoring for swift issue resolution, power consumption tracking to promote sustainability, computerized maintenance management to reduce downtime, and vibration diagnostics for predictive maintenance. MDCplus's solutions are tailored for diverse industries, including aerospace, automotive, precision machining, and heavy industry. By delivering actionable insights and fostering seamless integration, we empower manufacturers to boost Overall Equipment Effectiveness (OEE), reduce operational costs, and achieve sustainable growth along with future planning.
Ready to increase your OEE, get clearer vision of your shop floor, and predict sustainably?