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

G81 es el ciclo fijo de taladrado más sencillo: la herramienta baja en rápido hasta el plano R, taladra en avance hasta la Z de fondo y sale en rápido, sin pausa y sin picado. Es modal, así que cada bloque siguiente con nuevas X o Y repite el agujero en esa posición, y se cancela con G80. Para agujeros con fondo plano se usa G82 (añade pausa) y para agujeros profundos G83 (pica y evacúa viruta).

Ver la ficha completa de la familia

Sintaxis por control

Fanuc (fresado)

G99 G81 X20. Y20. Z-18. R2. F180

Con G99 la herramienta vuelve al plano R entre agujeros, que es lo rápido; con G98 sube al plano inicial, que es lo que hay que usar cuando entre agujero y agujero hay bridas o escalones. K repite el ciclo en modo incremental.

Haas (fresado)

G99 G81 X20. Y20. Z-18. R2. F180 L4

Sintaxis igual que Fanuc, pero las repeticiones se escriben con L en vez de K, y también solo tienen sentido en G91. En Haas el ciclo hereda el F modal igual que en Fanuc.

Siemens 840D / 828D

CYCLE81(50, 0, 2, -18)

Siemens no usa G81: el ciclo equivalente es CYCLE81 y los parámetros van posicionales (plano de retirada, plano de referencia, distancia de seguridad y profundidad final o relativa). El posicionamiento sobre cada agujero se hace antes o con MCALL.

Heidenhain TNC (Klartext)

CYCL DEF 200 TALADRADO

El ciclo 200 define distancia de seguridad (Q200), profundidad (Q201), avance (Q206) y aproximación (Q202). Se ejecuta con CYCL CALL en cada posición o con un ciclo de patrón de puntos.

Letras que lo acompañan

LetraQué indicaUnidad
X YPosición del agujero. Cada bloque nuevo con X o Y repite el ciclo completo en esa posición mientras no se cancele con G80.mm / pulg
ZFondo del agujero: cota absoluta con G90, distancia incremental desde el plano R con G91.mm / pulg
RPlano de referencia: la cota a la que la herramienta pasa de rápido a avance, y a la que vuelve entre agujeros con G99. Lo habitual son 2 o 3 mm sobre la cara.mm / pulg
FAvance de taladrado. Es modal: si no se escribe, el ciclo hereda el último F del programa.mm/min con G94
K / LRepeticiones del ciclo en modo incremental, para filas de agujeros equidistantes. K en Fanuc, L en Haas; K0 o L0 memorizan el ciclo sin ejecutarlo.número entero

Ejemplo comentado

Cuatro agujeros de Ø5 pasantes en una placa de 15 mm, con broca de punta a 118 grados. La Z de fondo tiene que llevar la altura de la punta de la broca (alrededor de 1,5 mm en Ø5) más un par de milímetros de salida, de ahí el Z-18. El punteado ya se hizo en la operación anterior.

G91 G28 Z0.( Z a referencia en incremental antes del cambio. )
T4 M06( Broca de Ø5. )
G90 G54 G00 X20. Y20.( Absoluto, origen de pieza y posicionamiento sobre el primer agujero con la Z arriba. )
G43 H04 Z25. M03 S2400( Longitud de la T4 y husillo en marcha. Z25 es el plano inicial al que volverá con G98. )
M08( Refrigerante. )
G99 G81 Z-18. R2. F180( Arranca el ciclo en la posición actual: baja en rápido a Z2, taladra en avance hasta Z-18 y vuelve en rápido a Z2 porque está en G99. )
X60.( Segundo agujero. Solo hace falta la cota nueva: el ciclo se repite entero con la misma Z, R y F. )
Y50.( Tercer agujero. )
G98 X20.( Cuarto agujero, ahora con G98: al salir sube al plano inicial Z25, para que el traslado siguiente pase por encima de la brida. )
G80 G00 Z25. M09( G80 cancela el ciclo. Sin él, cualquier bloque posterior con X o Y volvería a taladrar; se cancela antes de mover en rápido. )
G91 G28 Z0. M05( Retirada segura y husillo parado. )
G90 M30( Vuelve a absoluto y termina. )

Cuándo usar G81 y cuándo otro ciclo

G81 es para agujeros cortos, hasta unos tres diámetros de profundidad, donde la viruta sale sola por los canales de la broca. También para puntear con broca de centrar, para avellanar poco profundo y para pasar la broca en material que hace viruta corta. En cuanto el agujero es más profundo o el material hace viruta larga, la broca se agarra y hay que pasar a G83, que la saca del agujero en cada picado. Si el fondo tiene que quedar limpio y plano, G82 añade una pausa antes de retirar.

Cómo se combina con R, G98/G99 y G80

El ciclo se apoya en tres alturas: el plano inicial (donde estaba la Z al arrancar el ciclo), el plano R y el fondo Z. G99 devuelve la herramienta al plano R entre agujeros, lo que ahorra tiempo, y G98 al plano inicial, que es lo que hay que usar cuando el traslado cruza por encima de una brida, una mordaza o un escalón. El ciclo queda activo hasta G80, y G80 hay que escribirlo antes de cualquier movimiento en rápido o de un cambio de herramienta.

Qué controla y qué queda en tus manos

El control se encarga de la secuencia y de las velocidades de aproximación, pero la profundidad real la pones tú: en un agujero pasante la Z tiene que incluir la altura de la punta de la broca, que en una punta a 118 grados es aproximadamente el 30 por ciento del diámetro, más un margen de salida. El avance también es tuyo, y como es modal puede heredarse del bloque anterior sin que lo notes. Y el plano R decide cuánto recorrido en rápido hay en cada agujero: subirlo de más multiplica el tiempo de ciclo sin ganar nada.

Errores que cuestan una pieza (o una herramienta)

  • Poner el plano R por debajo de la cara de la pieza o por debajo de una brida: la bajada hasta R es en rápido y la broca llega al material a esa velocidad.
  • Olvidar el G80 al terminar: el siguiente bloque que lleve X o Y repite el taladro, así que un simple posicionamiento en rápido de la operación siguiente acaba con un agujero donde no toca.
  • Quedarse en G99 con mordazas, bridas o un escalón entre agujero y agujero: el traslado se hace a la altura del plano R y la broca choca de lado.
  • Confundir G90 y G91 en el ciclo: en incremental la Z es la profundidad medida desde el plano R y la R se mide desde la posición actual, no desde el cero pieza.
  • No sumar la altura de la punta de la broca a la Z de fondo en un agujero pasante: los agujeros quedan sin pasar y hay que repasarlos a mano.
  • Usar G81 en agujeros de más de tres diámetros: la viruta no sale, la broca se agarra y se rompe. Ese trabajo es de G83.
  • Dejar el F de la operación anterior: el ciclo hereda el avance modal y la broca puede entrar con el avance de una pasada de acabado de fresa.

Frequently Asked Questions (FAQ)

¿Qué diferencia hay entre G81, G82 y G83?

G81 baja, taladra y sale. G82 hace lo mismo pero espera un tiempo P en el fondo, para que el fondo quede limpio en avellanados y agujeros de fondo plano. G83 divide la profundidad en picados de Q milímetros y sale al plano R en cada uno para evacuar la viruta, que es lo que hace falta en agujeros profundos.

¿A qué altura pongo el plano R?

Entre 2 y 3 mm sobre la cara de la pieza en piezas planas y bien amarradas. Más alto solo alarga el ciclo; más bajo deja a la broca sin margen si la superficie no es plana o el bruto viene con creces. En una superficie irregular hay que ponerlo por encima del punto más alto.

¿G98 o G99?

G99 mientras el camino entre agujeros esté libre, porque vuelve solo al plano R y ahorra tiempo. G98 cuando el traslado pasa por encima de una brida, una mordaza o un resalte, porque sube al plano inicial. Se puede cambiar de uno a otro entre agujeros dentro del mismo ciclo.

¿Cómo repito el ciclo en varios agujeros?

Basta escribir bloques con las cotas X e Y nuevas: el ciclo se repite entero en cada posición. Para filas equidistantes se puede usar K en Fanuc o L en Haas, pero solo funcionan en modo incremental: en G90 el control repite el mismo agujero en el mismo sitio.

¿Cómo calculo la Z de fondo de un agujero pasante?

Espesor de la pieza más la altura de la punta de la broca más un margen de salida de 1 a 2 mm. Para una punta estándar a 118 grados, la altura de la punta es alrededor del 30 por ciento del diámetro: en Ø5 son unos 1,5 mm.

Related codes

G80G82G83G98G99

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