Sustainability of Digital Formats: Planning for Library of Congress Collections
|Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact|
|Full name||STL (STereoLithography) File Format, ASCII|
The ASCII representation of the STL (STereoLithography) file format is a simple, openly documented, plain-text format for describing the surface of an object as a triangular mesh. Since its introduction in the late 1980s, STL has become a de facto standard for rapid prototyping and 3D printing.
See the format description for STL_family for general background and context for the STL format. This document focuses on details applicable only to the ASCII variant of STL.
An STL_ASCII file consists of records that are lines beginning with keywords. The file begins with a solid record, (which can include a name for the object), and ends with an endsolid record. Between this outer pair of records, each triangular facet is represented by a sequence of records, beginning with a facet record and ending with an endfacet record. The facet record may include a unit-length normal vector preceded by the normal keyword. The three vertices of the triangle are delimited by outer loop and endloop records. Each vertex is described on a vertex record that lists its (X,Y,Z) coordinates. See the Wikipedia article for the STL file format for a diagram showing the syntax for a facet. The article also states, "The structure of the format suggests that other possibilities exist (e.g., facets with more than one "loop", or loops with more than three vertices). In practice, however, all facets are simple triangles."
For another description of the format and many example files, see STLA Files: ASCII stereolithography files from John Burkardt. Many other descriptions of the ASCII variant of the STL format, usually illustrated with an example of the ASCII syntax, can be found, including: StL ASCII Format from Marshall Burns; and STL format from Paul Bourke.
StL ASCII Format from fabbers.com states, "The ASCII format is primarily intended for testing new CAD interfaces. The large size of its files makes it impractical for general use." A use of the ASCII variant of STL for instruction is shown in Triangulated Surfaces and STL Format, slides from a lecture by George Hart from a course on Computers and Sculpture. See STL_family for information on shortcomings of the STL format that apply to both variants of the STL file format.
|Production phase||See STL_family.|
|Relationship to other formats|
|Subtype of||STL_family, STL (STereoLithography) File Format Family|
|Affinity to||STL_binary, STL (STereoLithography) File Format, Binary|
|LC experience or existing holdings||See STL_family.|
|LC preference||See STL_family.|
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. The compilers of this resource have been unable to locate a copy of the original specification and have relied on other descriptions of the format. Listed below (see Useful References) are a number of sources with information about the format. Comments welcome.
See STL_family for information on adoption of the STL format including both variants.
The UK Archaeology Data Service lists the STL format in a table of "common" formats, and describes the ASCII variant as "suitable for preservation."
Because many STL files would be unmanageably large in the ASCII variant of the format, most use of STL is in STL_binary.
|Licensing and patents||There are no concerns about patents or licensing associated with the STL format.|
The ASCII variant of the STL format is in plain text, and thus easy to view with basic editing tools. The structure is simple and it is straightforward to build tools for reading and rendering based on the small set of keywords.
Unfortunately, as shown in Analysis of STL files by M. Szilvśi-Nagy and Gy. Mátyási in 2003, 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." Although an STL_ASCII file may be easy to read or manipulate as plain text, that does not mean that it can be used for 3D printing without using a software tool to check the file and repair it if needed. There are many tools that offer to repair STL files; see 18 Best STL Repair Software Tools in 2019.
The format provides no support for descriptive metadata beyond an optional name for the object.
|Technical protection considerations||None|
|3D Model Geometry||See STL_family..|
|3D Model Appearance||The STL_ASCII format does not support colors or any other appearance characteristics. Hence it is useful primarily for displaying or printing objects in a single color. See also STL_family.|
|3D Model Scene||See STL_family.|
|3D Model Animation||See STL_family.|
||This file extension is found in practice, and listed in many file format resources. Used for both ASCII and binary versions of STL.|
|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.|
|Magic numbers||<optional blank>solid
||See also the PRONOM record identified below.|
||See http://www.nationalarchives.gov.uk/PRONOM/x-fmt/108. Provides a complex internal signature that looks for a number of keywords: solid; facet; normal; outer loop; and vertex. For ASCII variant only.|
|Wikidata Title ID||Q1238229
||See https://www.wikidata.org/wiki/Q1238229. Covers ASCII and binary variants of STL.|