Tool Length & Geometry Offsets
The machine knows where the spindle gauge line is, but it does not automatically know where the cutting tip is. Tool offsets bridge that gap. This page covers G43 length compensation, geometry vs wear offsets, tool radius, and lathe tool nose radius.
Concept
Every tool in the magazine has a different length below the spindle gauge line and, on a lathe, a different virtual tip position. In this teaching model, Zm is the machine-coordinate position of the spindle gauge reference point. The tool-tip position is obtained using the calibrated tool length; the machine coordinate origin and reference-return position must be identified from the machine documentation. Tool length offset tells the controller how far below the gauge line the current tip sits. On a mill, G43 H01 activates length compensation using offset register 1; G49 cancels it.
On a lathe, each turret station carries a geometry offset (the measured base position of the virtual tip in X and Z) plus a wear offset (small in-process corrections as the edge wears). The actual tool tip position equals the commanded machine position plus the geometry offset plus the wear offset. Understanding this addition is the single most important idea on this page.
Why It Matters
If the tool length offset is wrong, the Z depth on the part is wrong by the same amount. A tool that is 5 mm shorter than the offset thinks the tip is at Z−5 when it is actually at Z0 — it will not cut at all. If the tool is 5 mm longer, it cuts 5 mm too deep and can ruin the part or crash into the fixture. On a lathe, a wrong X offset shifts the turned diameter by the corresponding amount, which lands on the part tolerance. Tool offset errors are a common cause of dimensional scrap on first-piece runs.
How It Works
Mill: G43 Length Compensation (Teaching Model)
Use this simplified teaching model for a vertical mill with +Z up: the machine reads the spindle gauge line (not the nose, not the tip). The tool extends downward from the gauge line by its length L. The work top sits at machine Z = W. The program commands the tip position Zp in work coordinates (Zp = 50 means 50 mm above the part top).
Given: L = H01 = +120 mm (gauge line to tip, measured on a setter)
W = -300 mm (part top, in machine Z)
Program: G00 G43 H01 Z50. (tip target = Zp = +50 above part)
With G43 active, the gauge line stops at
Zm = W + Zp + L = -300 + 50 + 120 = -130 mm
The tip is then at Zm - L = -250 mm = W + Zp = part top + 50. Correct.
The controller moves the gauge line, not the tip. G43 tells it how far below the gauge line the tip sits, so the gauge line stops where it must to put the tip at the commanded Zp. G49 cancels length comp; it does not switch to machine coordinates (that is G53). With G49 active on the same Z50 command, the gauge line stops at W + Zp = −250 mm and the tip sits at −250 − 120 = −370 mm, i.e. 70 mm below the part top — 120 mm too low. Whether that crashes the table depends on W and Z travel; do not assume it always crashes, but it is never at the intended depth.
Setting the Offset: The Teaching Method
This page uses one consistent method: each tool is measured on a calibrated tool setter (or presetter) that reports the gauge-line-to-tip length L, and that positive length is entered into H. The work top W is then established by touching the part top with the calibrated tool and reading the gauge-line Z. Other shops use a direct touch-off on the part with a signed offset, or a reference-tool length-difference method; those are self-consistent conventions only when W and H are defined together, and this page does not give their input steps.
| Step | What is read | Entered into |
|---|---|---|
| Measure tool on setter | Gauge line to tip length L (positive, downward) | H register |
| Touch part top with this tool | Gauge-line machine Z at contact | Derived: W = gauge_Z − L, entered as G54 Z |
Whichever method the shop uses, the offset number is only as good as the measurement. A burr on the tool tip, a chip under the setter, or a dirty part surface all shift the offset by that error. Clean the tip and the surface, and re-verify after the first cut.
Geometry vs Wear Offsets
| Type | Set When | Used For |
|---|---|---|
| Geometry offset | During setup, after tool is mounted | Base measured position of the tool tip |
| Wear offset | During production, after measuring a part | Small corrections as the edge wears or the process drifts |
If a turned diameter measures 30.05 mm but should be 30.00, the cut is 0.05 mm too large in diameter. The correct wear correction depends on the unit of the X wear field on your control: if the field is in diameter units, enter −0.05 mm; if it is in radius units (some lathes split geometry and wear into radius columns), enter −0.025 mm. Read the field header on the offset screen before entering. You do not change the geometry offset — that would corrupt the setup and make the next part wrong. Wear offsets are for small in-process corrections; geometry offsets are for initial setup. On a mill, Z wear offset is used to correct a depth that runs shallow or deep as the insert wears.
Tool Radius and Cutter Compensation
Length offset handles how far the tool reaches in Z. It does not compensate for the tool's radius in XY. Radius compensation (G41/G42 with D offsets) is a separate topic covered on its own page. H selects the tool-length offset register. D selects the cutter-size compensation register; its size entries use radius or diameter according to the control configuration. On Haas mills, check Setting 40 before entering geometry or wear values. Do not put a cutter-size value into an H register.
Lathe: Tool Nose Radius and Orientation
Turning inserts have a nose radius (commonly r0.4 or r0.8 mm). The "virtual tip" used in geometry offsets is the theoretical sharp corner where the X and Z extension lines meet. The actual rounded nose leaves a small fillet at sharp corners. For accurate tapers, radii, and face relief, the controller uses tool nose radius compensation and needs two values in the offset table: the nose radius and the tool tip orientation (which quadrant the holder is in, entered in the orientation column on the offset screen). Get the orientation wrong and radius-completed tapers cut with the wrong geometry. This orientation field is separate from the T word that selects the turret station.
Calibrated Setter vs Part Touch-Off
A tool setter (mechanical or laser) touches each tool tip off-machine or in a dedicated fixture and records the gauge-line-to-tip length automatically, against a calibrated reference. Touching off directly on the part ties the offset to the actual setup but requires a controlled touch procedure. Production shops usually preset tools on a calibrated setter and then verify Z on the part with a single, deliberate touch.
Whichever method is used, the offset number is only as good as the touch. A burr on the tool tip, a chip under the setter, or a dirty part surface all shift the offset by that error. Clean the tip and the surface, and re-verify after the first cut.
Length Offset on a Lathe
On a lathe there is no spindle-Z column in the same sense as a mill. Each turret station has X and Z geometry values measured by touching a turned diameter (for X) and a faced face (for Z). The X offset field on most lathes is entered in diameter units because diameter programming is the convention. Confirm the unit of the field on your control (diameter vs radius) before entering; the offset is one link in the reference chain, and entering a value in the wrong unit shifts the resulting diameter by the corresponding factor rather than simply "halving" the target.
Wear Offset Drift
As an insert wears, the cut gets lighter: a turned diameter grows, a milled depth gets shallower. The wear offset column is where you nudge the tool back to nominal. A typical rule of thumb is to keep wear corrections within a few tenths of a millimeter; beyond that, the insert should be changed. If the wear offset grows beyond that range, the setup has a larger problem (tool deflection, spindle growth, thermal drift) and changing wear numbers masks it rather than fixing it.
Offset Tables Are Per Tool, Not Per Operation
Once a tool's H (or geometry) offset is set, every operation that calls that tool uses the same offset. A 12 mm end mill used for roughing and finishing shares one H value. If you need a different Z starting point for finishing, change the program Z, not the offset. Mixing per-operation Z adjustments into the offset table corrupts the next job that uses the same tool number.
Example
Mill setup. Tool 1 is a center-cutting 12 mm end mill measured on the setter: L = H01 = 120 mm. The part top W is established at −300 mm. G54 and H01 are already entered. Z50 and the XY path are verified clear of the fixture. The program commands:
G21 G17 G90 G94 G40 G49 G80
T01 M06
G54
G00 G43 H01 Z50.
S2500 M03
G00 X0. Y0.
G00 Z5.
G01 Z-2. F100.
Walk through it: T01 loads the tool; G54 sets the work datum; G43 H01 moves the gauge line to Zm = W + Zp + H so the tip reaches Z50; the spindle ramps; XY positions at safe Z50; rapid to Z5; plunge at F100. For the separate fault calculation, assume length compensation is explicitly inactive at the Z move and no automatic tool-change behavior or later command reactivates it. A move to work Z50 would then place the gauge line at W + Zp = −250 mm and the tip at −370 mm, 120 mm below its intended position. Omitting H01 from a G43 block alone does not establish this fault state; the response depends on the control and its current offset state.
Lathe correction. After the first facing cut, the part length is 50.03 against a target of 50.00 — the part is 0.03 mm too long in Z. Z is a linear axis, so there is no diameter factor. With the teaching convention that +Z wear moves the tool toward +Z (away from the chuck), the tool must move 0.03 mm toward the chuck (negative Z direction): enter −0.03 mm in the Z wear field. Verify the sign convention on your control's offset screen before entering. Geometry stays untouched.
Tool Length Compensation on a Mill vs a Lathe
A mill uses G43 H along the spindle Z direction because the tool sticks out of the spindle vertically. A lathe does not have a single spindle-Z offset; each turret station has its own X/Z geometry because the tool sits on a turret that indexes around. The idea is the same — the machine knows the saddle position, the offset says where the virtual tip is — but the axis set and entry columns differ. Do not try to apply mill G43 thinking to a lathe turret offset.
Probing Tool Length
On a machine with a tool length probe, the spindle moves the tool to the probe, the probe touches the tip, and the control writes the H value automatically. This is faster than a manual touch and reduces human error, but the probe must itself be calibrated and the stylus must be clean. After a tool change or a probe crash, re-run the probe calibration before trusting automatic offsets.
Offset Verification Checklist
Before running the first part, walk the offset table: confirm H numbers match tool numbers, confirm the H values match the measured gauge-line-to-tip lengths under this page's convention, and confirm the wear columns have not been accidentally edited during setup. On a lathe, confirm the X offset field unit (diameter vs radius) and that the nose radius / orientation fields match the insert. A quick screen check takes 30 seconds and catches the most common first-piece errors.
Why Offsets Are Not Program Data
The program and the offset table are two layers. The program says where the tool should go; the offset says how the machine reaches there. This separation is what lets one program run on a part clamped anywhere on the table, and lets a worn insert be corrected without editing the program. Keep that separation clean: do not bake fixture positions into coordinates, and do not bake setup corrections into the program.
What Happens if You Forget G43
If the program calls G00 Z50. without G43 H, length compensation is inactive (G49 state from the startup block). The gauge line stops at W + Zp = −250 mm, and the tip sits at −250 − L. On the teaching example (L = 120 mm), the tip is at −370 mm — 70 mm below the part top, not at the intended 50 mm above it. Whether that crashes the table depends on W, Z travel, and fixture height; what is certain is that the tip is 120 mm away from the commanded Zp. This is why the startup block includes G49 to cancel any previous length offset, and why every tool change should be followed by an explicit G43 H move at safe Z.
Offset Tables on a Mill: H and D Columns
On a typical mill control, the tool offset table has columns for H (length), D (radius), and wear for each. The H value is set by tool length; the D value is the register number called by G41/G42. Whether the D entry is the tool radius or the tool diameter depends on a control setting (Haas Setting 40 selects RADIUS or DIAMETER): for a 12 mm end mill, enter 6.0 when RADIUS is selected and 12.0 when DIAMETER is selected. Cutter compensation uses D, not H. Mixing them up — putting a radius value in H — produces a Z error that looks like a depth problem, not a radius problem.
Common Mistakes
- Thinking G49 returns to machine coordinates — G49 cancels length offset only. G53 switches to machine coordinates for one block. They are unrelated.
- Using H number as tool number — H01 is offset register 1, not necessarily tool 1. They usually match but are independent.
- Confusing geometry and wear offsets — geometry is for setup; wear is for in-process correction. Do not fix a wear problem by changing geometry.
- Forgetting G43 H after T06 M06 — T06 selects tool 6, but the length offset register must still be loaded explicitly (auto-recall depends on control settings).
- Wrong sign on the length offset — H stores the gauge-to-tip length in the shop's chosen convention. Get the sign wrong and the gauge line stops on the opposite side of the intended position, doubling the error.
- Confusing H and D — H selects length compensation; D selects cutter-size compensation. Verify both the register number and the radius/diameter entry convention before editing values.
Offset Numbers and Safety
Offset screens are editable by the operator. Treat them like any other machine setting: do not change offsets while the spindle is running; record corrections on the setup sheet; and never enter a correction based on a part that was measured with a loose tool or a worn indicator. A 0.05 mm correction entered from a part that was actually off by 0.1 mm makes the next part wrong in the other direction. Always measure with a calibrated instrument and enter the signed correction deliberately.
Practice
1. In the teaching model, H01 = L = +120 mm, W = −300 mm. You command G43 H01 Z50.. Where does the gauge line stop, and where is the tip?
Show answer
Gauge line at Zm = W + Zp + L = −300 + 50 + 120 = −130 mm. Tip at Zm − L = −250 mm = W + Zp, i.e. 50 mm above the part top.
2. What is the difference between G49 and G53?
Show answer
G49 cancels tool length compensation. G53 switches to machine coordinate system for one block. They are unrelated commands.
3. You measure a turned diameter at 30.05 mm against a target of 30.00. What wear offset do you apply?
Show answer
The diameter is 0.05 mm too large. If the X wear field is in diameter units, enter −0.05 mm; if it is in radius units, enter −0.025 mm. Read the field header on your control before entering.
4. Why does this program call G43 H01 explicitly after T01 M06?
Show answer
Auto-recall of H by tool number depends on the control and software setting. Stating G43 H01 explicitly after the tool change makes the active length compensation visible and traceable, and matches the startup block that cancelled it with G49.
5. On a lathe, why is tool orientation needed besides nose radius?
Show answer
Radius compensation needs to know which way the rounded nose points relative to the part, so it can offset the virtual tip correctly on tapers and contours.
Sources
- Haas G43 Tool Length Compensation — H register and cancellation behavior on Haas mills.
- Haas Setting 40 (Cutter Comp. Dia./Radius) — selects whether D offset entries are radius or diameter.
- Haas Mill Part Setup — tool offset and work offset setup procedure (operator manual).
- All classroom numbers are teaching assumptions; verify offset signs and values against your control manual.