.FBX Autodesk FBX
.fbx

Autodesk FBX

FBX is Autodesk's proprietary 3D scene interchange format storing geometry, animation, materials, and skeletal data in binary or ASCII serialization.

Model structure
Header format version
Mesh vertices · faces
Data materials · textures
octet-stream1996Proprietary
By FileDex
Not convertible

3D model format conversion requires scene graph parsing and mesh transformation libraries not available in browser WASM.

Common questions

How do I open and inspect an FBX file?

Open it in Blender (File > Import > FBX) or use the Autodesk FBX Review standalone viewer. Blender's Python console then lets you query object counts, vertex totals, and animation frame ranges programmatically. For quick metadata checks without a full 3D application, the Autodesk FBX SDK ships a command-line sample called FbxInfo.

What is the difference between FBX binary and FBX ASCII?

Binary FBX uses a node-based structure with 13-byte property headers, while ASCII FBX stores the same scene graph as indented plain text. Binary files are smaller and faster to parse. ASCII files are human-readable and easier to diff in version control, but most production pipelines default to binary for performance.

Can FBX files store animations and materials together?

Yes, a single FBX file can contain geometry, skeletal rigs, animation curves, materials, and even embedded textures. AnimationStack nodes hold animation layers, each containing curves bound to specific object properties. This self-contained capability is why FBX became the standard interchange format between DCC tools like Maya, 3ds Max, and game engines.

Why does my FBX import look wrong in a different application?

FBX version differences are the most common cause. Files exported as FBX 7.4 may use axis conversion or unit scaling that a parser expecting 7.5 layout handles differently. Check that your exporter's FBX version matches the importer's supported range, and verify that the coordinate system (Y-up vs Z-up) and unit scale (centimeters vs meters) are consistent.

What makes .FBX special

Autodesk created FBX through the acquisition of Kaydara in 2006, inheriting a format that had already become the animation industry's preferred interchange medium. FBX exists in two incompatible serializations sharing the same 'Kaydara FBX Binary' header text — the binary variant uses a completely different node-based structure with 13-byte property headers per node, while the ASCII variant stores the same data as human-readable key-value trees. Both encode a scene graph containing Model, Geometry, Material, and AnimationStack nodes.

Continue reading — full technical deep dive

Internal Structure

Binary FBX files begin with the magic bytes 4B 61 79 64 61 72 61 (spelling "Kaydara"), followed by version metadata that determines the byte-width of node offset fields. Files versioned 7.5 and above use 64-bit offsets; older versions use 32-bit. Each node in the binary tree carries a property count, property list length, and nested children. Geometry data includes vertex positions, polygon indices, normals, UV layers, and edge visibility flags. Animation curves store keyframe values with interpolation modes (constant, linear, cubic) attached to specific channel properties of scene objects. Connection objects (C: records in the node graph) define parent-child relationships between every element in the scene.

Deformers and Rigging

Skeletal animation relies on two deformer types: Skin deformers bind mesh vertices to bone hierarchies through weighted influence maps, while BlendShape deformers define morph targets for facial animation and corrective shapes. Each deformer references a cluster of vertices with per-vertex weights. The Autodesk FBX SDK remains the reference implementation for reading and writing these structures, though Blender ships its own independent parser that handles most production files. Unity and Unreal Engine both maintain dedicated FBX import pipelines tuned to their respective coordinate systems and scale conventions.

Practical Constraints

FBX carries no built-in compression. Large animation sequences with dense keyframes produce files that grow linearly with curve count and frame range. The format supports embedded textures as raw byte arrays within the file, which inflates size further. Studios typically strip embedded media before archival, referencing textures externally instead. Coordinate system differences between authoring tools add another layer of complexity: Maya uses Y-up with centimeters, 3ds Max uses Z-up with system units, and Blender defaults to Z-up with meters. FBX includes axis conversion metadata in its GlobalSettings node, but not all importers respect these fields. Version differences between FBX 7.1, 7.4, and 7.5 introduce subtle node layout changes that can break older parsers — always confirm the target SDK version before export.

Technical reference

MIME Type
application/octet-stream
Magic Bytes
4B 61 79 64 61 72 61 20 Kaydara signature for binary FBX. ASCII FBX has no magic bytes.
Developer
Autodesk (originally Kaydara)
Year Introduced
1996
Open Standard
No
000000004B61796461726120 Kaydara

Kaydara signature for binary FBX. ASCII FBX has no magic bytes.

Binary Structure

Binary FBX begins with a 27-byte header: 'Kaydara FBX Binary' magic string (21 bytes), two unknown bytes, and a 4-byte little-endian version number. The remainder is a flat sequence of nodes, each prefixed with end-offset, property count, property list length, and a name string. Nodes nest recursively, terminated by 13 null bytes.

Inspect FBX scene graph with Blender headless other
blender --background --python-expr "import bpy; bpy.ops.import_scene.fbx(filepath='model.fbx'); [print(o.name, o.type) for o in bpy.data.objects]"

Launches Blender without a GUI window, imports the FBX file, then prints each object's name and type (MESH, ARMATURE, EMPTY, etc.). Useful for auditing scene contents before committing to a full render pipeline.

Convert FBX to glTF via assimp other
assimp export model.fbx output.gltf -f gltf2

Uses the Open Asset Import Library to read the FBX scene graph and write a glTF 2.0 file. The -f flag selects the output format explicitly.

LOW

Attack Vectors

  • Malformed node offsets can trigger buffer over-reads in native FBX SDK parsers
  • Embedded texture byte arrays could contain disguised executable payloads if extracted without validation
  • Crafted animation curve data with extreme keyframe counts may cause memory exhaustion in importers

Mitigation: FileDex does not parse, render, or execute 3D model files. Reference page only.