Skip to main content
Vecaria

SVG to G-code Generator

Local

Convert SVG outlines to laser and engraving G-code — open paths stay open, with tabs, multi-pass depth and G54–G59 offsets; free in your browser, no upload.

Drag files here, or click to browse

Supports SVG

Choose file
Sample has one open path (kept open) and one closed rectangle

Tool library

Presets:

G54–G59 only calls the selected work coordinate system (WCS) in the output header — geometry values are never rewritten. The origin is determined by your machine's coordinate system (set by tool touching / work offset setup).

Per-path tool parameters are written into the G-code (F feed / S speed); stored in this browser (last-used + named presets) and shared with the other G-code generator tool.

The origin is determined by your machine's coordinate system: G54–G59 only calls the selected work coordinate system (WCS) in the output header — geometry values are never rewritten. Set up work offsets on the controller before cutting.

Current Cut Z is above the material surface — the tool will not engage (and Pass depth has no effect).

Open paths are kept open (never force-closed). Tabs lift the tool over small bridges; pass depth splits the cut into multiple depth layers. Finer sampling → larger file.

What is it? SVG to G-code converts SVG outlines into G-code for laser cutting and engraving, sampling Bézier curves into toolpath moves. Open paths are kept open (never force-closed), with tab bridges, multi-pass depth, a tool library and work coordinates G54–G59; after converting, the toolpath previews in the page (solid = cut, dashed = rapid). Output is standard G-code (G21 mm / G90 absolute / M3·M5 laser on/off) that common controllers such as GRBL and Marlin read directly — always dry-run above the material first. Free, no sign-up, generated locally in your browser.

TL;DR: SVG to G-code turns SVG outlines into laser and engraving toolpaths: drop the file, set pass depth, tabs and tools, preview the path on the page (solid = cut, dashed = rapid), then download standard G-code for GRBL or Marlin. Free, no sign-in, nothing uploaded.

How to use

  1. Drop an SVG file that contains <path> elements (run Object to Path in Inkscape/Illustrator for shapes).
  2. Set sampling, feed, Z heights, tabs and pass depth as needed; optionally maintain a tool library (name/diameter/feed/rpm — shared across the CNC converter pages in this browser) and assign tools per path.
  3. Pick the work coordinate system (G54–G59, default G54), then click "Convert & download" — the .gcode file saves automatically, with an in-page toolpath preview.

FAQ

How are curves handled?

Béziers are sampled into short segments at the chosen tolerance.

Is the SVG size the output size in mm?

Output millimeters follow SVG unit semantics: if the root width and viewBox are both present, one user unit = width(px) / viewBox-width; otherwise 1 user unit = 1 px = 25.4/96 mm.

Are open paths force-closed?

No; combine with tabs to keep parts connected before removal.

How do tools and the work offset affect the output?

Paths assigned to a tool use that tool's feed/speed (F/S) with a `; tool:` comment per polyline and a nominal tool table in the header; the work offset (G54–G59) is written to the header only and never rewrites geometry — the origin is determined by your machine's coordinate system, so set up work offsets on the controller first.

Can I run the output directly?

Output is standard G-code (G21/G90/M3/M5); always dry-run above the material first.

Is it local?

Yes, generation is local.

Does it work with SVGs from Inkscape or Illustrator?

Yes — the tool reads <path> elements, so save as plain SVG and turn shapes into paths first (Inkscape: Path → Object to Path; Illustrator: Expand / Outline Stroke). Text objects and live shapes like rect and circle produce no toolpath until converted.

Can I drive a pen plotter with the output?

Often yes. Plotters that lift and lower the pen with M3/M5 commands read the same G0/G1 moves as laser cutters — set the Z heights so the pen clears the media between paths and dry-run first. There are no plotter-specific post-processors, so verify the program before running it.

How is this different from JSCut?

JSCut is a full browser CAM project — operations, simulations and a workpiece setup — and its polygon engine force-closes open paths, so open engraving lines become closed cuts. This tool is a single-page converter: open paths stay open, tabs and multi-pass depth are built in, and there is no CAM project to configure. Both run locally in your browser.

How does it differ from DXF to G-code?

Only the input format. This tool reads SVG <path> elements and samples Béziers at your tolerance; DXF to G-code reads DXF lines, polylines, circles and arcs with per-layer cut/engrave/exclude mapping. The tool library, work-offset presets and output format are shared between the two pages in this browser, so both stay in the same workflow.

Is it free? Do I need an account?

Free with a daily allowance, no sign-in — and conversion runs locally in your browser, so your SVG never leaves the device.

Examples

  • Drop an SVG → set depth/tabs → click Convert & download

Supported formats

SVGG-code

Limitations

  • Paths are sampled into polylines (Bézier/arc approximation).
  • Transforms: translate/scale/rotate/matrix are applied (including nested <g> accumulation and per-path transform); skew and other transform functions are ignored.
  • Subpaths inside one <path> (multiple M commands) are cut as separate toolpath segments with rapid G0 moves between them — no bridging cut across disjoint shapes.
  • Only <path> elements are read; convert shapes like rect/circle to paths first.
  • Open paths are kept open (never force-closed); Tabs (spacing/height) and pass depth are supported.
  • Tools: paths assigned to a library tool emit that tool's F/S with a `; tool:` comment per polyline and a nominal tool table in the header; unassigned paths use the global parameters. The work offset (G54–G59) is header-only and never rewrites geometry — the origin is determined by your machine's coordinate system, so set up/verify offsets on the controller before cutting.
  • Output millimeters follow SVG unit semantics: with root width and viewBox present, one user unit = width(px) / viewBox-width; otherwise 1 user unit = 1 px = 25.4/96 mm.
  • No lead-in/lead-out moves.
  • Raster images inside the SVG are ignored; 2D cutting/engraving only.
  • Runs locally in your browser, nothing is uploaded.

Privacy

Privacy first: this tool runs entirely in your browser — your input and files never leave your device, and everything is cleared when you close the page.

Standards & comparison

SVG (W3C)G-code (RS-274-D base dialect)
DimensionVecaria (this tool)Online converters (cloud)Desktop professional CAD
PrivacyRuns locally in your browser; the file is not uploadedYou upload the file to a third-party serverRuns locally
WaitNo queue — as fast as your own deviceUpload plus cloud queueLocal application startup
Standards supportSVG (W3C) · G-code (RS-274-D base dialect)Varies by service, often older subsetsFull vendor protocol sets
Install footprint0 MB — runs in the browser0 MBSeveral GB of storage