---
title: "Why Is My CNC Drilling a Hole in the Air? The Z Story"
description: "Air-drilling means the machine's idea of Z disagrees with reality: a missing G43, the wrong H number, a stale work offset Z, or the cycle's R-plane math."
url: https://gcodepractice.com/journal/why-is-my-cnc-drilling-a-hole-in-the-air/
canonical: https://gcodepractice.com/journal/why-is-my-cnc-drilling-a-hole-in-the-air/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-07
updated: 2026-06-07
category: "Practice"
tags: ["air cutting", "z axis", "tool length", "troubleshooting"]
lang: en
---

# Why Is My CNC Drilling a Hole in the Air? The Z Story

> **TL;DR** A CNC drilling holes in the air is executing a correct cycle against a wrong belief about where Z zero is, and the belief has four usual breakers: tool length compensation missing or carrying the wrong H number, the work offset's Z value stale from a previous setup, the cycle's R-plane and depth doing their arithmetic from a different reference than the programmer assumed, or a units mismatch scaling everything. The diagnostic is one comparison: jog the tool to touch the work, read the machine's Z, and compare it with what the offsets claim, the gap names the culprit.

A machine drilling holes in the air is doing something subtly reassuring: executing its cycle perfectly. The geometry, the pecks, the retracts, all correct, just performed against a belief about where the part's surface sits that is wrong by some exact amount. Air-drilling is therefore not a cycle problem; it is a Z-belief audit, and the belief is assembled from a short chain whose links break in recognizable ways.

## The Z belief chain

Where the control thinks Z zero is comes from a sum: the machine's home position, plus the active work offset's Z entry, plus the active tool's length compensation. The drilling cycle then does its arithmetic, retract plane, R-plane, depth, relative to that sum, per the cycle definitions in [any strict reference](https://linuxcnc.org/docs/html/gcode/g-code.html). Break any link and every hole moves by the broken amount, in formation, which is why air-drilling looks so eerily organized.

| The broken link | The signature | The check |
| --- | --- | --- |
| G43 missing, or wrong H number | One tool airs while others cut; gap equals a tool length or a length difference | The tool's preamble: is G43 H(this tool) there and right? |
| Stale work offset Z | Every tool airs by the same gap | The offset page against a physical touch-off |
| R-plane reference assumptions | Cycle starts pecking above the part by the R amount | The cycle line read against the control's R-plane definition |
| Units mismatch | Everything scaled strangely, gap factor near 25.4 | The header's G20/G21 against the offsets' units |

The first row earns its position. [Tool length compensation](/journal/g43-tool-length-offset-explained/) is the most frequently rebuilt link in the chain, every tool change reassembles it, and the wrong-H variant produces the most diagnostic pattern on the table: tool 3 airs while tools 1 and 2 cut fine, because tool 3's preamble calls H2, or calls nothing. The stale-offset row is the setup-change classic, the [G54-family Z entry](/journal/g54-work-offsets-explained/) still describing the last fixture, and it airs every tool democratically.

## The one-comparison diagnostic

Skip the speculation available in forums and run the comparison the machine makes possible: with the suspect tool loaded and compensation active, jog carefully until the tool touches the work (paper-feel or a gauge block), and read the position display. The control's Z-with-offsets should read at or near zero at the surface; whatever it reads instead is the broken amount, and matching that number against the table above, a tool length, a fixture delta, a 25.4 factor, names the link. Two minutes, deterministic, and it beats reasoning from the air gap alone because it interrogates the actual chain.

The measured-gap shortcut works too, when the geometry allows it: hole bottoms exactly one tool-length-difference above the surface accuse the H number; gaps matching the difference between the old fixture and the new accuse the offset page.

## The free warning nobody should waste

Air-drilling's mercy is its sign. The identical broken belief with the error reversed drills into the table, the vise, or through the part, the [Z-dive family](/journal/why-did-my-z-axis-dive-into-the-chuck-on-g28/) wearing a drill, so every air-drill is a free, loud announcement that the Z chain needs auditing while the mistake is still pointing the survivable direction. The response that converts the warning into value: audit the chain, fix the named link, then prove the fix the standard way, first hole in [single block](/journal/how-to-safely-restart-a-cnc-program-from-the-middle/), distance-to-go watched, before trusting the rest of the pattern. A program that [skipped its tool change](/journal/cnc-program-skipped-a-tool-change-why/) can produce the same symptom through a different door, which the audit also catches, since the loaded tool and the called offset get compared in passing.

The chain audit runs on the standard fluency: knowing what G43 H, G54 Z, and the cycle words each contribute, instantly, which is recall material, free in the 60-second rounds on the [G-code practice page](/g-code-practice/), and air-drilling is the failure that best rewards it, being the rare CNC problem that arrives with its own measurement attached.

## Sources

- [LinuxCNC: G-code reference](https://linuxcnc.org/docs/html/gcode/g-code.html)
- [Helman CNC: Fanuc reference material](https://www.helmancnc.com/fanuc-alarm-codes-for-cnc-machines/)
- [Wikipedia: Numerical control](https://en.wikipedia.org/wiki/Numerical_control)

## Frequently asked questions

### Why is my CNC drilling a hole in the air?

Because its belief about where Z zero sits is wrong while the cycle is fine. The four usual breakers: missing or wrong-H tool length compensation, a stale work offset Z, R-plane reference assumptions, or a units mismatch. Jog to touch the work and compare actual Z against the offsets' claim.

### What does G43 have to do with air drilling?

G43 applies the tool's length offset: without it, or with the wrong H, the control believes the tip is somewhere it is not, moving every Z target by the missing length. One tool airing while others cut is the wrong-H signature.

### Why does the air gap equal an exact, repeatable distance?

Because offset errors are systematic: a missing length misses by that length, a stale offset by the fixture difference, an inch-metric mix by a 25.4 factor. The measured gap frequently names the cause.

### Is drilling in the air dangerous or just wasted time?

The event is benign; its mirror image, the same broken belief reversed, drills into the table or the vise. Treat every air-drill as a free warning and audit the Z chain before the error changes sign.

---

Source: https://gcodepractice.com/journal/why-is-my-cnc-drilling-a-hole-in-the-air/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
