Chris Collins

Tools · fabrication

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

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

  1. 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 / height and viewBox (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.

  2. 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.

  3. 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 / G81 canned 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.

  4. 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.

  5. 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.

  6. Download G-code (.nc, or .gcode for Marlin), copy it, or Open in G-code viewer to step through it line by line with the viewer’s playback.

  7. ⛶ 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 (M0 for GRBL and Marlin, Tn M6 for 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

example

A preset (below)

sample

plaque, bracket, coaster

ops

Operations as text, ; between them: pocket tool=em6 depth=4 sd=2 so=0.45 sel=layer:pocket …

mat

Material: softwood, hardwood, plywood, mdf, acrylic, hdpe, pvc, aluminium, brass, foam

rpm

Spindle speed

dialect, units

grbl, linuxcnc, marlin; mm or inch

stock, safe, origin

Stock thickness and safe height (mm); lower-left, center, file

rapid

Rapid rate for the time estimate, mm/min

view

both (toolpaths and simulation) or paths

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).

Runs entirely in your browser; nothing you type leaves this page.