CNCjs is a free, open-source, web-based interface for CNC machines running Grbl, Marlin, Smoothieware, or TinyG. Learn features and how it works.
CNCjs is a free, open-source, web-based interface for controlling CNC machines running Grbl, Marlin, Smoothieware, TinyG, or g2core firmware. It runs as a lightweight Node.js server — commonly on a Raspberry Pi — and streams G-code to the machine's controller board over serial, Bluetooth, or WiFi, while exposing a full control dashboard through any web browser.
As a community-maintained open-source project distributed under the MIT license, CNCjs has no corporate ownership, funding history, or headquarters — it is developed and supported by contributors via its GitHub repository rather than a commercial company.
CNCjs provides 3D toolpath visualization, a G-code sender/console, manual jogging controls, workspace and coordinate management, macro support, and widgets for probing, spindle/laser control, and firmware-specific settings.
Recent releases have added support for the CNC xPro V5 controller and FluidNC firmware on ESP32 (enabling WiFi-based control), along with UART reliability improvements and new jog-cancel commands, while companion projects like cncjs-shopfloor-tablet and cncjs-controller extend it to tablet-optimized shop-floor UIs and custom integrations.
CNCjs is entirely free and open source under the MIT license, with no paid tiers, subscriptions, or commercial edition. It can be freely used, modified, and redistributed, including in commercial hardware products, without royalty fees.
The only cost to users is the hardware it runs on (typically an inexpensive Raspberry Pi or an existing laptop) and the CNC controller board itself; the software has no licensing cost.
Yes, CNCjs is completely free and open source under the MIT license, with no paid tiers or commercial version.
CNCjs supports Grbl, Marlin, Smoothieware, TinyG, and g2core firmware, and has added official support for FluidNC running on ESP32 controllers.
Yes, CNCjs is commonly installed on a Raspberry Pi, which then acts as a lightweight server that can be controlled remotely from a browser on any device on the same network.
No, CNCjs runs locally on your network; it does not require an internet connection to control a CNC machine, only a local network connection between the controlling device and the server.
Both are free, open-source G-code senders, but CNCjs is browser-based and network-accessible (allowing remote control from any device), while Universal Gcode Sender (UGS) is a native desktop application.
CNCjs is maintained by an open-source community of contributors through its GitHub repository (github.com/cncjs/cncjs) rather than a commercial company.