CNC.js vs Octoprint

I’ve been using CNC.js for a while now and it does most of what I want but it’s dev is pretty much halted at this point and docs for making my own mods are a bit thin for my skills.

After seeing @jamiek’s new plugin I decided to take a look at octoprint to see if it would be a good choice for my workflow. I already use it for my ender 3 and find it a wonderful solution for 3d printing.

There’s a lot to like about Octoprint with my LR but a few things are annoying enough that I hesitate to switch. I was hoping that someone that uses octoprint could address these and give an opinion as to their importance.

I don’t like that the Terminal and the Controls are on different screens . Sometimes I want to do a G0X1200Y1200F5000 and just go to a spot then use the controls to fine tune. I cant see any way to combine the 2 screens.

The controls page doesn’t show me coordinates. I realize they wouldn’t be in real time when running a job but I find them invaluable in job setup. I know I can do an M114 to get them or look at the LCD but it’s just nice to be able to see it on screen.

There doesn’t seem to be a way to to keep keyboard controls active. My wireless keyboard has a mousepad so I’m constantly leaving the webcam window that turns on keyboard control.

I’d appreciate any thoughts on these couple of items. Thanks!


I agree with most of these gripes. In addition, the UI is not great on small screens, where the button to load a gcode file is very close to the button to load and print. I haven’t hit the latter by mistake but I am always worried I’m going to.

There is a plugin called custom control editor, that can put buttons for commonly used commands on the control page. I have buttons for a bunch of things I tend to do, including M114 to get the current position. It would be nicer if it were always visible but it is better than switching tabs.

I haven’t tried to see if the ‘keyboard’ interface works on table or mobile, but I’m guessing not. Jogging through the increment buttons is pretty poor, which is why joysticks are so popular.

This doesn’t solve all your issues but it’s some of what makes it not terrible.


I tried installing cnc.js on a pi zero 2, and couldn’t get it too work. The main install fails and I found a image file that I put on the SD but then it started but it freeze my system.
Octoprint didn’t had these issues. Looks like cnc.js is pretty dead project atm. So if you got it running make backups… and probably you don’t want to update anything.
As for octoprint, the GRBL plugin is very nice. And there is a CNC g-code viewer plugin.
One issue is that M0 doesn’t really work and it complains about firmware safety issues that have nothing to do with a cnc, although I though the grbl plugin disables them but I am not sure as I already had done this manually.

I am very happy to have a btt touch screen and it rocks with the correct macro’s! If only the menu was easier to mod, or the V1 screen firmware would be easier to migrate to the v3 version.
So in my experience, the touchscreen is way more important than octoprint or cnc.js, although since I have not been able to test cnc.js I really cannot be sure about that.

1 Like

I just use @jeffeb3 's v1pi image for both cnc.js and octoprint so most of the hard stuff was already done just get the wifi setup and drop the image to an sd card and yes I keep a backup ISO just in case I need to restore it.

I really like my current workflow but neither package has quite the feature matrix that matches what I want. Guess I may need to learn some python.

1 Like

Octoprint probably has 100x the users and it shows. Foosel is a full time developer on octoprint. That means that it does have fewer bugs and fewer ways for it to get stuck. But it does have to ride the medium for it’s users and they are overwhelmingly printers.

There is a very extensive plugin system. That really helps when there are plugins that help you.

There is also a good api. So there are apps for Android and iphone. I wonder if there are ones for the desktop as well.

I think Marlin supports periodic position reporting too. So we may need to send some command to get it to periodically send the results of M114.

cncjs has a spinoff called Makerverse that some of the Maslow CNC users use. You might consider using that. I use octoprint on my 3d printer and on the MPCNC (both times I’ve used it) and I have used Makerverse on the Maslow. I considered using Makerverse for the MPCNC, but went with the pre-canned setup for starters since I only penned my first crown yesterday.

regarding octoprint, I don’t use it for local control of the MPCNC, I use the LCD in Marlin mode for that. Getting it from home to 1200, 1200 is a whole lot of turns though. Octoprint/Octopi has a lot of plugins you can add though, so maybe there is a way to make a terminal widget on the left pane on the same screen as your camera… I did find a sidebar macro button plugin that will allow you to have your favorite command in a button so you can watch the thing move while not having to go to the terminal to enter the command… press the button on the left sidebar. octoprint has tons of options. I found a bunch looking through just now that I want to try.

EDIT: I found one called consolidated tabs that lets you rearrange the tab contents and merge things together in the web interface.

EDIT2: there is a GRBL plugin so you may not even need to change your system firmware…


This solved 1 of my 2 issues , the plugin works well. Thanks for the tip!


I crammed cncjs into a docker image for the pi3. There’s a few of them on docker hub built for different pi versions. I found it works a little easier than getting it working in the native OS.

1 Like

Going further in the spirit of “I’ve been using cnc.js and looking over the fence at OctoPi but…”
Is there a list of what plugins/layout people are currently using in Octoprint for CNCing?
Would it be something to put in the docs?
@orob just found a few and @jamiek is actually writing some (Another Octoprint plugin: line tracer)
Maybe people could post the ones they’ve been actively using to make Octopi work for them? And a screenshot of their dashboard. Would be a good resource for brand new MPCNCers :slight_smile: too I think.


I would like to see that, if we had a pretty solid solution. But maybe just a topic in the forums for now. If lots of people agree on a rosey setup, then we can put it in the docs.

The docs are like the beaten path through the woods. If you want to venture off and walk around, fine. But the stuff in the docs needs to be pretty solid. The docs work for people who aren’t as adventurous as the forums.




If you’re using a grbl controller and have a PC connected OpenBuilds Control is a good solution. I’ve used it a few times and did like some of the built in functions.

I have both OctoPrint and CNCjs. I like CNCjs much more.

OctoPrint is resource-hungry and it works poorly on low-end ARM boards like Raspberry Pi 1B/2B. The python runtime is much slower than the nodejs V8 engine with JIT optimization on ARM chips. CNCjs runs really fast almost on any boards. I really appreciate the work you have done with CNCjs.

CNCjs is probably just a little difficult to install for non-IT people, especially for the node-gyp and serial port part.