Shop note

What a post processor is, and where G-code fits

7 September 2026 · 5 min read

Post, post processor, G-code, NC file — mostly one thing said four ways. What the translator actually does, and which eight controllers WoodWright writes for.

Somebody tells you their software has a post for your machine and you nod, because asking what a post is at this point feels like admitting you have been nodding for years.

It is a translator. That is the whole idea, and the rest of this note is detail.

## The chain, start to finish

Your machine does not understand a cabinet. It understands go here, spin this fast, drop this deep. Something has to get from one to the other, and it goes in this order:

1. The design. A box with a back, two sides, a deck, a dado for the deck, a couple of shelf-pin holes. 2. The parts. The design implies them, so the app generates them — sides, backs, stretchers, dados, bores — and nests them onto sheets. 3. The toolpath. For each part on each sheet: which bit, how deep, in what order, along which line. Still just geometry and intent, not yet a file your machine can open. 4. The post processor. Turns that toolpath into text your particular control reads. 5. The controller. Reads the text and moves the gantry.

Step 4 is the post. Everything before it is the same no matter what machine you own; everything after it is your machine's business.

## So is a post the same thing as G-code?

Close enough that most people use the words interchangeably, and for four of the eight machines below they are the same thing exactly.

G-code is the text. It is the file — lines like G1 X412.7 F17780, meaning cut in a straight line to X 412.7 at that feed. NC file, NC program, and "the code" all mean this too.

The post processor is the thing that writes it. If somebody asks whether your software has "a post for a ShopBot," they are asking whether it can produce the file a ShopBot reads.

The two words get confused because the answer to both questions is usually yes or no together. If there is no post for your machine, there is no G-code for your machine.

## Why every machine needs its own

They do not all speak the same dialect. A tool change on a Mach3 control is T1 M6 followed by G43 H1; a Masso wants T1 M06 and no G43, because Masso keeps its tool geometry in its own table.

Send it the Mach version and the offset gets applied twice.

GRBL errors on G91.1 and never gets to see it. ShopBot does not read G-code at all — it reads OpenSBP, where a cut is M2 and a jog is J2.

Same cut. Same bit. Four different files. That is why "does it have a post for my machine" is a real question and not a technicality.

## What WoodWright writes

the four that read G-code
  Mach3 / Mach4        .tap    ISO G-code
  GRBL 1.1             .nc     G-code, pecks spelled out, no canned cycles
  LinuxCNC             .ngc    RS274/NGC
  Masso G3             .nc     G-code, tool geometry on the control

the four that read their own dialect
  SCM · Xilog Plus     .xxl
  ShopBot PRS          .sbp    OpenSBP
  Biesse · bSolid      .cix
  Homag / Weeke        .mpr    woodWOP
eight controllers, and what each one reads

Tick yours in Sheets ▸ Machines. The public build starts with none ticked, so nothing posts until you say which controller is reading it.

Programs then save one per sheet, named WW-<room>-<material>-S01.<ext>. A SETUP.txt saves beside each one with the origin corner, the face that is up, the Z reference, and every tool with its T number — so the changer, or the hand, can be checked against paper before anything spins.

## The part you should hear from us

There is one toolpath planner behind all eight. It writes SCM Xilog, because that is the machine it was decoded against: three real jobs' programs off the shop's own N100, every program re-parsed byte-identical and run through an independent dry-run simulator.

Every other post is a translation of that simulated program — move for move, bore for bore. The translated text is then read back by its own parser and compared against the source before a machine card is allowed to offer it.

And then the honest part: no WoodWright program has cut on a machine yet. A simulation is not a router.

The app will ask you to tick that you have read it before it saves a program on a new machine, and it asks for the first one on scrap, at reduced feed, with a hand on the stop.

## If you would rather not use a post at all

You do not have to. WoodWright also exports a layered DXF for whatever CAM you already run — VCarve, Aspire, Fusion, EnRoute, or your machine's own software — and that is the proven path today.

It is ASCII DXF, R2010, in inches, and every layer name is a tool selector: OUTLINE is the through cut, POCKET_0.385 is a dado pocketed to 0.385″, BORE_0.197 is a 5 mm drill centre.

One thing to know before you open it: the DXF is not the nest. It is every cut part of that material, each in its own frame, laid out in tidy rows for your CAM to nest and toolpath itself.

The layers and the G-code, line by line, including a real generated program, are on the CNC page.

## Questions

What is a post processor?
A post processor is the translator between the toolpath your design software works out and the text file your particular CNC control can read. The toolpath is the same whatever machine you own; the post is the step that turns it into a file a Mach3, a ShopBot or a Biesse will actually open.
Is G-code the same thing as a post?
Near enough, in ordinary conversation. G-code is the text file the machine reads; the post processor is the thing that writes it — so if there is no post for your machine, there is no G-code for your machine either.
Does WoodWright output G-code, or do I need a separate CAM program?
WoodWright writes the machine program itself for eight controllers, straight from the nest: G-code for Mach3/4, GRBL, LinuxCNC and Masso, and each of their own dialects for SCM Xilog, ShopBot, Biesse and Homag. Every program is simulated and read back before the app will offer it, and none has cut on a machine yet, so the app asks you to run the first one on scrap. If you would rather keep the CAM you already run, export a layered DXF instead — that is the proven path.
Which CNC machines can WoodWright write a program for?
Eight controllers today: SCM Xilog Plus, ShopBot, Biesse bSolid, Homag/Weeke woodWOP, and generic routers running Mach3/4, GRBL, LinuxCNC or Masso G3. If yours is not on that list, Sheets ▸ Machines has a tell us about your machine form, and a sample program your CAM writes today helps most — a post is built by reading what the machine already eats.

Next: How to measure a kitchen for cabinets · How true-shape nesting saves a sheet