SVG vs DXF: Which One Your Machine Wants
An SVG stores how artwork looks; a DXF stores where geometry sits and how big it is. That single difference explains the scale bugs, missing layers, and lost strokes that show up when you send a design to a laser, plotter, or CNC mill.
November 4, 2026 · 7 min read
Open a 100 mm SVG square in a CAD program that assumes millimetres and you will often get a 264 mm square. Nothing is corrupted. The file never said how big it was, so the importer guessed, and it guessed in CSS pixels rather than printed millimetres. That one ambiguity is responsible for a large share of wasted material in small shops.
SVG and DXF are both vector formats, both plain text, and both describe shapes with coordinates. Past that surface similarity the two diverge almost completely, because they were designed for different industries with different assumptions.
What each format actually stores
SVG is a presentation format. Its job is to describe what an image should look like when rendered, and it inherits that job from the web. That means fills, gradients, opacity, stroke caps, CSS rules, and typography are all first-class citizens. It also means the format is relaxed about physical size: a document can specify a viewBox with no width and height at all, leaving the renderer to pick whatever size the container offers.
DXF is a CAD interchange format. Its model space is a coordinate system where numbers mean distances, and the appearance of a line is metadata attached to it. Colour in DXF is usually a number (an AutoCAD Color Index value) rather than a hex string, and lineweight is an integer in hundredths of a millimetre. There are no gradients, no opacity, and no fonts in the web sense — text is either geometry or a reference to a font that may not exist on the receiving machine.
The structural difference in practice
An SVG file is XML: elements nest inside each other, transforms cascade down the tree, and a group can carry styling that affects every child. A DXF file is a flat list of entities introduced by group codes — pairs of numbers and values that say "this is a LINE, it has two endpoints, it sits on layer CUT_1." Nesting exists only through blocks and inserts.
The practical consequence: in SVG, grouping is semantic and inherited. In DXF, layers are the organising principle. Most CAM software builds its toolpath list from DXF layers, so a file whose entire geometry sits on layer 0 will import as one undifferentiated mass. That is why converting artwork for a cutting machine almost always involves deciding what belongs on which layer before export. Our laser cutting guide covers what those layers usually need to be.
Where the scale goes wrong
The SVG specification defines a user unit that maps to CSS pixels, and CSS defines 96 pixels per inch. So an SVG element 96 units wide is nominally one inch. Most CAM packages do not read it that way. Since the overwhelming majority of CAD and laser files are metric, importers such as LightBurn, CorelDRAW's DXF filter, and various Inkscape workflows treat bare numbers as millimetres.
One inch of SVG (96 user units) therefore arrives as 96 mm, which is 3.78 inches. That is the classic 2.54× too large result, and it is why the first thing you check when a cut file is the wrong size is the unit assumption, not the geometry.
The DXF side of the same problem
DXF has an answer for this: the $INSUNITS header variable, which declares the drawing unit — 1 for inches, 4 for millimetres, 5 for centimetres, and so on. A well-formed DXF says exactly how big it is. The trouble is that $INSUNITS is optional in older DXF versions, widely ignored by exporters, and frequently ignored by importers even when present. Many tools default to "unitless" and then apply their own assumption at import time.
Some CAD programs also store a $MEASUREMENT flag and a $INSUNITS value that disagree with each other, which is a reliable way to get a file that reads differently in two programs you own.
| Property | SVG | DXF |
|---|---|---|
| Base concept | Presentation / rendering | CAD geometry in model space |
| Encoding | XML, nested, tree-structured | Group-code pairs, flat entity list |
| Declared units | None intrinsic; user units ≈ CSS px | $INSUNITS (optional, often wrong) |
| Physical size | Implicit via viewBox and width/height | Explicit numbers in the declared unit |
| Curves | Cubic and quadratic Bézier, arcs | Polylines, arcs, splines, ellipses |
| Colour | RGB, HSL, hex, gradients, patterns | ACI index, true colour, or bylayer |
| Transparency | Full alpha and group opacity | Not part of classic DXF geometry |
| Grouping | <g>, transforms cascade | Layers and blocks |
| Text | Live, styled, reflowable | TEXT/MTEXT or exploded to outlines |
| Typical consumer | Browser, Illustrator, Inkscape, cutters | AutoCAD, CAM, CNC, plasma, waterjet |
| Fills | Rich, including gradient meshes | Hatches and solid fills only |
| Stroke semantics | Painted width, centred on path | Lineweight, plotted as a constant width |
Strokes, fills, and what a machine does with them
A filled shape and a stroked outline are very different ideas to a cutting machine. In SVG, a stroke is paint applied along a path — the path itself has zero width. A 2 mm stroke on a rectangle is a 2 mm band of ink centred on the outline. Convert that file to DXF without thinking and you can end up with either a bare outline (correct for cutting) or a doubled outline where the stroke was expanded (usually wrong).
A laser cutter, vinyl cutter, or plasma torch wants a single open or closed path per cut. It reads the path, not the paint. That is why good design files for machines use strokes for cut lines and fills for engrave or score regions, and why you should decide before conversion whether a decorative element is going to be outlined or filled.
Text becomes geometry
Text is the other classic failure. SVG text depends on a font being available at render time. If the receiving CAM tool does not have that font, it either substitutes something radically different or drops the text entirely. The same is true of DXF, where TEXT entities reference a style whose font file is a local resource.
For anything going to a machine, convert text to outlines first. This is not lossy in any way that matters — the letterforms become paths and the geometry is identical to what you saw on screen. It does eliminate editability, so keep a working copy of the original.
Choosing which to send
If the receiving party is a browser, a design application, a cutting machine driven by a craft app, or a vinyl cutter, SVG is usually the right answer. It survives Illustrator and Inkscape round-trips, it carries stroke and fill intent clearly, and it is the native language of most hobby cut workflows.
If the receiving party is CAD — Fusion 360, Rhino, AutoCAD, a CAM post-processor, a plasma table, a waterjet, an industrial laser — DXF is expected. Those tools speak DXF, they want layers and explicit units, and they treat a decorative gradient as noise.
Between the two, SVG to DXF conversion is the common direction, because most artwork is authored as SVG and most machines want DXF. The reverse direction, DXF to SVG, is mostly used for preparing CAD drawings for the web or for cutter software that refuses DXF.
A conversion checklist
- Set the document to explicit millimetre dimensions before export, not a bare viewBox.
- Flatten or bake transforms so nothing depends on cascaded group scaling.
- Convert text to paths.
- Assign geometry to named layers — one per operation, such as CUT, SCORE, ENGRAVE.
- Keep cut paths as unfilled strokes at a consistent width.
- Open the resulting DXF in a viewer and measure a known dimension against a ruler.
The conversion edge cases worth knowing
Bézier curves convert to DXF better as polylines with a tight tolerance than as splines, because spline support in older DXF readers is uneven. A tolerance of 0.01 mm is visually exact at cutting scale while keeping file size manageable. If you push to 0.001 mm the file grows by an order of magnitude for no benefit a laser can resolve.
Gradients, masks, and clip paths cannot survive the trip. Flatten them before converting, or accept that they vanish. Filters likewise — a drop shadow in SVG is not geometry and has no DXF equivalent.
Arcs are the one place where DXF has an advantage: native arc entities are smaller and smoother than a polyline approximation, and many CAM tools generate better toolpaths from true arcs. Converters that recognise circular geometry and emit ARC entities produce noticeably cleaner output for mechanical parts.
If you are starting from a raster logo rather than an SVG, the path is longer: trace it first, then convert. PNG to DXF does that in one step by vectorising the bitmap and writing CAD geometry directly, which avoids a manually tuned SVG step you would only throw away.
When to keep both
For anything that will be reproduced — signage, production parts, a design you send to a fabricator repeatedly — keep the SVG as the design master and generate a DXF per machine. DXF files are consumer-specific in a way SVGs are not: layer naming conventions, unit assumptions, and curve tolerances all vary between shops. Regenerating from the master is cleaner than editing the DXF by hand.
If you handle these conversions at volume, our overview of batch conversion workflows covers how to keep unit and layer settings consistent across a folder of files.
If the source is a PDF drawing rather than an SVG — a common situation when a client supplies a CAD export as a PDF — the route is PDF to DXF, which is a geometry transfer for a true vector PDF and a tracing step for a scanned one. For the broader question of which formats carry which information, the format map puts DXF and SVG beside PDF, EPS and the 3D formats.
Frequently asked questions
Why does my SVG import into my laser software at the wrong size?
The SVG has no intrinsic physical unit, so an importer falls back on an assumption. Because SVG user units map to CSS pixels at 96 per inch, and most CAM tools assume millimetres, a 96-unit drawing becomes 96 mm instead of 25.4 mm. Set an explicit width and height in millimetres in the source file, or scale by 0.2646 after import.
Can DXF store gradients or transparency?
No. Classic DXF geometry carries no gradient, opacity or filter data — it has hatches, solid fills, colours and lineweights. Anything involving transparency or a gradient must be flattened to solid shapes before conversion, or it will be dropped during the export.
Should I use SVG or DXF for a vinyl cutter?
SVG for consumer vinyl cutters. Cricut Design Space and Silhouette Studio both accept SVG directly and handle layers through colour or stroke settings. DXF is still a valid fallback for older Silhouette workflows, and the difference is worth understanding before you export.
Does converting SVG to DXF lose my layer structure?
It depends on the source. SVG has no native layer concept, so a converter must invent layers from groups, colour, or stroke width. If your SVG groups are meaningless, the DXF layers will be too. Name your groups deliberately, or split the artwork into separate paths per operation before conversion.
What curve tolerance should I use for a cutting DXF?
0.01 mm is the practical answer for laser and CNC work. It is finer than any consumer machine can resolve and keeps the polyline count reasonable. Going to 0.001 mm multiplies the point count roughly tenfold with no visible benefit on a cut edge.
Sources
Convert files for this workflow
Try it on your own file
Drop in an image or an SVG and see the result before you pay. No signup is required to preview.