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

G83 taladra en varios picados: baja Q milímetros en avance, sale en rápido hasta el plano R para soltar la viruta, vuelve a entrar en rápido hasta un poco antes de donde se quedó y sigue, hasta llegar a la Z de fondo. Es el ciclo para agujeros de más de tres o cuatro diámetros y para materiales que hacen viruta larga. Q es siempre positivo e incremental: es la profundidad de cada picado, no una cota.

Ver la ficha completa de la familia

Sintaxis por control

Fanuc (fresado)

G99 G83 X30. Y20. Z-60. R2. Q8. F110

El hueco que el control deja al volver a entrar (la distancia de aproximación rápida antes de retomar el corte) es un parámetro de la máquina, no se programa. La variante G73 hace lo mismo pero con retroceso corto dentro del agujero.

Haas (fresado)

G99 G83 X30. Y20. Z-60. R2. Q8. F110

Haas admite además I (primer picado), J (cuánto se reduce cada picado) y K (picado mínimo) en lugar de Q, para ir acortando el picado a medida que el agujero se hace profundo. El ajuste 52 decide si la retirada llega al plano R o se queda por encima.

Siemens 840D / 828D

CYCLE83(RTP, RFP, SDIS, DP, DPR, FDEP, FDPR, DAM, DTB, DTS, FRF, VARI)

Los parámetros de CYCLE83 son posicionales. El que decide el comportamiento es VARI: con rotura de viruta el retroceso es corto (equivale a G73) y con evacuación la broca sale del agujero (equivale a G83).

Heidenhain TNC (Klartext)

CYCL DEF 203 TALADRADO UNIVERSAL

En el ciclo 203, Q202 es la profundidad de cada aproximación y Q212 cuánto se reduce en cada picado. El ciclo 205 añade rotura de viruta, punto de arranque hundido y desahogo, para agujeros muy profundos.

Letras que lo acompañan

LetraQué indicaUnidad
X YPosición del agujero. Cada bloque nuevo con X o Y repite el ciclo completo, picados incluidos.mm / pulg
ZFondo del agujero: cota absoluta con G90, distancia desde el plano R con G91.mm / pulg
RPlano de referencia. En G83 importa el doble que en G81, porque la broca sube hasta ahí en cada picado: un R alto multiplica el tiempo de ciclo.mm / pulg
QProfundidad de cada picado. Siempre positiva e incremental; no es una cota ni la profundidad total.mm / pulg
FAvance de taladrado. Modal: si no se escribe, se hereda el último F del programa.mm/min con G94
K / LRepeticiones del ciclo en modo incremental (K en Fanuc, L en Haas) para filas de agujeros equidistantes.número entero

Ejemplo comentado

Dos agujeros de Ø10 y 60 mm de profundidad, seis diámetros, en acero al carbono con broca de HSS-Co. Se pica de 8 en 8 mm para que la viruta salga; con un ciclo sin picado a esa profundidad la broca se agarra. Los puntos ya están punteados con broca de centrar en la operación anterior.

G91 G28 Z0.( Z a referencia en incremental antes del cambio. )
T7 M06( Broca de Ø10 de HSS-Co. )
G90 G54 G00 X30. Y20.( Absoluto, origen de pieza y posicionamiento sobre el primer agujero. )
G43 H07 Z50. M03 S900( Longitud de la T7 y husillo a 900 rpm, unos 28 m/min de velocidad de corte en Ø10. )
M08( Refrigerante. A seis diámetros es imprescindible. )
G99 G83 Z-60. R2. Q8. F110( Ocho picados: baja 8 mm en avance, sale en rápido a Z2, vuelve a entrar y repite hasta Z-60. Q8 es incremental y positivo; el avance de 110 mm/min son unas 6 centésimas por diente. )
X90.( Segundo agujero: el ciclo se repite entero con los mismos picados. )
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. )
G90 M30( Vuelve a absoluto y termina. )

Cuándo hace falta G83 y no G81

En cuanto el agujero pasa de tres o cuatro diámetros, la viruta deja de salir sola: se queda enrollada en los canales de la broca, rozando la pared, y el par sube hasta que la broca se agarra o se rompe. G83 corta eso porque saca la broca del agujero en cada picado y la viruta se desprende. También hace falta antes de esa profundidad en materiales que hacen viruta larga y pastosa, como aceros de bajo carbono o aluminios blandos, y siempre que no haya refrigeración interior que empuje la viruta hacia fuera.

Cómo se elige Q y cómo se combina con R

Un punto de partida razonable es Q igual a un diámetro para los primeros picados y medio diámetro a partir de cuatro o cinco diámetros de profundidad, porque cuanto más hondo está la broca, más lejos tiene que arrastrar la viruta. En Fanuc el Q es único para todo el agujero, así que se elige el valor del tramo más difícil; en Haas se puede escalonar con I, J y K. El plano R conviene dejarlo bajo, 2 o 3 mm, porque la broca sube hasta él en cada picado y cada milímetro de más se paga en tiempo multiplicado por el número de picados.

Qué hace el control y qué depende de la máquina

El control encadena los picados y, al volver a entrar, se acerca en rápido hasta dejar un pequeño hueco antes de retomar el corte. Ese hueco es un parámetro de la máquina y no se programa, así que no se puede dar por hecho el valor exacto. En Haas hay además un ajuste que decide si el retroceso llega al plano R o se queda por encima del último picado. Lo que sí controlas tú es el número de picados que sale de dividir la profundidad entre Q, y con él el tiempo de ciclo y la vida de la broca.

Errores que cuestan una pieza (o una herramienta)

  • Escribir Q como si fuera una cota o con signo negativo: Q es la profundidad de cada picado, siempre positiva e incremental. Un Q negativo da alarma en la mayoría de los controles.
  • Dejar un Q demasiado grande en un agujero profundo: la viruta no llega a salir, el par sube y la broca se agarra en el último tercio del agujero, justo donde no se puede recuperar.
  • Confundir G83 con G73: G73 solo rompe la viruta con un retroceso corto dentro del agujero, no la saca. En agujeros de más de cuatro o cinco diámetros o en materiales pastosos hace falta G83.
  • Poner el plano R muy alto: la broca sube hasta R en cada uno de los ocho o diez picados, así que un R de 50 mm dispara el tiempo de ciclo sin ganar seguridad.
  • Olvidar el G80 antes del siguiente movimiento en rápido: el ciclo sigue activo y el primer bloque con X o Y taladra otro agujero de 60 mm donde no toca.
  • Cambiar a G91 sin recalcular: en incremental la Z pasa a medirse desde el plano R y la R desde la posición actual, y el agujero sale con otra profundidad.
  • Taladrar a seis diámetros sin punteado previo y sin refrigerante: la broca se desvía en la entrada y el agujero sale acampanado y torcido.

Frequently Asked Questions (FAQ)

¿Q es la profundidad total o la de cada picado?

La de cada picado, y siempre en positivo e incremental. La profundidad total es la Z. Con Z-60, R2 y Q8, el control hace ocho picados de 8 mm hasta llegar a la cota Z-60.

¿Cuándo uso G83 y cuándo G73?

G73 retrocede solo unos décimas o milímetros dentro del agujero: rompe la viruta pero no la evacúa, y es rápido. G83 saca la broca hasta el plano R en cada picado: es más lento pero es lo único que funciona a partir de cuatro o cinco diámetros y en materiales de viruta larga.

¿Qué valor de Q pongo?

Como punto de partida, un diámetro de la broca en los primeros picados y medio diámetro a partir de cuatro o cinco diámetros de profundidad. Si el agujero se hace largo y la máquina empieza a sonar distinto o el amperaje del husillo sube, baja Q antes de romper la broca.

¿G83 saca la broca del agujero en cada picado?

En Fanuc, sí: la retirada llega al plano R. En Haas depende del ajuste 52, que puede dejar el retroceso por encima del último picado en vez de salir del agujero. Si te importa el detalle, compruébalo en el manual de tu máquina antes de contar con él.

¿Se puede picar también al roscar?

Sí, pero con otros códigos: algunos controles admiten Q dentro del G84 de roscado rígido, y Fanuc tiene G84.2 y G84.3 para roscado con picado. Depende de la opción de la máquina, así que hay que verificarlo antes de lanzarlo con un macho dentro del agujero.

Related codes

G73G80G81G82G98

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