A post processor is the translator between your CAM software and your CNC machine. The CAM software generates generic toolpaths. The post processor converts those toolpaths into the specific G-code format your machine controller understands. Without the correct post processor, the G-code may have the wrong format, missing commands, or incorrect syntax that causes the machine to alarm out or crash.
I learned this the hard way when I ran a post from Fusion 360 configured for a Haas mill on my GRBL-based router. The program used G-code formats that GRBL does not support and the controller stopped after three lines. I spent an hour checking the wiring and configuration before I finally realized the issue was simply the post processor.
This guide covers what post processors do, how to select the right one, how to customize common settings, and how to troubleshoot post processor problems.
What a Post Processor Does
A post processor takes the generic toolpath data from the CAM software and converts it into machine-specific G-code. The toolpath data includes the coordinates of each move, the feed rate, the spindle speed, and the tool number. The post processor formats this data according to the rules of the target controller. Without the correct post processor, the G-code will not run correctly on your machine.
The post processor handles several critical translations. It converts the CAM software’s internal unit system to inches or millimeters. It formats coordinate values with the correct number of decimal places. It outputs the correct G-code words for each operation. It inserts the required start and end blocks using proper safety codes. It formats the tool change sequence for the machine’s tool changer if one is installed.
The start block is the most critical part of the post processor output. A typical start block includes safety lines that set the machine to a known state. The post processor outputs G90 for absolute positioning, G94 for feed rate per minute, G17 for XY plane selection, G21 for metric or G20 for inches, and G54 for work offset selection. These commands ensure the machine behaves predictably regardless of its previous state. A missing start block can cause the machine to use the wrong coordinate mode or unit system from a previous program.
Start and End Blocks
The start block is the most critical part of post processor output. It includes safety lines that set the machine to a known state: G90 (absolute), G94 (feed per minute), G17 (XY plane), G21 (metric), and G54 (work offset). A missing start block can cause the machine to use wrong settings from a previous program.
The end block outputs commands to stop the spindle (M5), turn off coolant (M9), and position for safe tool change (G28 or G53). A missing end block leaves the spindle running when the program finishes — a safety hazard.
Post Processor Output Example
Here is the same toolpath output by two different post processors. The generic output is clean and universal. The GRBL output removes commands that GRBL does not support.
Generic Fanuc output: GRBL output:
O0001 (Program start)
G90 G94 G17 G21 G54 G90 G94 G17 G21
M3 S12000 M3 S12000
G0 X0 Y0 Z5 G0 X0 Y0 Z5
G1 Z-1 F100 G1 Z-1 F100
G1 X10 Y10 F500 G1 X10 Y10 F500
G0 Z5 G0 Z5
M5 M5
M30 M30
The GRBL output omits the program number O0001 because GRBL does not use program numbers. Both programs produce the same motion. The difference is that the GRBL version will run on a wider range of controllers because it uses only the most basic G-code commands.
Selecting the Right Post Processor by CAM Software
The process of selecting a post processor depends on which CAM software you use. Each CAM package organizes post processors differently.
Fusion 360 Post Processors
Fusion 360 includes post processors organized by machine brand. Go to the CAM workspace, Setup tab, and select Post Processor. The library is searchable by machine name or controller type. To select a post processor, open the CAM workspace, go to the Setup tab, and select the Post Processor option. The library is searchable by machine name or controller type.
Fusion 360 allows you to customize post processor settings through a configuration dialog. The dialog lists all available options for the selected post processor. Common options include the unit system, file extension, and program number format. The configuration is saved with the CAM setup so different jobs can use different post processors.
Fusion 360 also supports custom post processors written in JavaScript. The post processor files have a .cps extension and can be edited in any text editor. Custom post processors are useful when the standard options do not produce the exact output your machine requires.
VCarve and Aspire Post Processors
VCarve and Aspire include the largest post processor library with over 500 entries. Select the post processor when saving the toolpath — after calculating, click Save Toolpath and choose your machine from the list.
VCarve post processors are configured through the Post Processor Configuration dialog. The dialog shows the available options for the selected post. Common options include the file extension, line numbering, and header format.
Fusion 360 vs VCarve Post Processor Features
Compare the key differences between the two platforms:
| Feature | Fusion 360 | VCarve/Aspire |
|---|---|---|
| Post processor count | 200+ | 500+ |
| Custom post language | JavaScript | Custom scripting |
| Configuration dialog | Yes | Yes |
| User-defined templates | Yes | Yes |
| Tool list output | Yes | Yes |
| Fixture offset support | G54-G59 | G54-G59 |
Selecting by Controller Type
GRBL, Mach4, Acorn, and LinuxCNC
Most CAM software includes a library of post processors for common machine and controller combinations. Fusion 360 includes over 200 post processors. VCarve includes over 500. The correct post processor is usually listed by controller name or machine brand.
For GRBL-based machines, use the GRBL post processor or the generic Arduino post processor. GRBL uses a simplified G-code format that omits some commands that other controllers require. The GRBL post processor handles these differences automatically.
For Mach4 machines, use the Mach4 post processor or the Mach3 post processor for older setups. The Mach4 post processor outputs G-code with the correct format for Mach4’s interpreter. Some Mach4 installations use custom macros that require a specialized post processor.
For Centroid Acorn, use the Centroid post processor or the Mach3 post processor with Acorn-specific modifications. The Acorn interprets standard G-code but has specific requirements for probing cycles and tool change sequences.
For LinuxCNC, use the LinuxCNC post processor. LinuxCNC uses standard G-code but requires specific formatting for tool change sequences and axis configurations. The LinuxCNC post processor handles these requirements.
Generic Post Processors
If your specific controller is not listed, start with a generic post processor for the closest match. A generic Fanuc post processor works for most industrial controllers. A generic GRBL post processor works for most Arduino-based controllers. Test the output on a simple program before running a complex job.
Customizing Post Processor Settings
Most post processors have configurable options that adjust the output without modifying the underlying code. Common options include the unit system, coordinate format, file extension, and program number format. These options are accessible through the CAM software’s post processor configuration dialog.
The unit system option selects between inches and millimeters. Set this to match your machine’s native unit system. Running a metric program on an inch-configured machine multiplies all coordinates by 25.4. The resulting cut will be the wrong size by a factor of 25.4.
The coordinate format option controls the number of decimal places in the output. Most controllers work with three decimal places for inches and three decimal places for millimeters. Fewer decimal places reduces file size. More decimal places increases precision beyond what the machine can achieve.
Key Configuration Options
The unit system option selects inches or millimeters. Set to match your machine’s native unit system — running metric on an inch machine multiplies all coordinates by 25.4. The coordinate format option controls decimal places — most controllers use 3 decimal places. The file extension option sets output extension. Common: .nc, .tap, .gcode, .txt. GRBL-based machines typically use .nc or .gcode. Mach4 uses .nc. LinuxCNC uses .ngc. Set the extension to match what your controller expects.
Common Post Processor Options
Configure these options for your specific machine:
| Option | Typical Value | Notes |
|---|---|---|
| Units | Inches or mm | Match machine native units |
| Decimal places | 3 (inch) or 3 (mm) | 4 decimal places for high-res machines |
| File extension | .nc or .gcode | Set to match controller |
| Program number | O0001 | Required for some industrial controllers |
| Use G28 for retract | Yes | Safer than G53 for most machines |
| Output tool list | No | Useful for setup documentation |
| Use coolant M codes | Yes | M8 for flood, M7 for mist |
Troubleshooting Post Processor Problems
The most common post processor problem is incorrect G-code format. The controller may not recognize certain G-code words or may expect them in a different order. The symptom is an alarm or error message on the controller when the program starts.
Check the first few lines of the output. The start block should contain basic setup commands. If the controller alarms on the first line, the post processor is outputting a command the controller does not support. Try a different post processor or a generic version.
The second most common problem is incorrect unit configuration. If the cut comes out 25.4 times larger or smaller than expected, the post processor is outputting the wrong unit system. Check the unit option in the post processor configuration. This is usually the first option listed.
Missing decimal points cause problems on some controllers. GRBL requires decimal points on all coordinate values. A value of X10 without a decimal point is interpreted as 0.0010 inches by GRBL. The post processor should output X10.0 instead. Check the decimal formatting option in the post configuration.
Feed rate format issues cause the machine to move at unexpected speeds. Some controllers expect feed rates in inches per minute. Others expect millimeters per minute. The post processor must output feed rates in the units the controller expects. Check the G94 or G95 setting in the post processor.
Probing cycle problems occur when the post processor outputs probing commands in a format the controller does not recognize. Centroid Acorn and Mach4 have specific probing cycle formats. GRBL does not support probing cycles at all. If probing does not work, check the post processor’s probing output format.
Modifying Post Processor Code
When standard options are not enough, modify the post processor code directly. Post processors are plain text files you can edit with any text editor. Fusion 360 uses JavaScript .cps files. VCarve uses .pp files with custom scripting. Post processors are plain text files that you can edit with any text editor. Fusion 360 uses JavaScript .cps files. VCarve uses .pp files with a custom scripting language.
Common modifications include adding a custom header with job information, changing the arc output from IJK to R format, adding or removing safety lines in the header, adjusting the feed rate formatting, and adding custom M-code commands for machine-specific functions.
Always make a backup of the original post processor file before editing. Name the modified version something descriptive like my-machine-post.cps so you can identify it later. Test the modified post processor on a simple program before running production work.
Arc Output Format Settings
Arc output is one of the most commonly modified settings. CNC controllers support two formats for arc centers: IJK incremental and R radius. GRBL supports both. The IJK format is more precise for full circles. The R format is simpler.
The IJK format specifies the arc center relative to the arc start point. The R format specifies the arc radius directly. The IJK format is more precise for full circles because an R value cannot distinguish between a 180-degree arc and a 360-degree arc. For most hobby work, the R format is simpler and equally effective.
If your controller supports both formats, use IJK for finishing passes where precision matters and R for roughing passes. Some post processors have an option to choose the arc format. Others require editing the post processor code to change the format.
Troubleshooting Reference
Quick Symptom Table
| Symptom | Likely Cause | Fix |
|---|---|---|
| Controller alarms at start | Wrong G-code format | Select correct post processor |
| Cut is wrong size by 25.4x | Unit mismatch | Set inches/mm correctly |
| Coordinates missing decimals | Decimal format wrong | Enable decimal output |
| Feed rate too fast or slow | Feed unit mismatch | Check G94/G95 setting |
| Spindle does not start | Wrong spindle M-code | Check M3/M4/M5 output |
| Tool change fails | Wrong tool change format | Set post for machine tool changer |
| Probing fails | Probing format unsupported | Use generic probing cycle |
Common Issues
Incorrect G-code format is the most common problem. Check the first few lines of output. If the controller alarms on the first line, the post processor outputs a command the controller does not support. Try a different post processor or generic version.
Incorrect unit configuration causes cuts 25.4x wrong. Check the unit option in post processor configuration — this is usually the first option listed.
Missing decimal points cause problems on GRBL — a value of X10 without a decimal is interpreted as 0.0010 inches. The post processor should output X10.0 instead.
Testing a New Post Processor
Test Procedure
Always test a new or modified post processor on a simple program before running production work. Create a test program that moves each axis independently, runs the spindle at various speeds, and performs a tool change. Run the program with the workpiece raised above the cutter to verify the motion is correct. A five-minute test prevents hours of cleanup and tool replacement.
Check the output file manually before loading it into the controller. Open the file in a text editor and verify the first few lines contain the expected setup commands. Look for obvious errors like missing decimal points or incorrect unit values. The manual check catches most common post processor problems before they reach the machine and cause expensive damage.
Run the test program with the feed rate override set to 10 percent and your hand on the stop button. Watch the axis movements carefully. If the machine moves in the wrong direction or at the wrong speed, stop the program immediately and fix the post processor before proceeding.
Finally, verify the file size is reasonable. A post processor that outputs excessive comments or unnecessary lines can produce files that are many times larger than needed. The extra lines do not affect cutting quality but they slow down the controller’s file processing on machines with limited memory.
Verification Steps
Check the output file manually in a text editor before loading it. Verify the first few lines contain expected setup commands. Look for missing decimal points or incorrect units. Run the test program with feed rate override at 10% and hand on the stop button. Watch axis movements carefully. Verify the file size is reasonable — excessive comments slow down controllers with limited memory. Verify the tool change sequence works correctly for machines with automatic tool changers.
A properly configured post processor saves time and prevents frustrating errors on every job you run. Investing time in setting up the correct post processor for your machine pays off every time you save a toolpath. The configuration takes an hour once and saves that hour on every subsequent job. If you are unsure which post processor to use, start with the generic version for your controller type and test it on a simple program. You can refine the settings as you discover what your machine needs.
For more information on CNC controllers and G-code, see our CNC Controller Comparison Guide and our G-Code for Beginners Guide. For CAM software help, see our CNC Router Software Comparison.

How to Tram a CNC Spindle: A Beginner's Guide to Perfect Head AlignmentJune 27, 2026 · Guides
CNC Part Finishing and Deburring Guide: Methods, Tools, and Best PracticesJune 27, 2026 · Guides
CNC Toolpath Troubleshooting Guide: Fix Bad Cuts and Improve Surface FinishJune 27, 2026 · Guides
CNC Machining for PCB Milling: Complete Guide to Circuit BoardsJune 27, 2026 · Guides