Why your SVG imports at the wrong size in LightBurn, xTool and Glowforge
This guide was drafted with AI assistance.
An SVG has no built-in physical size unless it says so. Software that finds plain units assumes pixels at 96 DPI (1 px is about 0.2646 mm), while some older files assume 72 or 90 DPI. Fix it by writing width and height in mm with a matching viewBox, then measure the imported design and cut a test on scrap. Meshcast laser tool exports declare millimetres.
Designs built in real millimetres, exported as SVG or DXF. Free to preview.
Open the laser tools →Why SVG size goes wrong
An SVG is a drawing described in abstract units, not a file with a built-in physical size. Unless the file clearly says how big one unit is, the program that opens it has to guess. Different programs guess differently, so the same file can arrive 25 percent too small in one app and exactly right in another. Laser cutters make this expensive, because a wrong size means a wasted sheet.
The good news is that the cause is nearly always one of four things: pixel units, a DPI assumption, a missing width and height, or a viewBox that does not match the declared size. All four are easy to check.
Pixels versus millimetres
Inside an SVG, drawing coordinates are in user units. By default a user unit equals one CSS pixel, and a CSS pixel is defined as 1/96 of an inch. That works out as follows:
- 1 px = 1/96 inch, which is about 0.2646 mm
- 96 px = 1 inch = 25.4 mm
- 1 mm = about 3.7795 px
If a design is 100 mm wide and the file stores that as 100 plain units, then a program that treats units as pixels at 96 DPI shows it as only about 26.5 mm. That is the classic "my SVG is tiny" problem. In the opposite case, a design built in pixels and read as millimetres arrives nearly four times too large.
The 72, 90 and 96 DPI assumptions
When an SVG gives sizes in unitless numbers, software falls back on a DPI assumption to convert to physical size. The three you will meet most often are:
| Assumption | Where it comes from | 1 unit equals |
|---|---|---|
| 72 DPI | Print and PostScript points, older Adobe Illustrator exports | about 0.3528 mm |
| 90 DPI | Older Inkscape versions | about 0.2822 mm |
| 96 DPI | The CSS standard, current Inkscape and most browsers | about 0.2646 mm |
Because the ratios are 72:90:96, a file can come out at 75 percent of its intended size (drawn for 72 DPI, read as 96), about 94 percent (drawn for 90, read as 96), or 133 percent (drawn for 96, read as 72), depending on which pair of assumptions meet. If a part is off by exactly one of these ratios, you have found your culprit: the file was drawn at one DPI and read at another.
Laser programs such as LightBurn, xTool Creative Space and the Glowforge app each have their own handling, and the details change between versions. Treat the table above as the reasoning tool, then check your own version of the software.
width, height and viewBox
The reliable fix is to declare the size explicitly. An SVG root element has three attributes that decide size:
- width and height: the physical or display size of the drawing. With a unit, such as
width="100mm", the size is unambiguous. - viewBox: the coordinate system inside, written as four numbers: min-x, min-y, width, height.
The best arrangement is for width and height to carry millimetre units, and for the viewBox to use the same numbers in plain units. A 100 by 60 mm part then looks like this in the header:
width="100mm" height="60mm" viewBox="0 0 100 60"
Now one drawing unit is exactly one millimetre, and any program that respects the width and height will open it at true size. Problems appear when:
- width and height are missing, so the program has to guess from the viewBox.
- width and height are in pixels while the viewBox is in millimetres, or the reverse.
- the aspect ratio of width and height does not match the viewBox, so the drawing is scaled to fit.
- the drawing is wrapped in a transform that scales everything.
How to check a file before you cut
- Open the file in a text editor. SVG is plain text. Look at the first
<svgtag and read the width, height and viewBox. - Check the units. Does width end in mm, in, px or nothing at all?
- Measure after import. In your laser software, select the whole design and read its width and height. Compare with the intended size, using a ruler on the screen readout or a known feature such as a hole diameter.
- Test with a calibration square. Draw a 50 by 50 mm square, import and check. Once you know how your software treats files, you can trust it for the rest.
- Cut on scrap or cardboard first. A 30-second test beats a ruined sheet. Measure the physical result with calipers.
If the file is the wrong size by a ratio from the DPI table, you can often scale it by that percentage in the laser software, then check again. Better still, fix the root cause so every future file behaves.
Fixing the problem at the source
In your laser software
Many programs have an import or preferences setting for the DPI used when reading unitless SVGs. Match it to the program that made the file. Look for options named something like "SVG import DPI" or "scale on import", which differ between versions.
In your design program
In Inkscape, set the document units to millimetres in Document Properties and make sure the scale is 1 user unit per mm. In Illustrator, set the document units to millimetres before exporting and check the export options. In Affinity and CorelDRAW, export with explicit physical units. After exporting, open the result in a text editor and confirm the header as above.
Converted images
A traced image has no real-world size at all, because a bitmap is only pixels. After converting with a tool such as image to SVG, always resize the vector to the physical dimension you want before sending it to the laser.
How Meshcast files declare size
The tools on Meshcast laser design in real millimetres. Their SVG exports state the size in millimetres in the header and use a matching viewBox, so one drawing unit is one millimetre and the file opens at true size in software that respects width and height. Cut lines are red (#ff0000) and engrave lines are blue (#0000ff). The DXF export uses separate CUT and ENGRAVE layers in millimetres.
Whichever tool made it, the rule stays the same: measure the imported design before you cut. If you work from a sliced 3D model, where layers must match the real material thickness, it matters even more. For help choosing between the formats, see SVG vs DXF for laser cutting, and for how colours map to operations, laser cut vs score vs engrave.
FAQ
Why does my SVG import tiny into LightBurn?
The file probably uses plain units that the software reads as pixels at 96 DPI, so 100 units becomes about 26.5 mm. Declare millimetres in the width and height, or scale the import to match, then measure it again.
What DPI should I use for SVG laser files?
Modern browsers, Inkscape and the CSS standard use 96 DPI, so 1 px is 1/96 inch. Older Illustrator files often assume 72 DPI and older Inkscape assumed 90. The best fix is to avoid guessing by writing the size in millimetres.
What should the width, height and viewBox of a laser SVG be?
Use millimetre units on width and height, and a viewBox with the same numbers in plain units. For a 100 by 60 mm part: width 100mm, height 60mm, viewBox 0 0 100 60. One drawing unit then equals one millimetre.
How can I check an SVG size before cutting?
Open the file in a text editor and read the svg tag, then import it and measure the selected design in your laser software. Draw a 50 mm test square if you are unsure how your software behaves, and cut a test on scrap.
Do Meshcast SVG files open at the right size?
They declare millimetres in the header with a matching viewBox, so they open at true size in software that respects those attributes. Still measure on import, since each program has its own settings.
Made by meshcast.app. More laser tools and guides live on the laser cutter tools hub.