Have you ever 3D printed a part that had flat spots or faceted surfaces where smooth curves were supposed to be? Or maybe you’ve just seen a picture of a 3D print that looked like it belonged in some low-resolution CGI from the 90’s? You are not alone, and it’s not your 3D printer’s fault — the culprit is likely a lack of resolution in the STL file that was used to create the part!


How do STL files work?


As the standard file format for taking 3D model files into a slicing program for 3D printing in preparation for actual printing, STL files were originally created to be used with stereolithography 3D printing in the late 1980’s (STL stands for Stereolithography). It is almost certain you have come across an STL file before if you have ever used a 3D printer or designed something for 3D printing – but did you know not all STLs are the same? As a matter of fact, you can design a 3D model that meets your functional requirements, and then create an STL file from that model that will create out-of-spec parts.

An STL file is simply a series of triangles that (usually) form a mesh that approximates a 3D model’s continuous surfaces. STL files contain three dimensional coordinates organized into sets of three along with a normal vector – each of these sets, or vertices (corners) of the triangle, has an orientation normal to the plane that is described by the triangle’s three points.

Ideally, STLs intended for 3D printing should include a well-formed mesh, with 2 faces per edge of every triangle (this is sometimes known as a manifold STL, or one with no gaps).

The STL file specification does not specify any such manifold condition, since it is simply a list of coordinates and vectors. In STL files, especially those created directly from 3D scanners, geometry may be non-manifold or incomplete, making them difficult to 3D print correctly, which can then cause problems during slicing.

Most widely used CAD software packages support STL export, including most commercial CAD packages and many open source packages and hobby packages. You can usually find STL export options by searching the web for your CAD program and your software’s name.


The importance of STL 3D printing

Since triangles are flat and 2D shapes, STL files can only accurately represent triangle collections. Essentially, any shape that does not have curved surfaces, such as a cube or a rectangle, assumes that the triangles in the mesh are smaller than the smallest features in the model.

In addition to curved parts, there are holes, fillets, radiuses, revolvers, as well as organic curves and geometries. An STL file can only approximate these curved (non-planar) features and surfaces, regardless of how exact the settings are for STL export.

How should I handle my STL files?

If you are satisfied with the quality of your 3D prints, and how they are processed, then congratulations – there’s no need to change anything! The problem can be caused by STL files that have been generated with either too high or too low export resolution settings, so if you’re having issues this article can help. Low resolution STLs are characterized by excessive flat areas in regions that should be smoothly curved. When you slice STL files with excessively high resolution, your 3D printed parts will look great, but the large files lead to long slice times and may cause lags when adjusting part view in extreme cases.

STL files have become so widely adopted because of their simplicity, which has enabled a wide range of engineering and design software to easily support, edit, and generate STL files from other 3D models, which can then be printed on nearly every 3D printer. The downside of STLs is also their simplicity, since they do not contain any information about the unit system (millimeters, inches, feet, etc.) in which they were designed and the resolution of an STL file cannot be determined by itself or how well it represents the original model.

STL files that are too coarse and that were generated without sufficient resolution are the most common problem users encounter. The most obvious indication of this is the presence of flat spots and faceted areas in parts that were designed with smooth curves.

You can control the density of a triangular mesh when you export an STL from your CAD software so that the geometry of a part will be defined. This is because your CAD software is trying to optimize for a small STL file size, so it will attempt to create the roughest, lowest resolution mesh possible, but the parameters you specify may force the software to use a higher resolution mesh for certain features and geometry. The mental model you should take here is to think about these export parameters as forcing the export process to generate finer, more detailed meshes.

Many CAD software programs nowadays offer users a choice between two export parameters for linear and angular dimensions: one called chordal tolerance (or chordal deviation) and the other called angular tolerance (or angular deviation). It is important that the STL output meets all the criteria specified by the export settings you selected. A mesh setting that requires an upper-resolution mesh can be more restrictive (or simply the limiting parameter) depending on the geometry of that feature. The limiting parameter will typically vary across the geometry of a part in response to different features.

Other settings may be available in certain CAD programs, which may include minimum and maximum triangle facet length options in addition to chordal and angular tolerances. We recommend leaving these at their default values unless you have a specific reason for wanting to change them. In general, these are used to address STL export issues in edge cases.

Measuring mesh quality in relation to file size

If you are looking for a more accurate, smoother STL mesh, you might be tempted to set your CAD program’s resolution settings to maximum and walk away. As a consequence, increasing the resolution of the STL export also results in a larger STL file, which typically results in longer processing times, both in terms of creating the STL, uploading it, and then processing the STL for 3D printing. In some cases, the STL file resolution can exceed the machine precision in your 3D printer, which means you may end up paying a price for STL resolution that isn’t actually reflected in the printed parts.

We recommend that you choose your STL export settings so that both the resolution and file size are balanced to meet your functional requirements. These settings have been found to be useful as a starting point:

  • Binary STL format (smaller file size than ASCII)
  • chordal tolerance/deviation of 0.1 mm [0.004 in]
  • Angular tolerance/deviation of 1 deg
  • Minimum side length of 0.1 mm [0.004 in]

We recommend reducing the file size with increases in chordal and/or angular tolerances until the STL file size is no larger than 20 MB. A large file size can prevent the STL from being prepared for 3D printing and slow down the processing. Please keep in mind that your tolerance for what you can handle in terms of STL resolution and software processing time will vary depending on your personal preference.