The phrase hides a misconception worth clearing first: most tool offsets are not entered in G-code at all. A tool offset has two halves, the call and the value, and they live in two different places. The program calls the offset; the offset page holds its number. Once that split is clear, manually entering a tool offset becomes the simple, visible operation it actually is, and the cases where you would write one into the program become the narrow exception they should be.
Why the question is usually phrased wrong
The search assumes the offset is a thing you type into the program, the way you type a coordinate, and that assumption is the whole confusion. A coordinate is part of the part’s geometry, so it belongs in the program; an offset is a fact about a physical tool, which changes every time the tool is reground, replaced, or re-set, so binding it into the program would mean editing proven code every time a tool changed. The designers split it deliberately: the program carries the unchanging intent, and the offset page carries the changing measurements. Recognizing that the offset is tool data, not program data, answers most of the question before the procedure even starts.
The two halves
| Half | Where it lives | What it is |
|---|---|---|
| The call | The program | G43 H1 activates length offset 1; a D-word calls a diameter offset |
| The value | The control’s offset page | The tool’s real length or diameter, set by touch-off |
G43 H1 is the program saying “apply tool length offset number one from here.” It pairs a tool with an offset register; it does not contain the tool’s length. That length, how far the tip reaches relative to the reference, lives in register one on the offset page, put there by touching the tool off or measuring it, and the standard reference documents the call while the machine’s offset screen owns the value. The same split governs diameter offsets for cutter compensation: the program’s D-word calls the register, the page holds the radius.
So how you actually enter one
Manually entering a tool offset means going to the offset table and typing or adjusting a number: navigate to the register, enter the measured value or the wear adjustment, done. It is visible (the whole table is on one screen), reversible (change it back as easily), and separate from the proven program (which never sees the edit). This is exactly why a part cutting a few thousandths off is usually an offset edit, not a program edit: the fix belongs where the value lives, and editing the program instead would alter proven code to compensate for a number that has its own home.
The touch-off that produces the value in the first place is the work-zero-and-tool-length workflow every setup runs, and the offset page is where its results land, the same place wear adjustments and re-measurements go for the life of the tool, because in machining a tool’s real length changes with regrinds and re-setups while the program stays put.
The G10 exception
There is a way to write offset values from inside a program: G10, which sets the offset tables under program control. It is genuinely useful for automation, a fixture program that establishes its own offsets, a probing routine that measures and updates, a family-of-parts program that sets values per size, and it is the wrong tool for a one-off adjustment, where typing the number on the page is faster, more visible, and less error-prone. The honest rule: reserve G10 for cases where the program should own the offset value as part of its logic, and use the offset page for everything else, which is nearly everything.
Why the split exists at all
The separation is not bureaucracy; it is what lets one proven program serve many tools across many setups in numerically controlled work. The program names which offsets to use and stays constant; the offset page tracks each tool’s changing reality, regrinds, breakage, fresh setups, on a screen built for fast, reversible edits. Understanding which half lives where is genuinely half of running a machine confidently, and the call side, G43, H and D words, is core vocabulary drilled free in the 60-second rounds on the G-code practice page, so that reading a program you always know which offset it is calling, and entering the value, you always know it belongs on the page.
Sources
Frequently asked questions
How do you manually enter a tool offset in G-code?
Usually you do not enter it in the program: the program calls the offset (G43 H1 for length, a D-word for diameter), while the value lives on the control’s offset page, set by touch-off or measurement. Manually entering one means typing the number in the offset table. G10 can write values from a program, but that is for automation.
What is the difference between G43 H and the offset value?
G43 H1 is the call, applying length offset 1 from now on; the value in register 1, the tool’s real length, lives on the offset page set by touch-off. The program names which offset; the table holds what it is.
What is G10 and when would I use it to set offsets?
G10 writes offset-table values from within a program, useful for automation like self-setting fixtures or probing routines. It is the wrong tool for a one-off adjustment, where typing on the offset page is faster and more visible.
Why are tool offsets kept off the offset page instead of in the program?
Because the value changes independently: one proven program runs many tools whose real lengths change with regrinds and re-setups, so storing the value separately keeps the program constant while offsets track reality, on a visible, reversible screen.