G03 tells your CNC machine to move in a counterclockwise circle. It follows a path along a set radius — like tracing the edge of a coin the other way — while cutting at a controlled speed.
Any time you need to cut a curved path going counterclockwise, G03 is the code you’ll use.
Key Takeaways
- G03 moves the tool in a counterclockwise arc — use G02 for clockwise
- Requires an endpoint (X/Y) and a radius (R) or center offsets (I/J) to define the arc
- It’s a modal code — it stays on until you switch to G00, G01, or G02
- G03 and G3 are the same thing — the zero is optional
- For full circles, use I/J instead of R
| G03 – At A Glance | |
|---|---|
| Function | Counterclockwise circular interpolation |
| Format | G03 X__ Y__ R__ F__ or G03 X__ Y__ I__ J__ F__ |
| Type | Modal (Group 1 – Motion) |
| Cancelled by | G00, G01, G02 |
| Required params | Endpoint (X/Y) + R or I/J |
What Does G03 Do?
G03 moves the cutting tool along a counterclockwise arc from one point to another. You give it an endpoint and a radius, and it figures out the curved path between the two.

The machine doesn’t move in a perfect circle. It actually takes a series of very small straight steps that add up to look like a curve. This is called interpolation.

To use G03, you need three things:
- An endpoint — where the arc stops (X and Y coordinates)
- A radius — how big the arc is (R), or center offsets (I and J)
- A feed rate — how fast the tool moves (F)

G03 is a modal code. That means it stays active until you turn it off with another movement code like G00, G01, or G02.
G03 Format
The most common format uses the R word to set the radius:
G03 X__ Y__ R__ F__
You can also use I and J instead of R. I and J define the center of the arc as an offset from your starting point:
G03 X__ Y__ I__ J__ F__
Start with the R format — it’s easier to understand. Use I and J when you need to cut a full circle or an arc larger than 180°.
G03 Code Example
O0200 (Program number)
G90 G54 G17 G21 (Absolute mode, work offset, XY plane, metric)
G00 X25. Y0. (Rapid to arc start point)
M03 S1200 (Spindle on CW at 1200 RPM)
G43 H01 Z5. (Tool length comp, move to clearance height)
G01 Z-5. F100. (Feed down to depth)
G03 X0. Y25. R25. F200. (Counterclockwise arc: 90° cut, 25mm radius)
G00 Z50. (Rapid to safe height)
M05 (Spindle off)
M30 (End program)
The tool starts at X25, Y0. It cuts a counterclockwise arc to X0, Y25 — a 90° curve with a 25mm radius. The radius in the R word matches the distance from the start point to the center of the arc.
COMMON MISTAKE – Using G03 When You Need G02
If the arc cuts in the wrong direction, stop the machine immediately.
G02 goes clockwise, G03 goes counterclockwise — viewed from above, looking down at the XY plane.
A quick check: if your arc should curve to the left, it’s G03. If it curves to the right, it’s G02. Always verify in simulation before you run it.
G03 vs G02
G02 and G03 work the same way. The only difference is direction. G03 goes counterclockwise. G02 goes clockwise. Both are viewed from above, looking down at the XY plane.

Which one you need depends on the shape of the part. Inside corners often use G03. Outside corners might use G02.
CAM software picks the right one for you automatically — but if you’re writing code by hand, think through the direction before you write it.
G3 vs G03 — Does the Zero Matter?
No. G3 and G03 do the exact same thing. The leading zero doesn’t change anything.
Textbooks and formal references tend to use G03 while many programmers will use G3 to save a keystroke. If your shop has a standard, follow it — otherwise use whichever you prefer.
When to Use G03
Use G03 any time you need to cut a counterclockwise arc or radius. Common situations:
- Rounding an inside corner on a part
- Cutting a full or partial circular profile
- Blending a smooth radius between two straight cuts
- Milling around a curved feature
In a real program, G03 usually comes after the tool is positioned, the length offset is applied (G43), and the tool has fed down to depth with G01.
Things to Check Before You Run G03
Units
Know whether you’re working in inches or millimeters. G20 sets inches, G21 sets millimeters.
A 25mm arc run in inches mode will move 25 inches — not what you want.
Absolute vs. Incremental Mode
How the controller interprets your coordinates depends on whether you’re in G90 (absolute) or G91 (incremental) mode.
- Absolute (G90): coordinates are measured from the program zero.
- Incremental (G91): coordinates are measured from the current position.
The images below show the difference between the absolute and incremental positioning modes. The numbers in parentheses are the locations given to the the machine to make the move.


Start and Stop Positions
Think through the full path the tool takes — not just the arc itself. Where is the tool starting? Where does it end up? Is there anything in between, like a clamp or vise jaw? It’s easy to forget about fixturing and end up crashing into it.
How to Cancel G03
There’s no specific cancel code for G03. Just switch to any other movement code:
- G00 – Rapid travel
- G01 – Straight-line feed move (Linear interpolation)
- G02 – Clockwise arc (Circular interpolation CW)
The new code takes over on that line and G03 turns off.
Codes Used With G03
The codes below are used with the G03 code or commonly found very close to a G03 command in a CNC program:
- G17/G18/G19 – Sets the cutting plane (XY, XZ, or YZ). Most mills default to G17 (XY).
- M03 – Spindle on, clockwise
- M08 – Flood coolant on
- M09 – Coolant off
- N – Program line number
- R – Radius size
- S – Set spindle speed
- X – X axis location
- Y – Y axis location
FAQS
What is the difference between G02 and G03?
G03 moves counterclockwise. G02 moves clockwise. Both use the same format — endpoint plus radius or I/J plus feed rate. The direction is the only difference.
Can I cut a full circle with G03?
Yes. Set your start and end point to the same location, then use I and J to define the center. You don’t need an X/Y endpoint when the arc starts and ends at the same spot.
When should I use I/J instead of R?
Use I/J for full circles and arcs over 180°. The R method can confuse some controls on large arcs. I/J is always explicit about where the center is.



































