STP File Documentation


Summary

An STP file is a 3D CAD model — a part or assembly — stored in the neutral STEP format (ISO 10303) so it can move between different CAD programs. .stp and .step are the identical format; .stp is just the older three-letter spelling. The file is plain ASCII text that begins with the line ISO-10303-21;, and it stores exact boundary-representation solid geometry, not a triangle mesh. Its MIME type is model/step. Free viewers such as FreeCAD and CAD Assistant open it; converting to STL makes it 3D-printable.

Technical details

FeatureValue
Full nameSTEP — Standard for the Exchange of Product Data (.stp spelling)
File extension.stp (identical to .step)
MIME typemodel/step
Format typeNeutral 3D CAD model, boundary-representation (B-rep) solid geometry
EncodingPlain ASCII text (ISO 10303-21 clear-text)
DeveloperISO (International Organization for Standardization)
Introduced1994 (ISO 10303-21)
StandardISO 10303-21 (file syntax); AP203 (2003), AP242 (2014) application protocols
Open standardYes
First line (magic)ISO-10303-21;
Last lineEND-ISO-10303-21;
SectionsHEADER and DATA
Schema declared byFILE_SCHEMA in the header (e.g. AP242)
Geometry modelExact surfaces, edges, solids (points, curves, NURBS)
Geometry kindPrecise B-rep, not a mesh (unlike STL / OBJ)
Data schema languageEXPRESS (ISO 10303-11)
Contains executable codeNo — inert geometry data
Free viewersFreeCAD, CAD Assistant, eDrawings, Autodesk Viewer
Related extensions.step, .p21, .iges/.igs, .jt, .x_t, .brep
Specificationiso.org/standard/63141.html
Structure at a glance

An STP file is plain ASCII text with no binary magic number. It always opens with the exact line ISO-10303-21; and closes with END-ISO-10303-21;. In between sit two named sections: HEADER; (metadata — FILE_DESCRIPTION, FILE_NAME, and FILE_SCHEMA, which names the application protocol such as AP242) and DATA;, which holds the model as numbered entity records — #10=CARTESIAN_POINT(...), #11=... — that reference one another by their # identifiers. Because it is text, it is identified by that header line, not by a signature byte.

What is an STP file?

An STP file is a STEP file — the ISO 10303 Standard for the Exchange of Product Data — and .stp is simply the older three-letter extension for the exact same format that is also written .step. The two are byte-for-byte the same kind of file; the short spelling is a relic of the DOS and Windows 8.3 filename era. STEP is a neutral CAD format: every CAD program (SolidWorks, Fusion 360, CATIA, Creo, Inventor, FreeCAD) has its own proprietary native format, so STEP is the common interchange format a vendor exports to when a model has to be opened by someone using different software. That is why it is everywhere in engineering and manufacturing: a designer sends a .stp to a machine shop, a 3D-print service, or a partner on another CAD system.

The file syntax is defined by ISO 10303-21, first published in 1994, and the meaning of the data is fixed by an application protocol — most importantly AP203 (2003) and AP242 (2014). Crucially, an STP file stores precise boundary-representation solid geometry: exact mathematical surfaces, edges and solids, not a triangle-mesh approximation like STL or OBJ. It is also plain ASCII text you can open in an editor, though it is meaningless without a viewer to render it. The sections below show exactly how that text is organised.

The Part 21 file: header line, sections, terminator

A STEP file follows the “clear text encoding” of ISO 10303-21, often called a Part 21 or P21 file. Its skeleton is fixed:

ISO-10303-21;
HEADER;
  FILE_DESCRIPTION(('A simple bracket'),'2;1');
  FILE_NAME('bracket.stp','2026-07-20T10:00:00',('J. Smith'),
            ('Acme'),'FreeCAD','FreeCAD','');
  FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
ENDSEC;
DATA;
  #10=CARTESIAN_POINT('',(0.0,0.0,0.0));
  #11=DIRECTION('',(0.0,0.0,1.0));
  #12=AXIS2_PLACEMENT_3D('',#10,#11,$);
  ... thousands more entity records ...
ENDSEC;
END-ISO-10303-21;

Every STP file begins with the literal line ISO-10303-21; and ends with END-ISO-10303-21;; there is no binary signature, so that first line is how the format is identified. Between them are exactly two sections, each closed by ENDSEC;. HEADER; holds file-level metadata; DATA; holds the model. String values are single-quoted, records end with a semicolon, and a lone $ marks an optional attribute that was not supplied.

The HEADER section: FILE_SCHEMA decides everything

The header carries three mandatory entities. FILE_DESCRIPTION gives a human description and an implementation level. FILE_NAME records the original file name, a timestamp, author, organisation, the pre-processor and originating CAD system, and an authorisation field — which is how a .stp can quietly reveal which software and which person produced it. The load-bearing entity is FILE_SCHEMA: it names the application protocol the file conforms to, and that choice determines how every record in the DATA section is to be interpreted.

The common schemas are AP203 (configuration-controlled 3D design, aerospace-rooted), AP214 (automotive, adds colour and assembly presentation — note that a file may name it AUTOMOTIVE_DESIGN), and AP242 (2014), which merges AP203 and AP214 into one and adds semantic product-manufacturing information such as GD&T tolerances and integrated tessellation. A viewer reads FILE_SCHEMA first so it knows which vocabulary of entity types to expect before it parses a single geometric record.

The DATA section: numbered entity records that reference each other

The model itself is a flat list of entity instances, each on its own line, each with a numeric identifier written #n. A record is #n = ENTITY_TYPE(attribute, attribute, ...);, and attributes routinely reference other records by their # number, so the whole model is a graph of cross-referenced entities rather than a nested tree:

#10=CARTESIAN_POINT('',(0.,0.,0.));      a point in space
#11=DIRECTION('',(0.,0.,1.));            a unit direction (the z axis)
#12=DIRECTION('',(1.,0.,0.));            a unit direction (the x axis)
#13=AXIS2_PLACEMENT_3D('',#10,#11,#12);  a coordinate frame built from the above
#14=PLANE('',#13);                       an infinite plane on that frame

Here #14 depends on #13, which depends on #10, #11 and #12. Because references are by identifier, the records can appear in any order and a real part file typically contains thousands of them. The types come from the EXPRESS schema (ISO 10303-11) named by FILE_SCHEMA: entities such as VERTEX_POINT, EDGE_CURVE, ORIENTED_EDGE, FACE_BOUND, ADVANCED_FACE, CLOSED_SHELL and MANIFOLD_SOLID_BREP build up the solid layer by layer.

Boundary representation: why STP is exact, not a mesh

The reason STEP is engineering data and STL is not comes down to how the shape is described. STP uses boundary representation (B-rep): a solid is defined by its exact boundary surfaces, the edges where they meet, and the vertices where edges meet. Surfaces are true mathematical objects — planes, cylinders, cones, spheres, and free-form NURBS surfaces (B_SPLINE_SURFACE_WITH_KNOTS) — with topology entities recording how they are stitched into a watertight solid. A cylindrical hole is stored as an actual cylindrical surface of a stated radius, so a recipient can measure that radius to full precision.

A mesh format such as STL throws all of that away and keeps only a cloud of triangles that approximate the surface. Converting STP to STL is therefore a deliberate, one-way downgrade: the exact surfaces are tessellated into triangles at a chosen tolerance for 3D printing or rendering, and the mathematical definition is lost. That is exactly why 3D printing an STP requires an STL (or 3MF) export first — a slicer needs the triangle mesh, and it is also why editing an imported STP works on the solid body rather than the original parametric feature history, which STEP does not carry.

Assemblies and product structure

A .stp can hold a single part or a whole assembly. Product structure is expressed through a group of entities headed by PRODUCT, PRODUCT_DEFINITION and PRODUCT_DEFINITION_SHAPE, which name the parts, and NEXT_ASSEMBLY_USAGE_OCCURRENCE records, which say “this part is used as a component of that assembly” and carry the placement transform positioning each instance. One part can be referenced many times at different placements, so a bolt used twenty times is stored once and instanced twenty times. AP242 adds semantic PMI — tolerances, datums and annotations attached to the geometry as data rather than as drawn lines — which is the modern reason manufacturers prefer it over the older protocols.

Frequently asked questions

Is there any difference between STP and STEP files?

No. They are the identical ISO 10303-21 format. .stp is only the older three-letter spelling from the DOS/Windows 8.3 era. You can rename one to the other safely, and any STEP-capable program reads both. See the STEP page for the same format under its longer name.

What is the difference between STP and STL?

STP stores exact CAD geometry — precise surfaces and solids you can measure and edit. STL stores only a triangle-mesh approximation of the surface for 3D printing. STP is the engineering master; STL is the tessellated print-ready output derived from it, which is why converting STP → STL is a one-way downgrade.

Why does my STP file open as plain text or code?

Because it genuinely is a text format — it starts with ISO-10303-21; and its body is numbered entity records. If it opens in Notepad, your system simply has no CAD viewer associated with the extension. Install a viewer such as FreeCAD or CAD Assistant and open the file from there to see the 3D model.

References