STEP File Documentation


Summary

A STEP file is a 3D CAD model — a single part or a whole assembly — stored as plain ASCII text in the vendor-neutral ISO 10303 format, so the exact geometry moves between different CAD programs unchanged. The extension is .step (or the identical older .stp) and the MIME type is model/step. It holds precise boundary-representation solids you can measure, not a triangle mesh, which is why engineers use it to trade parts between SolidWorks, Fusion 360, CATIA and FreeCAD.

Technical details

FeatureValue
Full nameSTEP — Standard for the Exchange of Product Data
File extension.step, .stp (identical), .p21
MIME typemodel/step, application/step
Format typeNeutral 3D CAD model (boundary-representation solid geometry)
EncodingPlain ASCII text (ISO 10303-21 clear-text / "Part 21")
DeveloperISO (International Organization for Standardization)
Introduced1994 (ISO 10303-21); AP203 in 2003, AP242 in 2014
StandardISO 10303-21; data modelled in EXPRESS (ISO 10303-11)
Common schemasAP203, AP214, AP242 (declared in FILE_SCHEMA)
Open standardYes (published ISO standard)
Geometry modelExact B-rep: NURBS surfaces, edges, faces, solids
First lineISO-10303-21;
Last lineEND-ISO-10303-21;
SectionsHEADER then DATA
Entity record form#123=ENTITY_NAME(args);
Contains executable codeNo (inert text data)
Related extensions.stp, .iges, .igs, .jt, .x_t, .brep
Typical mesh export.stl, .obj (for 3D printing / rendering)
SpecificationISO 10303-21
Structure at a glance
ISO-10303-21;

A STEP file is plain ASCII text, not binary, so it has no hex magic number. It is identified by its first line, the literal ISO-10303-21;, and it always closes with END-ISO-10303-21;. Between them sit two blocks: a HEADER; section with FILE_DESCRIPTION, FILE_NAME and FILE_SCHEMA, then a DATA; section of numbered entity records such as #42=CARTESIAN_POINT('',(0.,0.,0.));. The extensions .step and .stp label the exact same format.

What is a STEP file?

STEP stands for Standard for the Exchange of Product Data, the neutral 3D CAD exchange format defined by ISO 10303. The specific part that governs the file on disk is ISO 10303-21, first published in 1994, which describes a clear-text (ASCII) encoding often called a "Part 21 file". A STEP file records the exact geometry of a mechanical part or assembly — surfaces, edges, faces and solids as precise mathematical entities — so it can pass between CAD systems that each use their own proprietary native format.

The point of STEP is neutrality. SolidWorks, Fusion 360, CATIA, Creo, Inventor and FreeCAD all read and write it, so a designer exports one STEP file and a machine shop, a supplier or a 3D-print service can open the real geometry regardless of the software they run. Because .step and .stp are the identical format (the three-letter .stp spelling survives from the DOS era), everything below applies to both. The MIME type is model/step.

The Part 21 clear-text encoding and its EXPRESS schema

ISO 10303 splits the problem in two. The information model — what a "product", a "cartesian point" or an "advanced brep shape representation" is, and how they relate — is written in a data-modelling language called EXPRESS, standardised as ISO 10303-11. The file you receive is the serialisation of instances of that model, encoded per ISO 10303-21. So the schema (say AP242) defines the vocabulary, and the Part 21 file is one concrete population of it.

A Part 21 file is line-oriented ASCII. It opens with the exact token ISO-10303-21;, contains a HEADER; section and one or more DATA; sections, and ends with END-ISO-10303-21;. Strings are single-quoted, real numbers always carry a decimal point (0., not 0), and every statement ends in a semicolon. Because it is text, you can open a STEP file in any editor and read the entity records, though only a CAD kernel can turn them back into a rendered solid.

The HEADER section: FILE_DESCRIPTION, FILE_NAME and FILE_SCHEMA

The header holds metadata about the exchange, not geometry. It is a fixed sequence of standard entities. Three are effectively mandatory:

ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('CAD model of bracket'),'2;1');
FILE_NAME('bracket.step',
          '2026-02-14T10:31:00',
          ('A. Designer'),('Acme Ltd'),
          'Open CASCADE STEP processor 7.7',
          'FreeCAD 1.0','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;

FILE_DESCRIPTION carries a free-text description and an implementation level such as '2;1', where the first digit is the ISO 10303-21 edition and the second is the conformance option (1 = internal mapping, 2 = external mapping of complex entities). FILE_NAME records the original name, an ISO 8601 time stamp, author, organisation, the preprocessor that wrote the file and the originating system. FILE_SCHEMA is the load-bearing line: it names the application protocol the DATA section conforms to. Seeing AUTOMOTIVE_DESIGN tells a reader the file follows AP214/AP242 conventions; CONFIG_CONTROL_DESIGN means AP203. A reader that does not know the declared schema cannot safely interpret the entities that follow.

The DATA section: entity instances and the #id reference graph

All geometry lives in the DATA section as a flat list of numbered entity instances. Each record has the form #id = ENTITY_NAME(parameters); where #id is a unique positive integer within the file. Parameters can be literals or references to other instances written as #id, so the whole model is a directed graph of cross-references rather than a nested tree.

DATA;
#10=CARTESIAN_POINT('',(0.,0.,0.));
#11=DIRECTION('',(0.,0.,1.));
#12=DIRECTION('',(1.,0.,0.));
#13=AXIS2_PLACEMENT_3D('',#10,#11,#12);
#14=PLANE('',#13);
#15=PRODUCT('Bracket','Bracket','',(#20));
ENDSEC;
END-ISO-10303-21;

Here #13 (a coordinate frame) is built from the point #10 and two directions #11 and #12; #14 (a plane) then references #13. The order of records on disk does not matter, because resolution is by #id, not by position. A parser reads the entire section, then follows references to reconstruct the model. Unset optional parameters are written as $, and a value that a subtype redeclares is written as *. Real STEP files routinely run to tens or hundreds of thousands of such records for a single detailed part.

Boundary representation: how a solid is actually stored

STEP stores a solid as a boundary representation (B-rep): the solid is defined by the closed shell of faces that bounds it, and each face is a bounded patch of an exact surface. This is a hierarchy of entities, each referencing the level below it.

EntityWhat it represents
CARTESIAN_POINTA point given by its (x, y, z) coordinates
VERTEX_POINTA topological vertex located at a point
EDGE_CURVEAn edge running between two vertices along a curve
B_SPLINE_CURVE_WITH_KNOTSA NURBS curve (control points, knots, degree)
FACE_BOUND / FACE_OUTER_BOUNDA loop of edges bounding a face
ADVANCED_FACEA trimmed patch of a surface with its bounding loops
B_SPLINE_SURFACE_WITH_KNOTSA NURBS surface underlying a face
CLOSED_SHELLThe watertight set of faces enclosing a volume
MANIFOLD_SOLID_BREPThe solid itself, defined by one closed shell

Because the surfaces are stored as exact analytic and NURBS definitions rather than a mesh, a STEP file describes the true geometry to full precision. You can measure a diameter, take a cross-section, or import the body into CAD and cut new features against it. That is the concrete difference from mesh formats such as STL or OBJ, which only approximate the same surface with flat triangles and therefore lose the underlying curves.

Application protocols: AP203, AP214 and AP242

ISO 10303 is a family, and an application protocol (AP) is the subset that fixes which entities are legal for a given engineering purpose. The three that matter for CAD interchange are AP203, AP214 and AP242. AP203 (revised 2003) covers configuration-controlled 3D mechanical design and was the long-time default for geometry-only exchange. AP214 added colour, layers and assembly structure aimed at the automotive industry, which is why its schema name in the header is AUTOMOTIVE_DESIGN. AP242, published in 2014, merges AP203 and AP214 into one protocol and adds product and manufacturing information (PMI): tolerances, surface finishes and annotations carried as machine-readable data rather than just drawn lines. The FILE_SCHEMA entry is what tells you which of these a particular file uses, and it determines which entities a receiving system should expect.

Product and assembly structure

An assembly is not one big blob of geometry. STEP models it through product-structure entities: a PRODUCT names a part, PRODUCT_DEFINITION gives a specific version of it, and NEXT_ASSEMBLY_USAGE_OCCURRENCE records that one part is used as a component inside another, each occurrence carrying its own placement transform. A single STEP file can therefore hold a top-level assembly, every sub-part, and the positions that locate each instance, which is how a complete gearbox or bracket-and-fastener set travels as one file. Colours and layers, when present, attach to faces through styling entities such as STYLED_ITEM and PRESENTATION_STYLE_ASSIGNMENT.

STEP, STP and the one-way trip to a mesh

Two clarifications resolve most confusion. First, .step and .stp are byte-for-byte the same format; the short form exists only because early DOS and Windows limited extensions to three characters, and you can rename one to the other freely. See .stp for the same content under that label. Second, exporting STEP to STL for 3D printing is a deliberate downgrade: the CAD kernel tessellates the exact B-rep surfaces into a triangle mesh at a chosen tolerance, discarding the analytic geometry. That mesh is what a slicer needs, but you cannot recover the precise surfaces from it afterwards, so the STEP file remains the engineering master and the STL is a disposable print artifact.

Frequently asked questions

Why does a STEP file open as plain text in Notepad?

Because it genuinely is text. ISO 10303-21 defines a clear-text encoding, so a .step file is ASCII that any editor can display, starting with the line ISO-10303-21;. If it opens in Notepad, your system simply has no CAD application associated with the extension; install a viewer and open it from there to see the 3D model.

What does the FILE_SCHEMA line tell me?

It names the application protocol the geometry conforms to, which controls how the file should be read. CONFIG_CONTROL_DESIGN indicates AP203, AUTOMOTIVE_DESIGN indicates AP214/AP242. If two systems exchange files but one only supports an older AP, PMI or assembly detail written under AP242 may not survive the import.

References