2.5D CAM
Turn an SVG or DXF drawing into G-code for a CNC router — pockets (offset or zig-zag), inside / outside profiles with tabs and lead-ins, drilling with pecks, engraving and V-carving — with a tool library fed from the router chip-load table, GRBL / LinuxCNC / Marlin output, a 3-D toolpath preview, a material-removal simulation and a time estimate.
Added · updated 28 October 2026
Works with
- G-code viewer and simulator CNC and 3D printingOpen in G-code viewer steps through the generated program
- G-code sender CNC and 3D printingOpen in G-code sender hands it the generated program to stream to the machine
- Sheet nesting for laser, CNC and plasma CNC and 3D printingits Open in 2.5D CAM sends a nested sheet here as the design to cut
- X-Carve setup and GRBL settings CNC and 3D printingits machine profiles set GRBL output, the rapid rate and a spindle speed in range, preselecting the one chosen there
How to use it
Load a drawing, list the operations, and the tool writes the G-code, draws every toolpath in 3-D, simulates what is left of the stock and estimates the run time. Everything runs in your browser; your drawing is never uploaded.
How to use it
-
Load a design: Open SVG / DXF (or drop the file on the view), or pick a sample — a name plaque, a bracket, a coaster. SVG sizes come from the file’s
width/heightandviewBox(Inkscape, Illustrator and Affinity files in mm or inches import at their real size; unitless files are read as 96 px per inch). DXF lines, arcs, polylines (with bulges), circles and splines (as their control polygon) are read; loose lines and arcs that meet are joined into closed shapes. The shapes are numbered on the little drawing in the Design panel. -
Set the stock: its thickness (Z0 is the top of the stock), where X0 Y0 is (the design’s lower-left corner, its centre, or the file’s own origin) and the safe height for moves between operations.
-
Add operations, in the order they run. Each picks a tool and the shapes it works on —
closed,open,all,circles, a layer (layer:outline: an SVG group’s id or Inkscape layer, a DXF layer) or shape numbers (#1,3).-
Pocket clears the inside of closed shapes (a shape inside another is an island) to a depth in stepdowns: offset rings from the middle outwards, or raster zig-zag lines at any angle followed by a finishing pass round the walls. Stepover is a fraction of the tool diameter.
-
Profile cuts round a shape: outside (the tool runs one radius outside, so the part keeps its size), inside (holes and cut-outs) or on the line. Tabs hold the part on the last passes — their number, width and height; the path lifts over each one. Lead in / out starts and ends the cut with a quarter arc or a straight line on the waste side, so the tool never plunges on the finished edge.
-
Drill plunges at each circle’s centre (or the centre of small closed shapes), nearest hole next, with optional pecks: expanded moves for GRBL and Marlin, a
G83/G81canned cycle for LinuxCNC. -
Engrave follows the lines (open or closed) at depth.
-
V-carve cuts closed shapes with a V-bit: the depth follows the width, so narrow parts are shallow and wide parts deep, up to the depth you set — beyond that the floor is cleared flat at that depth.
-
Climb or conventional: climb (the default) keeps the uncut material on the cutter’s right for a clockwise (
M3) spindle — clockwise round outside profiles, anticlockwise inside and in pockets. -
Start depth begins an operation below the surface (after an earlier pocket); Feed overrides the table. As text shows the whole list as editable text, the same text a share link carries.
-
-
Machine and tools: the material and spindle speed set every tool’s feed, plunge and stepdown from the router feeds chip-load table (feed = rpm × flutes × chip load; V-bits and ball noses at their effective width 2 mm deep). Add your own tools — flat, ball, V or drill, with diameter, flutes and angle; they stay in this browser. Choose GRBL, LinuxCNC or Marlin, mm (
G21) or inch (G20) output, and your machine’s rapid rate for the time estimate. Machine profile (an X-Carve, Shapeoko or generic GRBL router, as in the X-Carve and GRBL settings tool) sets GRBL output, its rapid rate and a spindle speed within its range. -
The view shows the shapes, each operation’s toolpath in its own colour, rapids (red dashes) and the simulation: a height map of the stock after every cut, each tool’s flat, ball or V profile stamped along its path, shaded by depth. Under it: the estimated time (the G-code viewer's own estimate), cutting and rapid distances, the cut area and depth, the volume removed, and warnings — a pocket the tool cannot enter, a cut into the spoilboard, a rapid move through material.
-
Download G-code (
.nc, or.gcodefor Marlin), copy it, or Open in G-code viewer to step through it line by line with the viewer’s playback. -
⛶ Full screen (or
F) gives the 3-D view the whole screen — the browser’s full screen where it is allowed, otherwise a full-window layer (iPhone); it is redrawn as the window changes, and ◫ Panels hides the side panel. Escape leaves.
Limits
-
2.5D only: every cut is at a constant depth per pass (V-carve rings each at their own depth). No 3-D surfacing, no adaptive / trochoidal clearing, no rest machining, no ramping entries (pockets plunge at the plunge feed — use a centre-cutting end mill), no cutter compensation in the controller.
-
Offsetting uses Clipper (round joins, 0.01 mm arc tolerance); curves are flattened to 0.01 mm. Text in SVG files must be converted to paths first; clip paths, masks and strokes' widths are ignored.
-
V-carve uses offset rings, an approximation of a true medial-axis V-carve: sharp inside corners come out slightly rounded and very thin parts can be skipped. Check it in the simulation.
-
Tool changes pause the program (
M0for GRBL and Marlin,Tn M6for LinuxCNC) — re-zero Z yourself. -
The simulation is a height map at about 0.15–0.5 mm per cell; it shows the result, not the forces. Feeds and speeds are starting points; the time estimate ignores acceleration (real jobs run 10–30 % longer).
-
Always check G-code in the viewer and air-cut it before cutting material.
Linking to an example
Share link copies a URL with your settings and operations — never your own drawing (a link opens on
the sample it names). Written by hand: /tools/cam/?example=plaque&dialect=linuxcnc&mat=mdf.
| Parameter | Meaning |
|---|---|
|
A preset (below) |
|
|
|
Operations as text, |
|
Material: |
|
Spindle speed |
|
|
|
Stock thickness and safe height (mm); |
|
Rapid rate for the time estimate, mm/min |
|
|
Tools in ops: em3 (1/8″ flat), em6 (1/4″ flat), em3m (3 mm O-flute), em6m (6 mm flat), bn3
(1/8″ ball), v60, v90 (V-bits), dr3 (3 mm drill).
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.