Create line drawings using familiar constructs from geometry and drafting. Initially designated for CNC and laser cutters, Maker.js can also help you programmatically draw shapes for any purpose. It runs in both Node.js and web browsers.

Learn more in the tutorial or API documentation .

Outline model to create a surrounding outline, with the option to bevel joints.

Expand paths to simulate a stroke thickness, with the option to bevel joints.

Combine models with boolean operations to get unions, intersections, or punches.

Easily add a curvature at the joint between any 2 paths, using a traditional or a dogbone fillet .

Traverse a model tree to reason over its children.

Models can be rotated or mirrored .

Other people's Models can be required the Node.js way, modified , and re-exported.

Drawings are a simple JavaScript object which can be serialized / deserialized conventionally with JSON. This also makes a drawing easy to clone .

Getting Started

Try it now

Visit the Maker.js Playground a sample app to edit and run JavaScript from your browser.

Each of the demos will also open in the playground so that you can explore and modify their code.

To use in a web browser

Download the browser-based version of Maker.js, then upload it to your website: https://maker.js.org/target/js/browser.maker.js

Add a script tag in your HTML:

< script src = "https://maker.js.org/target/js/browser.maker.js" type = "text/javascript" > </ script >

Note: You may also need additional libraries

In your JavaScript, use the require function to get a reference:

var makerjs = require( 'makerjs' );

To use via CDN

Add a script tag to your HTML:

< script src = "https://cdn.jsdelivr.net/npm/makerjs@0/target/js/browser.maker.js" > </ script >

To work with Bezier Curves, you will also need a copy of Bezier.js by Pomax

< script src = "https://cdn.jsdelivr.net/npm/bezier-js@2/bezier.js" > </ script >

To work with fonts, you will need both Bezier.js(above) and a copy of Opentype.js by Frederik De Bleser

< script src = "https://cdn.jsdelivr.net/npm/opentype.js@0/dist/opentype.js" > </ script >

In your JavaScript, use the require function to get a reference:

var makerjs = require( 'makerjs' );

To use in Node.js

To depend on Maker.js, run this from the command line:

npm install makerjs

In your JavaScript, use the require function to get a reference: