|Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact|
|Full name||STL (STereoLithography) File Format Family. Also referred to as "Standard Triangle Language" and "Standard Tessellation Language."|
The STL (STereoLithography) file format is an openly documented format for describing the surface of an object as a triangular mesh, that is, as a representation of a 3-dimensional surface in triangular facets. STL is sometimes referred to as "Standard Tessellation Language" or "Standard Triangle Language." The term used for breaking the geometry of a surface into a series of small triangles, or other polygons, is "tessellation." The format was developed initially for stereolithography, a form of 3D printing used in the late 1980s for rapid prototyping. STL was first documented in StereoLithography Interface Specification in 1988 by 3D Systems, Inc. The STL format was widely adopted in the 1990s and referred to as a de facto standard for rapid prototyping, for example in Interface Between CAD and Rapid Prototyping Systems. Part 1: A Study of Existing Interfaces from 1997. It is still widely used and supported. See Adoption in Sustainability Factors, below. Like other early digital formats, STL is a proprietary format; however, its extremely simple structure has been openly documented since the 1990s, although not necessarily by copying the original text. Examples of fairly full descriptions of STL are in the Wikipedia entry for the STL file format and The StL Format: Standard Data Format for Fabbers. STL File Format (3D Printing) – Simply Explained provides a useful introduction to the format in the context of 3D printing.
The STL format has two subtypes, an ASCII format and a binary format. This description document focuses on information that applies to both variants. See STL_ASCII and STL_binary for information appying only to one of the subtypes. In practice, binary STL files are more common, since they are more compact. However, most software tools that support STL support both variants.
In both formats, the following information is stored for each triangular facet: coordinates for the triangle's vertices (corners) and components of the vector perpendicular (normal) to the triangle and pointing outwards with respect to the surface of the model. The vector should be a "unit normal", i. e., of length 1.0. See The STL Format: Specifications from fabbers.com for useful diagrams that demonstrate additional rules that must be satisfied for an STL file to be valid. The vertices of a triangle must be listed in the order that is counterclockwise when looking at the object from the outside; this is known as the right-hand rule. Also, each triangle must share two vertices (i.e., an edge) with each of the triangles adjacent to it in the object's surface; this is known as the vertex-to-vertex rule.
The STL format is still often described as the de facto standard for 3D printing and rapid prototyping. Its two major strengths are simplicity and independence of particular 3D software or rapid prototyping methodology. For many shapes, it can provide an effective and accurate model. However, the format is very limited in the functionality it supports. For example, there is no standard support within STL for colors or textures. STL File Format (3D Printing) – Simply Explained starts with, "This format describes only the surface geometry of a three-dimensional object without any representation of color, texture or other common model attributes." See also Quality and Functionality Factors below. In STL vs. OBJ: Which Should You Use? (Feb 2019), Joseph Flint argues, in the context of 3D printing, "For those who are interested in modifying or creating their own 3D models, the OBJ file format is the only way to go." 2019 Most Common 3D File Formats from All3DP suggests, "the reign of STL over the 3D printing world may not last long and formats like OBJ, 3MF, or AMF might replace it." Instructions for setting Import/Export Preferences for Meshmixer from Autodesk advise strongly against using STL, stating, "STL is the worst mesh format, ever." The discussion thread Beware of the STL file format from community of users of the open-source 3D Slicer application provides strong arguments against using STL.
Disadvantages of the STL format have been recognized for many years. In a 1997 article, Interface Between CAD and Rapid Prototyping Systems. Part 1: A Study of Existing Interfaces, Chua Chee Kai et al. pointed out that STL files carry a high degree of redundancy because of duplicate vertices and edges. They also noted that for some shapes (e.g., ones with smooth curves), an STL file may require thousands of triangles to represent a model with sufficient accuracy, compared to a few splines or NURBS (Non-uniform rational B-spline) curves able to represent the same surface in a mathematically precise format. See Curves and Splines in CAD. They also stated that, in practice, complex shapes with holes and hollows often led to defective STL files that were time-consuming to fix. Similarly, Analysis of STL files by M. Szilvśi-Nagy and Gy. Mátyási in 2003, indicates that the surface tessellation performed in CAD modelling software "frequently ends with errors in the [STL] data structure as gaps and holes leading to open loops in the cross-sections that cannot be manufactured as layers." There are many tools that offer to repair STL files; see 18 Best STL Repair Software Tools in 2019. Despite disadvantages, some of which have been mitigated by general advances in software and hardware over 20 years, there are still situations for which the simplicity of STL and its ubiquitous support make it an appropriate choice, in particular for 3D printing in a single color. See, for example, Working in 3D: Designing and Saving for 3D Printing, a guide from Auraria Library.
|Production phase||The STL format can be used as an initial-state format as output from a 3D scanner or other process used to generate a triangular mesh model of the surface of a physical artifact. The STL model will often be input to 3D modeling software to add features not supported in the STL format. For simple objects, STL can be a middle-state format, e.g., as input to a 3D printing process. Models are often shared for re-use in the STL format.|
|Relationship to other formats|
|Has subtype||STL_ASCII, STL (STereoLithography) File Format, ASCII|
|Has subtype||STL_binary, STL (STereoLithography) File Format, Binary|
|LC experience or existing holdings||The STL format has been used in a pilot workflow for 3D capture of artifacts from the Kislak Collection.|
|LC preference||The Library of Congress Recommended Formats Statement (RFS) includes STL as an acceptable format for Scanned 3D Objects (output from photogrammetry scanning.|
The STL file format was openly documented by its originator, Charles Hull of 3D Systems, Inc. Although STL can be considered proprietary, 3D Systems has encouraged its use. The format has not been maintained through a formal governance structure.
Originally documented in StereoLithography Interface Specification in 1988 by 3D Systems, Inc. A second edition was published in 1989. The compilers of this resource have been unable to locate a copy of either of these specifications and have relied on other descriptions of the format. Listed below (see Useful References) are a number of sources with information about the ASCII variant of the STL format. No single resource appears to the compilers of this resource to be a full specification. Comments welcome.
Because many STL files would be unmanageably large in the ASCII variant of the format, most use of STL is in STL_binary. However most software that can handle STL files can import or render models in both STL variants.
STL is widely used for 3D scanning, 3D printing, rapid prototyping, and computer-aided manufacturing. Most 3D scanning hardware or software can output STL files. 3D scanners that can generate STL files include: NextEngine; and Sense. See also 10 Best 3D Scanners in 2019. How to Prepare a CAD File for Additive Manufacturing from Protocam, describes STL as the standard for the rapid prototyping industry and provides instructions for exporting STL files from over a dozen popular computer-aided design (CAD) software applications.
As of 2019, with 3D models in wide use for video games, online product information, 3D printing, and in archaeology, medicine, and other professional disciplines, the simple, openly documented formats developed over 20 years ago, such as STL, OBJ, and PLY are supported in new contexts. For example, recent versions of the Windows and Mac operating systems come with basic tools that can render 3D files in a small number of formats, including the STL format. Windows 10 includes Paint 3D, which can open files in PLY, STL, OBJ, 3MF, FBX, and GLB (the binary variant of glTF_2_0) formats. The version of Preview shipped with versions of Mac OS since 10.11 (El Capitan) has also been able to render 3D models in a number of formats. For example, Preview in Mac OS 10.14 (Mojave) supports PLY, OBJ, STL, USD (Universal Scene Description), ABC (Alembic), and possibly more.
Cultural heritage institutions and archaeologists have used the STL format when scanning 3D artifacts from their sites or collections. However, many museums also use 3D formats that offer more functionality for surface rendering. For example, the British Museum offers a queen from the Lewis chessmen for download from SketchFab in STL, but also in OBJ and glTF. SketchFab is used by many museums for making 3D models available. STL is supported for uploading models to SketchFab; however, it is not one of the preferred formats listed at Supported 3D File Formats. The UK Archaeology Data Service lists the STL format in a table of "common" formats, and describes the ASCII variant as "suitable for preservation."
3D modeling applications and conversion tools that can import, export, or convert STL files include: MeshLab, a widely used open-source software system for manipulating 3D mesh models, maintained by the Visual Computing Lab of ISTI-CNR; Blender, another popular free and open-source 3D creation suite, supported by the Blender Foundation, an independent non-profit public benefit corporation, established in the Netherlands; Mathematica; MathWorks; Rhino; Aspose.3D for Java; Assimp (Open Asset Import Library); and quick3D. Examples of software libraries and tools that have been developed specifically to read and write files in the STL formats are available from: STLA Files: ASCII stereolithography files from John Burkardt; and numpy-stl, a python library from Rick van Hattem for reading and writing STL in binary or ASCII variants.
The STL format is often mentioned in association with 3D printing and rapid prototyping. For example, The Battle of File Formats: STL vs OBJ vs PLY, a blog post from a site dealing with applications in dentistry, identifies PLY as one of three formats commonly used for 3D printing in that domain. Also in the medical field, On-Demand Anatomical Models describes a service from 3DSystems for 3D printing based on uploading an STL, OBJ, or PLY file. What File Formats are used in 3D Printing?, a blog post from 2016 states, "STL is the most common file format when 3D printing." The post 4 Most Common 3D Printer File Formats in 2019 from All3DP states that STL is the de-facto standard. Some 3D printers are packaged with software that directly accepts models in the STL format, e.g., the X5 and other 3D printers from Tiertime. In addition to applications listed above, free applications from mainstream software companies that can be used to prepare models for a 3D printer and that support the STL format include: 3D Builder from Microsoft; and Meshmixer from AutoDesk.
A recent development is the publication in 2018 by WG 17 of Digital Imaging and Communications in Medicine (DICOM) of Supplement 205, DICOM Encapsulation of STL Models for 3D Manufacturing. Only the binary form of STL is supported for DICOM encapsulation. A survey conducted in April 2017, had indicated that STL was the file format most frequently used for 3D models in medical applications, followed by X3D/VRML, OBJ, and 3MF.
|Licensing and patents||There are no concerns about patents or licensing associated with the STL format.|
|Transparency||Varies for subtypes. See STL_binary and STL_ASCII.|
|Self-documentation||Varies for subtypes. See STL_binary and STL_ASCII.|
|Technical protection considerations||None|
|3D Model Geometry||An STL ASCII file represents a surface using a triangular mesh, without support for other geometric models. Each triangle is defined by the positional coordinates for each of its three vertices, with the option of providing explicit coordinates for the normal (perpendicular) direction outward from the triangular facet. Normal components can facilitate the representation of smoothed surfaces for polygonal meshes. See Wikipedia entry for Normal(geometry). However, as noted in STL (STereoLithography): Format for Printable 3D Files from Sculpteo and STL format by Paul Bourke, the direction of the normal to a triangle can be computed from its vertices and there is often no need to record it in the STL file.|
|3D Model Appearance||The STL format does not have a standard way to support multiple colors for an object or any other appearance characteristics. Two incompatible conventions have been used for supporting color in STL_binary files. See Color in binary STL in Wikipedia entry for the STL file format. STL is useful primarily for objects to be displayed or printed in a single color. Comments welcome.|
|3D Model Scene||An STL file can define only a single object, not a scene with several objects. The STL format cannot incorporate control of lighting or pre-determined viewing positions.|
|3D Model Animation||The STL format does not support pre-determined animation sequences or skeleton structures (assemblies of bones and joints). A 3D viewer that can render models in the STL format will allow rotation and zooming.|
||This file extension is found in practice, and listed in many file format resources. Used for both ASCII and binary versions of STL. According to https://fileinfo.com/extension/stl, this extension is also used by some completely different formats.|
|Internet Media Type||model/stl
|model/stl was registered as an Internet media type in March 2018 with IANA on behalf of the Digital Imaging and Communications in Medicine (DICOM) Standards Committee in preparation of Supplement 205: DICOM Encapsulation of STL Models for 3D Manufacturing. See https://www.iana.org/assignments/media-types/model/stl. Prior to that, application/sla had been used by Wolfram for Mathematica and other products. Both media types apply to both ASCII and binary versions of STL.|
|Pronom PUID||See note.||Pronom has separate PUIDs for the ASCII and binary variants of STL.|
|Wikidata Title ID||Q1238229
||See https://www.wikidata.org/wiki/Q1238229. Covers ASCII and binary variants of STL.|
3D Model Characteristics: The quality and functionality factors used above are based on an analysis from 2008 in An Overview of 3D Data Content, File Formats and Viewers, a technical report (ISDA08-002) from the National Center for Supercomputing Applications (NCSA). According to this analysis, the key aspects of a 3D model are: geometry, appearance, scene, and animation. For brief descriptions of these factors, see the table for 3D model formats under Quality and functionality factors. The descriptions there are drawn from the 2008 report and from 2019 Most Common 3D File Formats (an article from All3DP), which uses the same factors to distinguish formats and includes the STL format.
All 3D formats support some method for representing the geometry (the shape) of an object; support for other aspects is optional depending on the primary use of the format. Table 3 in the 2008 report, An Overview of 3D Data Content, File Formats and Viewers, compares nine popular 3D formats in use in 2008 based on these four aspects of 3D models. The report mentions STL as a 3D format, but the tabular comparison does not include STL, probably because of the format's lack of support for advanced model characteristics.
In 1986, Charles Hull co-founded 3D Systems to commercialize his patented technology for stereolithography. He developed and published the STL file format to allow data from CAD software to be translated for 3D printers.