The Xometry app works best with JavaScript enabled!
Our SolutionsIndustriesResourcesXometry EnterpriseHow Xometry WorksBecome a Supplier
Additive Manufacturing

3D Printing Service

Metal 3D Printing Service

Solutions For Every Industry
ResourcesMachining DesignCNC Programming: Definition, Types, and Software Used
Engineer using CAD software. Image credit:

CNC Programming: Definition, Types, and Software Used

Learn more about this process and how it's used in manufacturing.

Xomety X
By Team Xometry
October 24, 2022
 10 min read
Mark Osterman, VP of Technical Sales and Pre-Sales Engineering
June 7, 2024
 3 min read
8 Best OBJ to STL Converters
May 24, 2024
 17 min read

CNC (computer numerical control) programming refers to the process of converting the 3D model of a design into a list of machine-readable instructions. These instructions are then loaded into a CNC machine controller into a CNC machine to automatically produce a part using subtractive techniques. CNC programming is a critical part of modern manufacturing. Most machining is now done on CNC machines instead of older manually operated machines. This is because CNC machines offer improved quality and productivity over manual machines. 

CNC machine programming can be done by hand on a local machine console or, more commonly, with the aid of a CAM (computer-aided manufacturing) software package. CAM software significantly reduces the difficulty of programming the required machining steps on a complex part. This article will describe CNC machine programming, explore how it works, discuss the different types of CNC programming, and highlight the best CNC programming software. 

What is CNC Programming?

CNC programming refers to converting a 3D CAD (computer-aided design) model into a set of machine-readable instructions that include: which cutting tools to use, the feed rate, and where to move the tool to create the final part. CNC programming is the process of creating instructions for cutting tools. CNC programmers use CAM software to create CNC programs, or they can manually input the CNC code for simple parts. For more information, see our guide on All About CNC Machining.

A typical local CNC machining programming console is shown in Figure 1 below:

Slide 1 of 1
cnc machine desktop programming
cnc machine desktop programming
cnc machine desktop programming

CNC machine desktop programming.

Image Credit:

How Does CNC Programming Work?

CNC programming takes three-dimensional information about a planned part's profile and size and turns it into line-by-line instructions that the CNC machine can use to cut away unwanted material and create the desired shape. In most cases, CNC programming requires access to the 3D model of the desired part to use with CAM software. The CNC programmer will use the CAM software to create tool paths based on the part geometry and features such as holes, slots, or complex surface contours. The CAM software will then generate the CNC program, often referred to as G-code. This G-code is then fed into the CNC machine. Once the cycle start button is pressed on the machine, the instructions laid out in the code are followed until the part is complete.

What Are the Codes Used for CNC Programming?

Task-specific CNC programming codes, identified by different letters of the alphabet, tell the machine tool when, where, and how to remove material from the raw stock. These codes are collectively known as "G-codes," even though, technically, the "g" refers only to the "geometry" of the part. The general term "G-code" is used to encompass all the different types of coded instructions required to successfully machine a part. Some of the most common CNC code types are listed below:

  1. D-Codes: These refer to the CNC machine's tool offset which can either be the distance from the center line of a tool to its cutting edge or how far the tool sticks out from the tool holder.
  2. F-Codes: These are feed rate codes. They represent the varying speeds at which the tool is required to move while cutting.
  3. G-Codes:  The “G in  G-codes'' refers to “geometry.” G-codes are used to instruct the machine where to start moving from, where to stop, and how to move between these two points.
  4. M-Codes: These refer to miscellaneous functions such as coolant and spindle control. Basically, M-codes refer to non-geometric actions. 
  5. N-Codes: N-codes are identify lines or blocks of machine code. The line labels help the CNC programmer organize and follow manually written CNC code. Line numbers are often not required for CAM-generated code.
  6. S-Codes: These are speed codes, and represent the desired tool spindle speeds at different times during the machining process.
  7. T-Codes: These identify the tool to be used when machining a specific feature on the workpiece.

How Do You Do CNC Coding?

To write CNC code, you must first be familiar with the general principles of CNC machining, as well as CAD/CAM software and the G-code machine instruction language. Understanding which CNC tools are used to make which features and how a given material behaves during cutting are keys to optimizing the best tool path and feed/speed settings during automated operation. It is also important to understand the CAM software, how it works and what is required from the programmer. The general CNC coding steps are as follows:

  1. Export 3D Model: The CAD model must first be exported into CAM software. Some CAD systems have integrated CAM capabilities, so no export is required. 
  2. Create Tool Paths: Convert the CAD model into tool paths. This can either be done manually, which is better suited to simple parts, or by letting the CAM software generate the tool paths automatically. Tool selection must be based on the required part features and the available tooling.
  3. Verify Tool Paths: Next, it is important to verify that the tool paths are correct and that there is no risk of the machine crashing into the workpiece or fixtures. This step can be done manually, automatically (by simulating the tool paths in the CAM software),  or using third-party tool path verification software.
  4. Download Code to CNC Machine: The G-code must then be input into the machine. This process can be done using a portable storage device like a flash drive, or the code can be downloaded directly to the machine if it is connected to the local network. 

What is the Best CNC Programming Software?

The best CNC programming software for a job depends on the application. Advanced softwares offer a multitude of settings and analysis that can be used to finely optimize the machining process, while simpler software only exposes the user to the most critical settings. Listed below are some of the best CNC programming software packages currently available:

  1. Mastercam:  While Mastercam does have some CAD functionality, it is primarily a CAM package that is both powerful and easy to use. Mastercam was one of the first CAM programs on the market and has been around for over 30 years. Mastercam is a popular choice for CNC programmers.
  2. Vectric: Vectric software products are designed specifically for CNC routing and engraving applications. Vectric offers a range of excellent software packages, including Aspire, VCarve, and Cut2D.
  3. Meshcam: Meshcam is a relatively simple CAM software package. As such, it is ideally suited to beginners. However, seasoned experts can also benefit from its speed for programming simple parts.
  4. Fusion 360®: Fusion 360® is a CAD/CAM hybrid program. This means that the CAD model can be created and then the CNC code can be generated, all in one software package. Fusion 360 is both easy to use and has advanced features for more expert users.
  5. Solidworks®: Solidworks® is another CAD/CAM hybrid. However, Solidworks® CAM  is an add-on module and, as such, can be expensive. It is, however, very powerful and has a wide range of features.

What Are the Types of CNC Programming?

The three main types of CNC programming are described in detail below:

1. Manual CNC Programming

The manual approach is the most basic form of CNC programming. It involves manually inputting commands into a control console that is typically attached to the CNC machine. Manual CNC programming is a good option for simple parts. However, it can be a time-consuming and error-prone method of communicating instructions to the CNC machine. Because of this, manual CNC programming is not suitable for complex parts. In manual CNC programming, the programmer must have a good understanding of the CNC machine and how it works. Unlike more advanced CAM software, manual CNC programming does not provide any sort of visualization or warnings of possible errors in the code that can result in the CNC machine or tooling being damaged.

2. Computer-Aided Manufacturing (CAM)

CAM software is used to create CNC programs for both simple and complex parts. It is the most commonly used method of CNC programming. CAM software is faster and more accurate than manual CNC programming. It provides the programmer with a visual representation of the tool paths which helps them spot any potential issues such as the tool crashing into the workholding fixture. CAM software gives the user more flexibility to translate the program from one type of CNC machine to another without having to rewrite the entire program, as would have to be done when creating manual G-Code. Advanced CAM software packages can be expensive, but the investment is usually worth it for businesses that rely on CNC machines to produce complex components.

3. Conversational Programming

Conversational programming involves using a CNC machine that has a built-in conversational programming interface. This interface allows the user to input commands in plain English instead of in G-code, as is the case with normal manual programming. Some systems will ask the operator a number of guided questions to fully define the job. Conversational programming is used for simple CNC machining operations. It is a quick and easy alternative to manual programming. Conversational programming is limited to simple CNC operations.

Who is Responsible for CNC Programming?

The CNC programmer is responsible for creating CNC programs. The CNC programmer can either write the CNC program manually or use CNC programming software to create the CNC program. In many cases, the CNC programmer will also operate the machine.

Are CNC Programmers in High Demand?

Yes, CNC programmers are in high demand. The job market for CNC programmers is projected to continue growing in the near future.

How Long Does Learning CNC Programming Take?

The basics of CNC programming can be learned in a matter of weeks, depending on the individual's learning ability and previous experience. Some employers may require more advanced certifications, like those offered by technical colleges or universities. It may take up to five years to earn advanced vocational training certificates.

Is CNC Programming Easy?

Yes, basic CNC programming principles are relatively easy to learn. However, more advanced CNC programming techniques require an understanding of many topics, including: machining in general; which tools are best suited to creating specific part features; and how various materials react when being machined. However, with sufficient motivation, CNC programming can be learned as easily as any other advanced topic. 

Does Xometry Provide CNC Programming?

Xometry employs a team of CNC experts who can write programs for CNC machining of parts on our machines. Contact us today to learn more about our CNC machining services.


This article presented CNC programming, explained what it is, and discussed how it is used in manufacturing. To learn more about CNC programming, contact a Xometry representative.

Xometry provides a wide range of manufacturing capabilities, including CNC machining and other value-added services for all of your prototyping and production needs. Visit our website to learn more or to request a free, no-obligation quote.

  1. MASTERCAM is a registered trademark of CNC Software, LLC.
  2. Solidworks® is a registered trademark of Dassault Systèmes SolidWorks Corp.
  4. MESHCAM is a trademark of Demokritos Frangos.
  5. FUSION 360® is a trademark of Autodesk, Inc.


The content appearing on this webpage is for informational purposes only. Xometry makes no representation or warranty of any kind, be it expressed or implied, as to the accuracy, completeness, or validity of the information. Any performance parameters, geometric tolerances, specific design features, quality and types of materials, or processes should not be inferred to represent what will be delivered by third-party suppliers or manufacturers through Xometry’s network. Buyers seeking quotes for parts are responsible for defining the specific requirements for those parts. Please refer to our terms and conditions for more information.

Xomety X
Team Xometry
This article was written by various Xometry contributors. Xometry is a leading resource on manufacturing with CNC machining, sheet metal fabrication, 3D printing, injection molding, urethane casting, and more.