GreatLight CNC Machining Factory logo
CNC Machining
Rapid Prototyping
Materials
Industries
News
About GL

Get Instant Quote

CNC Programming Guide

How to Use G03 in CNC Machine Programming

G03 cuts counterclockwise arcs on mills and lathes. This guide shows the block format, I/J/K versus R, and the start-point rules that decide whether the arc comes out round. Written for programmers and setup machinists who need the first part to be the good part.

I/J/K vs RG02 and G03Plane selectionArc troubleshooting
how to use g03 in cnc machine
Quick answers

Key takeaways

G03 means counterclockwiseIt interpolates an arc from the current position to the X/Y/Z endpoint, viewed from the positive axis of the active plane.
I/J/K beats R on tight arcsCenter offsets are unsigned distances to the arc center, so they survive arcs above 180° without alarm.
The start point must be on the arcIf the current position sits off the true radius, the control alarms out or cuts a spiral.
Pick the plane firstG17 for XY, G18 for XZ, G19 for YZ. Wrong plane is the most common G03 alarm.
Feed in the active planeF is the tangential feed rate along the arc, in mm/min for G94 or mm/rev for G95.
Fundamentals

What G03 does and how to use G03 in CNC machine control

G03 is the counterclockwise circular interpolation command. The control takes the tool from wherever it is now and drives it along an arc to the endpoint you name in the block. Standing at the spindle looking down at the table in G17, counterclockwise is the direction of increasing angle. G02 is the same motion mirrored clockwise.

The block carries three pieces of information: the endpoint, the arc center or radius, and the plane. Miss any one of them and the arc either alarms or comes out wrong. That is the whole of how to use G03 in CNC machine work, and most of the debugging time goes into the center data.

G03 is modal. Once you call it, every following block that contains X, Y, or Z coordinates is treated as another arc until you cancel it with G01 or G00. Forgetting to cancel is a classic crash: the next straight move turns into a curve. Always follow a run of arcs with an explicit G01 or G00.

On a mill the arc lies in the selected plane, usually XY. On a lathe the same G03 applies in the ZX plane with G18 active, and the control reads the geometry from the tool nose radius and the compensation direction. The block looks different but the math is identical.

  • 1
    G02 clockwise, G03 counterclockwiseDirection is judged from the positive end of the axis perpendicular to the active plane.
  • 2
    Modal by defaultCancel with G01 or G00 before the next straight move.
  • 3
    One plane at a timeSet G17, G18, or G19 before the first arc in the program.
  • 4
    Full circles need I/J/KAn R value cannot define a 360° arc.
Format

G03 block syntax: I, J, K versus R

There are two ways to describe the arc center. The I/J/K form gives the signed distance from the arc start point to the center, axis by axis. I is the X component, J is the Y component, K is the Z component. These are incremental distances from the start point, never from the machine origin, even in G90 absolute mode. That trips up a lot of programmers on the first attempt.

The R form gives the arc radius as a single number. It is shorter to read and easier to generate by hand. The catch is the sign. On most controls a positive R produces the minor arc, up to 180°, and a negative R produces the major arc, more than 180°. Two points and one radius always describe two possible arcs, so the sign is how you tell the control which one you want.

I/J/K wins on precision work. The center is explicit, so there is no ambiguity about which arc you meant, and a full 360° circle is just a full set of offsets with the endpoint equal to the start point. R cannot do a full circle at all. On tight radii, I/J/K also avoids the rounding the control applies when it back-calculates a center from a radius.

A practical rule: use R for simple fillets and corner rounds under 180°, and switch to I/J/K for slots, full bores, and any arc where the center position matters to the fit. If you are cutting a Ø12 mm dowel pin hole, the center is the whole point, so give it to the control directly.

  • 1
    I is measured in X from the start pointNot from part zero. Incremental, always.
  • 2
    J is measured in Y from the start pointSign follows the direction from start to center.
  • 3
    K is measured in Z from the start pointUsed for arcs in G18 and G19 planes.
  • 4
    R sign selects minor or major arcPositive for under 180°, negative for over 180°.
Setup

Plane selection and start-point rules that keep G03 clean

The plane command tells the control which two axes carry the arc and which axis is the tool axis. G17 selects XY, the default on nearly every mill. G18 selects XZ, used on lathes and on some horizontal boring work. G19 selects YZ, common on horizontal machining centers. Put the plane call early in the program, before any arc, and change it only when the setup genuinely changes.

The start point has to sit on the circle. If your last linear move leaves the tool 0.02 mm off the true radius, the control sees an inconsistent arc and either alarms or, worse, quietly spirals to the endpoint. On older controls you get a tolerance alarm; on newer ones the arc is blended and the form error shows up on the CMM.

Set up the lead-in properly. Position the tool at the arc start with a G01 move, then call G03. Do not start an arc from the rapid position. The control needs a known, on-radius start point, and G00 does not guarantee that the tool lands where the geometry expects.

Cutter compensation interacts with arcs. When G41 or G42 is active, the control offsets the programmed path by the tool radius. The I/J/K values still describe the center of the programmed arc, not the offset arc. For small internal radii, check that the offset arc does not invert on itself, which happens when the tool radius is larger than the corner radius.

  • 1
    G17 is the mill defaultState it anyway so the program is self-documenting.
  • 2
    Land on the arc with G01Never start a G03 from a G00 rapid position.
  • 3
    Check tool radius vs corner radiusA 6 mm cutter cannot cut a 3 mm inside corner with comp on.
  • 4
    Keep one plane per operationFlipping G17 and G19 mid-cycle invites surprises.
Geometry

Reading arc geometry off the drawing

Before you type a single G03 block, work out the center coordinates and the start and end points from the drawing. Most drawings give you a radius and a tangent condition, not a center. You have to solve for the center. Do that on paper or in CAD, not at the machine.

For a tangent arc between two lines, the center lies on the angle bisector at a distance equal to the radius from each line. For a blend between a line and a circle, the center sits on a line through the circle center, offset by the sum or difference of the two radii. Get this right and the I/J/K numbers fall out with simple subtraction.

Once you have the center, compute I and J as center minus start, axis by axis. Watch the signs. If the center is to the left of the start point in X, I is negative. If it is above the start in Y, J is positive. Sign errors here are the single biggest source of G03 alarms in hand-written code.

Round your I/J/K values to the resolution of the control. A 0.001 mm resolution control cannot use a value written to 0.0001 mm, and the rounding can push the endpoint off the true circle by a few microns. On a ±0.005 mm part that matters. Match the precision of the code to the precision of the machine.

  • 1
    Solve the center firstUse CAD or the bisector method, then subtract to get I and J.
  • 2
    Watch the signsI and J are signed distances from start point to center.
  • 3
    Match control resolutionDo not write four decimals into a three-decimal control.
  • 4
    Check with a dry runRun the block with the tool clear and watch the position display.
Context

Where G03 shows up in precision machining

Circular interpolation is everywhere in machined parts. Bore and counterbore walls, O-ring grooves, fillet radii on pocket corners, cam profiles, and the rounded ends of slots all come from G02 and G03. On a part with 40 pockets, most of the program is arc blocks.

Aerospace and medical work leans on G03 for non-circular profiles approximated by many small arcs. A cam lobe or a turbine blade root is often programmed as a chain of tangent arcs rather than a spline, because arcs are easier to verify and the control handles them deterministically. The tolerance on those parts is often ±0.005 mm or tighter, so center accuracy matters.

Automotive and EV parts use G03 on bearing bores, seal grooves, and hydraulic port geometry. These features usually carry a surface finish callout in the Ra 0.8–1.6 μm range, and the arc feed rate has to stay constant through the cut to hold it. A feed rate that ramps down in the arc leaves a visible witness mark.

Robotics and automation work uses arcs on gear teeth profiles, joint housings, and cable routing radii. The radii are often small, which pushes the control and the tool into the tight-corner regime where I/J/K and cutter comp have to be checked together.

  • 1
    Bores and groovesFull circles and partial arcs, usually with I/J/K.
  • 2
    Pocket corner filletsSmall radii that interact with cutter compensation.
  • 3
    Cam and blade profilesChains of tangent arcs, verified arc by arc.
  • 4
    Hydraulic portsSeal faces that need constant feed through the arc.
Procedure

Step by step: how to use G03 in a CNC program

Follow this order. Skipping a step is how arcs go wrong.

  • 1
    1. Confirm the plane and unitsStart the program with G21 (metric) or G20 (inch), then G17 for XY arcs on a mill or G18 for XZ arcs on a lathe. Check that the work offset is active and the tool length is set. A wrong plane is the first thing to rule out when G03 alarms.
  • 2
    2. Position at the arc start with G01Feed to the X/Y start point using G01 at a safe feed, typically 300–800 mm/min in aluminium. Do not use G00. The tool must land exactly on the arc start point, because the control measures I and J from there.
  • 3
    3. Choose I/J/K or RFor fillets under 180°, an R block is fine: G03 X50.0 Y25.0 R5.0. For slots, full bores, or arcs over 180°, use I/J/K: G03 X50.0 Y25.0 I2.5 J-2.5. A full circle uses the start point as the endpoint with a full set of offsets.
  • 4
    4. Write the G03 block with the endpoint and center dataG03 X_ Y_ I_ J_ F_. The endpoint is absolute in G90 or incremental in G91. I and J are always incremental from the start point to the center, regardless of G90 or G91. Get the signs right and keep the decimals to the control resolution.
  • 5
    5. Set a feed rate that suits the arcF is the tangential feed along the arc. Use the same feed you would use for a straight cut of the same radial depth. Reduce it by 20–30% on small radii under 5 mm to keep the chip load steady and avoid chatter on the inside of the curve.
  • 6
    6. Cancel G03 with G01 or G00After the last arc block, write G01 or G00 on the next move. G03 is modal. If you leave it active, the next block with an X or Y word becomes another arc and the tool goes where you did not plan.
  • 7
    7. Dry run and verify the first partRun the block with the tool clear of the part and watch the position display. On the first part, measure the arc form with a CMM or a radius gauge. If the radius is off, check the I/J signs before touching the feed or the tool offset.
Reference

I/J/K versus R and common controller notes

Use this table to pick the arc format and to sanity-check the block on your control.

ItemI/J/K formR form
Center definitionExplicit offsets from start pointControl back-calculates the center
Full 360° circleSupportedNot supported
Arc over 180°Supported directlyNeeds negative R
Hand editingMore numbers to verifyShorter, faster to type
Precision on tight radiiBetter, no center roundingSlight center rounding possible
Typical useBores, slots, camsCorner fillets, simple rounds
Sign errorsI and J direction from startR sign selects which arc
FAQs

G03 troubleshooting questions

Why does my control alarm on a G03 block that looks correct?

Check three things in order: the active plane, the start point, and the radius versus the chord length.

If the start point is not on the circle defined by your I/J/K or R, most controls alarm with a radius mismatch. If the arc is more than 180° and you used a positive R, the control picks the wrong arc and may over-travel. If the plane is wrong, the control reads the wrong two axes and the geometry makes no sense.

Can I use G03 to cut a full circle?

Yes, with I/J/K. Set the endpoint equal to the start point and give the full set of offsets to the center.

R cannot define a full circle because two identical points and one radius do not describe a unique arc. On most controls a full circle in R form either alarms or cuts nothing. Use I/J/K for bores and any 360° feature.

What is the difference between G02 and G03?

Direction only. G02 is clockwise, G03 is counterclockwise, viewed from the positive end of the axis perpendicular to the active plane.

Both take the same endpoint and center data. If an arc comes out mirrored, you have the direction wrong, not the geometry. Swap G02 and G03 and check the start point again.

Why does my arc cut a spiral instead of a circle?

The start point is off the true radius. The control interpolates from the actual position to the endpoint, and the mismatch shows up as a gradual change in radius.

Fix the lead-in move so the tool lands exactly on the arc start. If the error is small, it can come from rounding I/J/K to fewer decimals than the control resolution. Write the offsets to the full resolution of the machine.

Does G03 work the same on a lathe?

The command is the same but the active plane is usually G18 (XZ), and the X axis is a diameter on most lathes.

That means the I and K values are in radius terms even though X is programmed as a diameter. Check your control manual. Tool nose radius compensation also affects how the arc is cut, so verify the comp direction before the first part.

How tight a tolerance can G03 hold?

On a well-maintained machine with a ball screw in good condition, circular interpolation holds form within a few microns on small radii.

At GreatLight we machine to ±0.005 mm on production parts, with 100% inspection before shipment. The arc accuracy depends on the machine, the tool, and the feed rate as much as on the code. Keep the feed steady through the arc and the form follows.

Send us your arc-heavy part

Upload a STEP file and we will return a quotation and a free DFM analysis within 12 hours. Arcs, bores, and complex profiles are routine work for our 127-machine shop.

12-hour quote100% inspection±0.005 mm toleranceNo minimum order

Follow

More from GreatLight

We publish setup notes, tooling trials and inspection data from the factory floor.

FacebookTikTokYouTubeLinkedInInstagramThreadsPinterest

Trusted by engineers and manufacturers worldwide

Tesla Ford Motor Company BYD Auto Denso Magna International Boeing Airbus Medtronic KUKA FANUC