microsoft/maker.js

πŸ“βš™ 2D vector line drawing and shape modeling for CNC and laser cutters.

TypeScript

2,038

1,669 commits

updated Oct 14, 2026

See the code

README

Maker.js

Your compass and straightedge, in JavaScript.

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.

2D Export formats: DXF, SVG, PDF, Jscad CAG object

3D Export formats: Jscad Script, Jscad CSG object, STL

Demos - Documentation

Sample animation

Core concepts

  • paths - The primitive elements of a drawing are lines, arcs, and circles.
  • models - Groups of paths to compose a shape.
  • layers - Organization of models, such as by color or tool type.
  • chains - A series of lines and arcs that connect end-to-end continuously.

Learn more in the tutorial or API documentation.

Features

Built-in models

Import formats

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 --save

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

var makerjs = require('makerjs');

Contributing

There are many ways to contribute to Maker.js:

Some of these may require a contributor agreement.

Credits

Maker.js depends on:


Maker.js is a Microsoft Garage project. The Microsoft Garage turns fresh ideas into real projects. Learn more at http://microsoft.com/garage.

arc
bezier
cad
circle
cnc
draw
drawing
dxf
fonts
geometry
laser
line
maker
openjscad
pdf
rectangle
svg
vector

microsoft/maker.js

πŸ“βš™ 2D vector line drawing and shape modeling for CNC and laser cutters.

TypeScript

2,038

1,669 commits

updated Oct 14, 2026

See the code

README

Maker.js

Your compass and straightedge, in JavaScript.

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.

2D Export formats: DXF, SVG, PDF, Jscad CAG object

3D Export formats: Jscad Script, Jscad CSG object, STL

Demos - Documentation

Sample animation

Core concepts

  • paths - The primitive elements of a drawing are lines, arcs, and circles.
  • models - Groups of paths to compose a shape.
  • layers - Organization of models, such as by color or tool type.
  • chains - A series of lines and arcs that connect end-to-end continuously.

Learn more in the tutorial or API documentation.

Features

Built-in models

Import formats

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 --save

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

var makerjs = require('makerjs');

Contributing

There are many ways to contribute to Maker.js:

Some of these may require a contributor agreement.

Credits

Maker.js depends on:


Maker.js is a Microsoft Garage project. The Microsoft Garage turns fresh ideas into real projects. Learn more at http://microsoft.com/garage.

arc
bezier
cad
circle
cnc
draw
drawing
dxf
fonts
geometry
laser
line
maker
openjscad
pdf
rectangle
svg
vector

Project health

Overall

8.4/10

Maintained

5/10

Code review

9/10
OpenSSF Scorecard

Significant stargazers

David Babenko-Sanders

450 followers Β· starred Jul 2017

LitoMore

622 followers Β· starred Jun 2025

Joe Beda

1,327 followers Β· starred Jan 2018

Trevor Fitzgerald

173 followers Β· starred Feb 2016