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

G41 le dice al control que desplace la trayectoria media herramienta hacia la izquierda del contorno, mirando en el sentido de avance, con el radio guardado en el corrector D. Así programas las cotas del plano y no el centro de la fresa: si cambias de fresa o se desgasta, solo tocas el corrector. Con una fresa derecha girando en M03, G41 corresponde al fresado en concordancia.

Ver la ficha completa de la familia

Sintaxis por control

Fanuc (fresado)

G01 G41 D01 X0. Y-15. F250

D llama al corrector de radio de la tabla. La activación tiene que ir en un movimiento lineal con desplazamiento lateral mayor que el radio de la fresa; G40 la cancela en otro movimiento lineal fuera de la pieza.

Haas (fresado)

G01 G41 D01 X0. Y-15. F250

Misma sintaxis que Fanuc. Comprueba si la tabla de correctores de tu máquina está configurada en radio o en diámetro: si escribes el radio donde espera el diámetro, el perfil sale con la mitad de compensación en todo el contorno.

Siemens 840D / 828D

G1 G41 X0 Y-15 F250

Siemens usa G41/G42/G40 igual, pero el radio no sale de una tabla D independiente: sale del filo activo (D1, D2...) de la herramienta llamada con T. D0 anula las correcciones.

Heidenhain TNC (Klartext)

L X+0 Y-15 RL F250

RL es la compensación a la izquierda (equivale a G41), RR la de la derecha y R0 la cancela. El radio sale de la columna R de la tabla TOOL.T, y DR añade una corrección delta sin tocar la tabla.

Letras que lo acompañan

LetraQué indicaUnidad
DNúmero del corrector de radio de la tabla de herramientas: es el valor que el control desplaza lateralmente.número entero (D01, D12...)
X YPunto final del bloque de activación y de cada tramo del contorno, ya en cotas de la pieza acabada.mm / pulg
FAvance del bloque de aproximación y del contorneado. La entrada compensada conviene hacerla en avance, no en rápido.mm/min con G94
G17 / G18 / G19Plano en el que se compensa. La compensación de radio solo actúa en el plano activo; en fresado casi siempre G17 (XY).modal, sin unidad

Ejemplo comentado

Pasada de acabado del perfil exterior de una placa de 80 x 60 mm en aluminio, con fresa de Ø12 y corrector D01 = 6,0 mm de radio. El origen G54 está en la esquina inferior izquierda del perfil acabado y el recorrido se hace en sentido horario visto desde arriba, que con M03 es fresado en concordancia.

O0041 (PERFIL EXTERIOR CON G41)( Cabecera del programa. )
G21 G17 G40 G49 G80( Milímetros, plano XY y todo cancelado: compensación de radio, de longitud y ciclos fijos. )
G91 G28 Z0.( Sube Z a referencia en incremental antes del cambio. Con G90 el bloque bajaría antes al Z0 de la pieza. )
T1 M06( Carga la fresa de Ø12. )
G90 G54 G00 X-25. Y-15.( Absoluto, origen de pieza y posicionamiento fuera del material, en la prolongación de la pared izquierda. )
G43 H01 Z50. M03 S3200( Compensación de longitud de la T1 y husillo en marcha. H01 es el corrector de la T1. )
M08( Refrigerante. )
G00 Z-5.( Baja a la profundidad de pasada en rápido: se puede porque la fresa está fuera de la pieza. )
G01 G41 D01 X0. Y-15. F250( Activa la compensación a la izquierda en un tramo recto de 25 mm, muy por encima del radio de 6 mm. Al terminar el bloque el centro de la fresa queda desplazado 6 mm respecto al punto programado. )
G01 Y60.( Pared izquierda X0 subiendo. Mirando hacia +Y, el material queda a la derecha del avance: eso es exactamente lo que pide G41. )
X80.( Pared superior Y60. El control redondea la esquina exterior por sí solo. )
Y0.( Pared derecha X80, bajando. )
X-15.( Pared inferior Y0 y salida por la prolongación, ya fuera del material. )
G01 G40 X-25.( Cancela la compensación en un movimiento lineal y con la fresa fuera de la pieza. )
G00 Z50. M09( Retira en Z y corta el refrigerante. )
G91 G28 Z0. M05( Z a referencia y husillo parado. )
G90( Devuelve el control a absoluto. )
M30( Fin de programa y rebobinado. )

Cuándo se usa G41 y no G42

El sentido no depende de si el contorno es exterior o interior, sino de dónde queda el material mirando en la dirección de avance. Ponte encima de la fresa mirando hacia donde va: si el material te queda a la derecha, la fresa se desplaza a la izquierda y toca G41; si te queda a la izquierda, toca G42. En la práctica, con una fresa derecha girando en M03, G41 sale al recorrer un perfil exterior en sentido horario y al recorrer una cajera en sentido antihorario, que son los dos casos de fresado en concordancia.

Cómo se combina con la entrada, el corrector D y G40

G41 necesita un bloque de aproximación lineal para meter la corrección: el control desplaza el final de ese bloque perpendicularmente al movimiento siguiente, así que el tramo tiene que tener desplazamiento lateral mayor que el radio de la fresa y empezar fuera del material. Lo mismo al salir con G40. Muchos programas entran y salen por la prolongación de la primera y la última pared, o con un arco tangente después de haber activado la compensación en recta. G41 convive con G43: una compensa el radio en el plano y la otra la longitud en Z.

Qué controla de verdad: la trayectoria, no la cota del plano

El control no cambia la pieza, cambia el camino del centro de la fresa. Por eso el corrector D es la palanca de ajuste dimensional del taller: si el perfil sale 0,04 mm grande, se corrige el corrector, no el programa. Ese mismo mecanismo permite dejar demasía sumando la crece al radio (D = 6,2 para dejar 0,2 mm por lado) y luego dar la pasada de acabado con el mismo programa y el valor real. También permite reutilizar el programa con otra fresa de distinto diámetro sin volver a postprocesar.

Errores que cuestan una pieza (o una herramienta)

  • Activar G41 en un bloque cuyo desplazamiento lateral es menor que el radio de la fresa: el control no tiene sitio para meter la corrección y da alarma o entra sobrecortando la pieza.
  • Activar o cancelar la compensación en un arco (G02/G03). Fanuc y Haas la quieren en un movimiento lineal G00 o G01; en arco alarman.
  • Llegar al M06, al G28 o al final del programa con G41 todavía activa: la retirada se hace desplazada y la herramienta siguiente arranca con la corrección puesta.
  • Escribir el diámetro de la fresa en un corrector configurado en radio (o al revés): el perfil sale con el doble o la mitad de compensación, y el error es igual en todo el contorno.
  • Cambiar el sentido de recorrido del contorno y dejar G41: si antes ibas en horario por el exterior y ahora vas en antihorario, toca G42; con G41 la fresa se mete dentro de la pieza.
  • Programar un radio interior del contorno más pequeño que el radio de la fresa: el control da alarma de interferencia o, si no la detecta, deja el radio grande de la fresa.

Frequently Asked Questions (FAQ)

¿G41 es a la izquierda de qué exactamente?

De la trayectoria, no del plano ni de la máquina. Ponte mentalmente encima de la fresa mirando hacia donde avanza: G41 la desplaza hacia tu mano izquierda. Dicho al revés, con G41 el material queda a la derecha del avance y con G42 a la izquierda.

¿G41 es fresado en concordancia o en oposición?

Depende del giro. Con una fresa derecha girando en M03, que es lo normal, G41 da fresado en concordancia (climb). Si la herramienta es a izquierdas o el husillo gira en M04, la relación se invierte y G41 pasa a ser fresado en oposición.

¿Puedo activar G41 en un G00?

La mayoría de los controles lo admiten, pero es mala idea: la corrección se mete durante un movimiento en rápido cerca de la pieza. Actívala en un G01 con avance de aproximación y con la fresa claramente fuera del material.

¿Qué valor pongo en D, el radio o el diámetro?

Lo que espere la tabla de tu máquina, que es un ajuste del control. Confírmalo con una pasada de prueba midiendo la pieza. Si quieres dejar demasía para el acabado, suma la crece al valor del corrector en vez de tocar el programa.

¿Por qué me da alarma justo al entrar al contorno?

Casi siempre por tres motivos: el bloque de activación es más corto que el radio de la fresa, la compensación se activa en un arco, o el contorno tiene un radio interior o una ranura más estrecha que la herramienta. Revisa esos tres puntos antes de tocar nada más.

Related codes

G40G42G43G01

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