How do I determine what gcode flavor to use with a 3D printer?

How do I determine what gcode flavor to use with a 3D printer? I just picked up an Anet E10 and used the default Marlin flavor (Cura) and my first (and only print so far) came out great. What do the other flavors do? I haven’t been able to fine any helpful info on the internet but maybe I’m just looking up the wrong terms or something… Little help?

G-Code is G-Code, but that’s not the problem. It depends on the 3D printer manufacturer if they implimented all the code in the machines library, or just what they wanted from it. G-Code covers all devices that use motion control to do something. 3D printers don’t require a liquid coolant flow that milling machines or lathes do. Some commands turn on lights, some change tool bits, those are things not all 3D printers support, but some 3d printers that also machine metal do. If a 3D printer manufacturer lists a flavor of G-Code from a particular software vendor, then they have tailored the machines G-Code library for that manufacturers commands.

If your unsure about how its been tailored, just contact them. The answer might also be in their FAQ section.

So the other “flavors” are just different firmwares for your printer. The job of the firmware is to interpret the .gcode file generated by your slicing program. Different firmwares use gcode commands slightly differently so you have to slice for the correct flavor of firmware. Some are meant for specific control boards so I wouldn’t recommend changing firmwares without upgrading your control board. But Marlin is great, it’s pretty much standard for consumer printers. Plus most slicers don’t offer multiple flavors of gcode, although they’re not very different. For more information on how gcode commands differ between firmwares see the link below:

Gcode is supposed to be pretty standardized, but it’s been implemented differently based on the firmware that people are running. Some firmware is more adherent to standards than others. It’s basically just a command set for CNC machines…3D printing using the command set was kind of new so there’s a lot of interpretation that had to be done. As a result, some firmware doesn’t act the same on some commands. Some firmwares, to save space or to keep things simply implemented will omit certain commands or not implement the full featureset. Others will implement the featureset, but will act differently (smoothieware and the G28 command is a good example).

TL;DR If you have to ask, odds are strong that picking “Marlin” will work.

The gcode flavor to use depends on the firmware installed on the printer.

These days, if you get a new printer and it’s not obvious to you what firmware it is running, chances are pretty good that it’s Marlin or is compatible with Marlin. Quite a few of the cheapest printers ship with a hacked version of Marlin that does not follow the legal requirements of the license. The manufacturers are required to provide you with the source code corresponding to the firmware they shipped with the printer, but plenty of them sadly ignore that legal requirement.

Most firmware will display some identifying information on the printer’s display and/or web interface, depending on what the printer has. If there is no information, Marlin is an excellent first guess.


Here are some of the current possibilities beyond Marlin:

  • Many boards can run Klipper firmware with a host such as Raspberry Pi; for some systems it is the default firmware. The Klipper firmware is reported to work well when you select either the Marlin or Smoothie flavors of gcode.
  • Smoothie: The smoothie board and a few authorized variants (and some unauthorized clones) run smoothieware. If you have Smoothieware, you probably already know. The help forum for Smoothieware is Smoothie here on Maker Forums.
  • The Duet family of controllers, as well as several others, run RepRapFirmware.
  • Repetier firmware is available for some boards. You probably know if you have it, though.

Archaic but possibly still relevant

  • Teacup: Version of RepRapFirmware that has not been maintained for several years
  • Sailfish/Jetty: Firmware for makerbot printers that uses a non-gcode language, so it is not really a “gcode flavor”. This is what you may need if you have an older Makerbot that has not been updated to modern firmware.


There are gcode interpreters used primarily outside 3D printing, but which have occasionally been used for 3D printing. You may see references to LinuxCNC, Machinekit, Mach3, and Mach4 as gcode flavors, but if you acquire a 3D printer it won’t use any of those options. You definitely know already if you have one of those.