List of G and M Codes for CNC Programming

Search and filter ISO commands by control, machine or function.

The CNC programming language is based on structured code blocks that control toolpaths, feeds and machine-tool functions. In this list of G and M codes you'll find a quick reference to the commands most used in turning and milling. Although an ISO standard exists, the exact execution of a canned cycle or an advanced interpolation can vary depending on the Fanuc, Heidenhain, Siemens or Haas control and the manufacturer's parameters.

These codes can vary depending on the control, post-processor, machine and manufacturer parameters. Before running a real program, confirm the syntax in the official machine/control manuals and simulate the toolpath. GetGCode is not liable for personal injury, material damage, production stoppages, programming errors, diagnostic errors or decisions made from this indicative information. The trademarks cited belong to their respective owners (see Legal notice).
Add my codes
You can use the table freely. Saving your own codes is reserved for accounts with Pro access.
Code
Name
Family
Example
What does it do
Filters

G43 aplica en el eje Z la longitud de la herramienta guardada en el corrector H, de modo que la Z0 del programa siga siendo la cara de la pieza aunque cada herramienta sobresalga del cono una longitud distinta. Se programa justo después del cambio de herramienta, en el mismo bloque que una Z de seguridad, y se cancela con G49 o con H0. Sin G43, la máquina se mueve con la longitud de la herramienta anterior o sin ninguna.

Ver la ficha completa de la familia

Sintaxis por control

Fanuc (fresado)

G43 H01 Z50. M03 S1200

La corrección entra al ejecutar el movimiento en Z de ese bloque; por eso se escribe junto a una Z de seguridad y no en un bloque suelto. G49 o G43 H0 la cancelan. G44 aplica la longitud en sentido contrario y hoy apenas se usa.

Haas (fresado)

G43 H01 Z50. M03 S1200

Igual que Fanuc. Haas suma la columna de geometría de longitud y la de desgaste. El ajuste 15 (H & T Code Agreement), si está activado, da alarma cuando el número de H no coincide con el de T.

Siemens 840D / 828D

T3 M6 D1

Siemens no usa G43 ni H: la longitud entra con el número de filo D de la herramienta activa y se anula con D0. Los valores están en la tabla de herramientas, no en una lista de correctores aparte.

Heidenhain TNC (Klartext)

TOOL CALL 3 Z S1200

La longitud L de la tabla TOOL.T se aplica al llamar la herramienta, sin instrucción separada. DL añade una corrección delta puntual (DL+0.15) sin modificar la tabla.

Letras que lo acompañan

LetraQué indicaUnidad
HNúmero del corrector de longitud. Por norma de taller, el mismo número que la herramienta que acaba de entrar (T4 con H04).número entero (H01, H12...)
ZCota de seguridad a la que se aplica la corrección en ese mismo bloque. Debe estar claramente por encima de la pieza y del amarre.mm / pulg
H0Anula la corrección de longitud sin escribir G49. Útil para dejar el estado limpio al final de un subprograma.sin unidad

Ejemplo comentado

Segunda operación de un programa de fresadora: entra la broca de Ø8 (T4) para hacer cuatro agujeros. El corrector H04 lleva la longitud de esa broca referida a la cara superior de la pieza, que es la Z0 del G54.

G00 Z50. M09( Retira la herramienta anterior y corta el refrigerante. )
G40 G80( Cancela la compensación de radio y cualquier ciclo fijo antes del cambio. )
G91 G28 Z0. M05( Z a referencia en incremental, husillo parado. El cambio anula la compensación de longitud que hubiera activa. )
T4 M06( Cambio a la broca de Ø8. )
G90 G54 G00 X20. Y20.( Absoluto, origen de pieza y posicionamiento sobre el primer agujero con la Z todavía arriba. )
G43 H04 Z25. M03 S2400( Aplica la longitud de la T4 y baja a Z25 ya compensado. H04 corresponde a T4: esta línea es la que evita la mayoría de los choques en Z. )
M08( Refrigerante. )
G99 G81 Z-18. R2. F180( Taladra el primer agujero. Con la longitud aplicada, Z-18 es una cota real de la pieza y no una distancia desde el cono. )
X60.( Segundo agujero: el ciclo se repite entero en la posición nueva. )
Y50.( Tercer agujero. )
X20.( Cuarto agujero. )
G80 G00 Z50. M09( Cancela el ciclo antes de mover en rápido y corta el refrigerante. )
G91 G28 Z0. M05( Retirada segura y husillo parado. )
G49( Cancela la corrección de longitud con la máquina ya en referencia, para dejar el control en un estado previsible. )
G90 M30( Vuelve a absoluto y termina. )

Cuándo hay que programar G43

Siempre después de un cambio de herramienta y antes del primer movimiento en Z que se acerque a la pieza. El cambio de herramienta anula la corrección anterior, así que la máquina queda trabajando con longitud cero o con la que le dejara el operario en manual. Se programa en el bloque de aproximación, con una Z de seguridad y normalmente junto al arranque del husillo. También hay que volver a escribirlo si el programa pasa por un subprograma o una operación que haya cancelado la corrección con G49 o con H0.

Cómo se combina con el cambio de herramienta y con el G54

El reparto es sencillo: el G54 lleva dónde está la cara de la pieza y el corrector H lleva cuánto sobresale cada herramienta. Si el taller mide las longitudes tocando la pieza, la Z del G54 suele quedar a cero; si las mide en un reglaje fuera de máquina o contra la mesa, la Z del G54 lleva la altura de la pieza. Lo que no se puede es contar la altura dos veces, en el corrector y en el origen. G43 y G41/G42 son independientes: una compensa en Z y la otra en el plano.

Qué controla y qué no

G43 solo desplaza el eje de la herramienta, así que corrige profundidades y alturas, nunca cotas del plano XY. Es la palanca de ajuste de las profundidades: si un rebaje sale 0,05 mm hondo, se corrige el desgaste del corrector, no el programa. En máquinas de cinco ejes con rotativos, mantener la punta en su sitio mientras la mesa o el cabezal giran es otra cosa, y necesita las funciones de punta de herramienta (G43.4 o G43.5 en Fanuc, TCPM en Heidenhain), disponibles solo si la máquina las lleva.

Errores que cuestan una pieza (o una herramienta)

  • Llamar un H distinto del número de herramienta (T4 con H03): la máquina baja la diferencia de longitud entre las dos herramientas y el resultado es un agujero corto o una broca clavada contra la mesa.
  • Olvidar el G43 después del M06: la máquina se mueve con la longitud de la herramienta anterior y la Z0 del programa deja de ser la cara de la pieza.
  • Escribir G43 H04 en un bloque sin Z: en muchos controles la corrección no se aplica hasta el primer movimiento en Z, y ese movimiento suele ser ya el de aproximación al corte.
  • Medir las herramientas contra la mesa y además meter la altura de la pieza en el Z del G54: la misma distancia se resta dos veces y la herramienta baja de más.
  • Cancelar con G49 y seguir mecanizando: sin corrección la referencia en Z pasa a ser la del cono en el cero máquina y el siguiente movimiento en Z es un choque casi seguro.
  • Reglar la herramienta en la columna de desgaste en vez de en la de geometría: el ajuste fino posterior se pisa y nadie entiende de dónde salen las décimas.

Frequently Asked Questions (FAQ)

¿H tiene que ser igual que T?

El control no lo exige, pero es la norma de taller que menos accidentes provoca: T4 con H04. En Haas se puede forzar con el ajuste 15 (H & T Code Agreement), que da alarma si los números no coinciden. Numerar herramientas y correctores igual quita un error de encima.

¿Qué diferencia hay entre G43 y G44?

G43 aplica la longitud en el sentido habitual y G44 en el contrario, pensada para tablas con el signo invertido. En la práctica casi todos los talleres trabajan solo con G43; usar G44 sin saber cómo está reglada la máquina lleva la herramienta al doble de la longitud en el sentido equivocado.

¿El valor del corrector es positivo o negativo?

Depende del método de reglaje y del control: hay talleres que guardan la longitud de la herramienta y otros que guardan la distancia del cero máquina a la cara de la pieza, que sale negativa. Lo importante es que todas las herramientas se midan igual y que el criterio esté escrito.

¿G43 H0 es lo mismo que G49?

En la práctica sí: los dos dejan el eje Z sin corrección de longitud. G49 es más explícito y es el que aparece en los bloques de seguridad de cabecera; H0 se usa cuando interesa anular la corrección sin cambiar el estado modal del grupo.

¿Sirve G43 en mecanizado de cinco ejes?

Para la corrección de longitud sí, pero no basta cuando los ejes rotativos giran: ahí hace falta el control de punta de herramienta, que en Fanuc son G43.4 y G43.5 y en Heidenhain la función TCPM. Son opciones de máquina: si no están habilitadas, el control da alarma.

Related codes

G49G44M06G54

G00

Movement

Quick positioning

Fast movement to a coordinate without controlling cutting advance.

G01

Movement

Linear interpolation

Controlled linear movement with programmed advance.

G02

Movement

Hourly circular interpolation

Circular arc clockwise in the active plane.

G02.1/G03.1

Interpolation

Spiral interpolation (circular threading B)

CW/CCW spiral interpolation: continuous helical motion with variable pitch; used in B threading and some lapping operations.

G02.2/G03.2

Interpolation

Involute interpolation

Interpolation along an involute circle (involute interpolation), used in gear manufacturing.

G03

Movement

Counterclockwise circular interpolation

Counterclockwise circular arc in the active plane.

G04

Program control

Timed dwell

Temporarily stops execution for a defined time or number of revolutions.

G05/G05.1

High speed

High speed / AI contour

Enables high-speed machining functions, path look-ahead or advanced contour control.

G5/G5.1/G5.2

Advanced interpolation

Splines and NURBS

Interpolations by cubic spline, quadratic spline or NURBS in controls that support it.

G05.4

High speed

HRV3/HRV4 on/off

Enables or disables HRV3/HRV4 (High Response Vector) current control to improve servo precision at high speed.

G06.2

High speed

NURBS interpolation

Interpolation of NURBS (Non-Uniform Rational B-Spline) curves directly in the control, reducing block points and improving smoothness.

G07

Interpolation

Hypothetical axis interpolation

Defines a hypothetical (virtual) axis for interpolation; used when machining symmetrical parts or to coordinate non-physical moves.

G7/G8

Lathe

Diameter/radius mode around lathe

Selects whether lathe X coordinates are read as diameter or radius depending on the control.

G08/G09

Toolpath

Smoothing and block-wise exact stop

Functions used to activate/deactivate smoothing or require exact stopping in a specific block according to control.

G10

Offsets

Offset writing

Lets you write tool offsets, work offsets or other data from the program.

G12/G13

Milling cycles

Circular pocket

Circular interpolation cycle to machine pockets or circular patterns according to control.

G15/G16

Coordinates

Polar coordinates

Activates or cancels programming in polar coordinates, usually radius and angle.

G17/G18/G19

Drawing

Plane selection

Defines the active plane for arcs and offsets.

G20/G21

Units

Units inches/millimeters

Select programming in inches or millimeters.

G22/G23

Safety

Programmed stroke limits

Activates or deactivates zone checking/stored limits according to control.

What are preparatory (G) and auxiliary (M) codes?

G codes prepare and govern tool movement: rapid traverses, linear interpolation, circular interpolation, canned cycles, working planes and compensations. M codes control auxiliary machine functions such as spindle, coolant, stop, tool change or program end.

Main programming categories

Movement and interpolation (G00, G01, G02, G03)

G00 is used for rapid positioning, G01 for linear cutting feed and G02/G03 for clockwise or counterclockwise circular interpolation. They are the basis of most CNC programs on milling machines and lathes.

Canned cycles and subprograms

Canned cycles simplify repetitive operations such as drilling, tapping, boring or roughing. Their syntax varies a lot between controls, so it's always wise to check the machine manual.

Frequently Asked Questions (FAQ)

What is the difference between a G code and an M code?

G codes (preparatory) define the geometry and tool movement, such as linear interpolations or roughing cycles. M codes (miscellaneous or auxiliary) control the machine hardware, such as starting the spindle (M03), the coolant (M08) or the end of program (M30).

Are G-codes universal for all lathes and milling machines?

Not entirely. Although basic moves such as G00, G01, G02 and G03 are universal, complex canned cycles like G71 for roughing or G83 for peck drilling have different syntax and parameters depending on whether you use Fanuc, Haas, Siemens or Heidenhain.

What is the G01 code and when is it used?

G01 is the linear interpolation code. It tells the tool to move in a straight line to a given coordinate at a controlled cutting feed programmed with the letter F.

What is the difference between codes G90 and G91?

G90 sets absolute positioning, where every coordinate is measured from the part zero (origin). G91 activates incremental positioning, where each new move is calculated from the tool's current position.

What are G41 and G42 codes used for in machining?

These codes activate tool or insert radius compensation. G41 offsets the path to the left of the programmed contour relative to the feed direction, G42 to the right. They are used to machine profiles, chamfers and radii to exact size without gouging.

How are fixed cycles and compensations cancelled?

To avoid crashes you must cancel modal functions once they are no longer needed. G80 cancels any active canned cycle, such as drilling cycles. G40 cancels tool radius compensation, and G49 cancels length compensation, widely used on milling machines.

What are the essential auxiliary M codes?

The most standardised hardware codes are M03 (spindle clockwise), M04 (spindle counter-clockwise), M05 (spindle stop), M08 (coolant on), M09 (coolant off) and M30 (end of program, axes stop and rewind).

Do Fanuc canned cycles work the same on other controls?

No. Although interpolation moves (G00 to G03) are a widely adopted ISO standard, the syntax of complex cycles differs. For example, the lathe roughing cycle is G71 on Fanuc, but Siemens requires a different parameter structure such as CYCLE95.

What does the letter F, S and T mean in the CNC code?

Alongside the G and M codes, the letter F (feed) sets the cutting feed, the letter S (speed) sets the spindle rpm or cutting speed, and the letter T (tool) calls the tool number and its offset in the turret or magazine.

Related tools