Tool Length Offsets
Tool length offsets are the values that tell a CNC control how long each tool is, so that a program written to cut with the tool tip works no matter which tool is in the spindle. Every tool that a machine holds is a different physical length, and the control positions not the tool tip but the spindle that carries it. Without an offset it would have to know every tool’s length or be programmed differently for each one; with a stored tool length offset per tool, the program is written once, to the geometry of the part, and the control does the arithmetic for whatever tool is loaded. This entry covers why the offset exists, how it is applied with G43 and cancelled with G49, and how its values are measured and stored.
The problem every tool change creates
When the control makes a Z move, it moves the spindle, and the cutting point that matters is the tip of the tool sticking out beneath it. Two tools of different length loaded into the same spindle put their tips at different heights, so if the control moved the spindle to the same Z for both, one tool would cut too deep and the other too shallow. Without compensation, the only ways to handle this are to write each tool’s moves for its own length — a nightmare of arithmetic — or to set every tool to exactly the same length, the costly workaround of matched-length tooling. The tool length offset is the clean answer: each tool’s length is measured once and stored, and when the tool is loaded the control shifts its Z so that the programmed coordinates always refer to the tool tip, whatever length the tool happens to be.
The gauge line and the measurement
The length that is stored is measured from a fixed reference — the gauge line, the plane on the spindle or toolholder where the tool is seated — down to the cutting tip. Because the gauge line is the same for every tool that mounts in the spindle, the distance from it to each tool’s tip is a stable, meaningful number that can be measured before the tool ever goes near the part. It is measured in one of three ways. An off-machine presetter gauges the assembled tool and gives a value to type into the table. A manual touch-off jogs the tool down to a known surface, a gauge block or the part top, and lets the control compute the length from that position. And an in-machine tool-setting probe, a touch trigger sitting on the table, measures each tool automatically and writes its length straight into the register. Whichever way it is measured, the value lands in the machine’s tool table, stored under an offset number that the program will call.
G43, H and the tool table
The offset is applied by G43, commanded with an H number that names which entry in the tool table to use — G43 H01 applies the stored length of tool table entry one. The H number is an offset number rather than a tool number, though by long convention the two are made to match, so that tool 1 always calls H01. When the control reads G43 H01 it begins adding that tool’s length to its Z positions, and on most machines the offset takes effect on the next commanded Z move, which is why G43 is programmed on the first Z movement after a tool change, typically on a safe move high above the part. Tool tables commonly split each entry into a geometry component, the measured physical length set at setup, and a wear component for the small adjustments a tool accumulates in service; the discipline is to set geometry once and make running tweaks in wear, so the true measured number is never lost.
The crash G43 prevents
The single most important fact about tool length offsets is that until a tool’s offset is applied, the control treats the tool as having zero length. A programmed Z zero then brings not the tip but the gauge line down to the part surface — which is to say it drives a full-length tool into the work. This is the classic first-cut crash: a tool change, a forgotten G43, and a Z move that assumes a zero-length tool. For this reason the G43 H line appears in the standard safe-start sequence of every program, and a G49 — which cancels tool length compensation — is equally part of good housekeeping, so that no stale offset from a previous tool or a previous program is left lying in wait. Many controls cancel the offset on a program end or reset as well, and a safe program does not rely on that, clearing what it set.
Tool lengths, work offsets and the part zero
A tool length offset does not work alone; it works with the work offsets that this wiki describes in its own entry. The work offset places the part’s zero in machine space, telling the control where the part is; the tool length offset adapts each tool to that same zero, telling the control where each tool’s tip is. When both are active, a programmed Z is measured from the part’s datum to the tool tip, which is exactly the relationship the programmer wrote. The two ideas meet in the Z axis of every job: set the work offset on the datum, set the tool lengths from the tools, and the coordinates the program uses are real. A move in machine coordinates — a G53 move — steps outside this arrangement, which is why machine-coordinate moves are used with care.
Tool length offsets in the job flow
Tool length offsets belong to the daily discipline of running a part in CNC machining: the offsets are set when the job is set up, verified before the first cut, and kept honest as tools wear. Their natural partner is the spindle that carries the tools and the holder that seats them, because the gauge line is where tool, holder and machine meet. And they are distinct from the sideways compensation of cutter radius, which works in the plane of the cut rather than the height of the tool — a subject for its own entry. In the end the tool length offset is one of those quiet values that a program assumes and a crash punishes: understood, it lets one program run any set of tools; forgotten, it is the fastest way to make a new tool into a very short one.