3MF or STL: what actually changes when you print a QR
By Tiehl Roberto Matías · 6 min read · Updated 26 October 2026
The STL has been the format of 3D printing for forty years and it still works, but it has one limitation that hurts particularly on a QR code: it knows nothing about colour. The 3MF does, and that difference decides whether you have to separate the parts by hand or not.
What each one stores
An STL is a list of triangles. Nothing else. Vertex coordinates and which way each face points. It does not store units — hence the classic models that open a thousand times bigger than they should — it does not store materials, it does not store colours, and it has no idea your piece is made of separate parts. It all arrives at the slicer as one mass in one colour.
A 3MF is, inside, a ZIP containing XML files. It stores the geometry the way an STL does, and on top of that it stores:
- The units, so the piece always comes in at the right size.
- The materials and colours, in a resource the standard calls
basematerials. - The structure: which objects exist and how they group into components.
- Which colour belongs to each part, through an index pointing at that materials resource.
It is an open format, maintained by the 3MF Consortium, and every slicer anyone actually uses understands it today.
Why it matters so much on a QR code
A printed QR is by definition a two-colour piece: if the base and the code come out of the same filament there is no contrast and the phone does not read it. It is one of the few objects where colour is not decoration but a working requirement.
With an STL, the route is this: you open the file, you see a single-colour block, and you have to separate the base from the relief yourself, or paint the piece in the slicer module by module. On a 29 × 29 code that is 841 little squares. It is not work anybody does twice.
With a 3MF, you open the file and the two parts arrive already distinct, each with its material assigned. All you have to say is which filament goes in which.
How the file you download here is put together
The 3MF this site generates carries two objects — the base and the relief — joined as components of a single piece, plus a materials resource with the two colours you picked on screen. Both objects share an origin, so there is nothing to align: they come in already positioned.
And there is one detail done on purpose: the relief starts at exactly the height where the base ends. They do not overlap by a micron. That is what makes the single-colour printer trick possible, explained in the filament change guide (in Spanish).
Being two objects rather than one has a second useful consequence: you can throw the base away and keep only the code, to sit it on top of a model of your own. How that is done, and how much flat surface it needs, is in the guide to putting the code on another piece (in Spanish).
How much each file weighs
The logical thought is that the 3MF, storing more, would take up more. It is the other way round, by a long way. These are the files this site generates for one 34-character link at correction H, measured on download:
| Piece | Modules | Triangles | STL | 3MF |
|---|---|---|---|---|
| Keychain 40 mm | square | 3,948 | 193 KB | 30 KB |
| Keychain 40 mm | rounded | 11,664 | 570 KB | 83 KB |
| Plate 90 mm | square | 4,392 | 215 KB | 33 KB |
| Plate 90 mm | rounded | 24,084 | 1,176 KB | 173 KB |
| Plate 150 mm | square | 4,464 | 218 KB | 34 KB |
| Plate 150 mm | rounded | 35,592 | 1,738 KB | 255 KB |
In every case the STL takes six to seven times more space than the 3MF. There are two reasons, and both come from how each format is built:
- The STL repeats its vertices. Every triangle writes out all three of its corners in full, even when five neighbouring triangles share that same corner. The 3MF writes each vertex once and the triangles just point at it by number.
- The 3MF is compressed. It is a ZIP, and a model made of squares aligned to a grid repeats the same numbers over and over, which is exactly what compresses best.
The table shows two more things that are not obvious. First: with square modules, the file size barely depends on the size of the piece. A keychain and a 150 mm plate have practically the same triangle count, because what counts is how many modules there are, not how big they are. Second: rounded modules multiply the triangles by three on the keychain and by eight on the big plate, because every curve is approximated with many straight segments and, the larger the piece, the more segments it takes before you notice.
And that difference does not stay in the file size: rounded modules break the relief into many more separate pieces, which the nozzle has to start and stop one at a time. It is measured in the module shapes guide (in Spanish).
None of this affects printing: the slicer takes the same time with either file and the piece comes out the same. It matters when you are going to email the file or send it over a messenger, or when you keep many versions of the same piece.
How to open the 3MF step by step in Bambu Studio, Orca, PrusaSlicer and Cura, and what to answer to the question each one asks on loading it, is in the slicers guide (in Spanish).
If your slicer complains about the file: check first that you are opening it with
«Import» or by dragging it onto the plate, and not with «Open project». Some slicers save their
own projects as .3mf too, and choosing the project option makes them expect print
settings that a geometry 3MF has no reason to carry.
So what is the STL still for?
It still has three legitimate uses:
- Reworking the piece in a modelling program. If you are taking it into Blender, Fusion or Tinkercad to add a bracket, a magnet or your logo, an STL goes in anywhere without argument.
- Old printers and slicers that do not understand 3MF.
- Sharing the piece on repositories where STL is still what people expect.
That is why the generator gives you the STL as well. You only have to know that the file arrives with no colours and that separating the parts becomes your job.
One nuance about this site's STL: it is a single object with no colour information at all, as the format requires. What it does keep is that the base and the relief are two independent closed volumes touching on one face only: they are not fused. Because of that, in slicers with a split into parts option, they can often be separated again. Do not rely on it as a method — that is what the 3MF is for — but if you end up with an STL in your hands, it is the quick way out.
The short answer
Download the 3MF if you are going straight to printing, which is 95 % of cases. Download the STL only if you are going to modify the piece first or if your software does not take 3MF.
Both come out of the same button
The generator produces a 3MF with the colours inside and a binary STL. Also PNG and SVG, in case you want the flat code as well, to print on paper or send in a message.
Generate and downloadKeep reading
- Which filament pairs work and which ones ruin the scanWhy red on black does not read even though it looks different, and the list of pairs that do work.
- Printing a two-colour QR on an ordinary printerNo AMS, no MMU: the per-layer filament change, step by step in all four slicers.