The C3D File Format

October 6, 2021

The date above is automatically updated when this documentation is generated so that users can review the current documentation release level.  This documentation is publically available at and can be downloaded as a standard CHM help file and a printable PDF file.

Originally based on a description of the C3D format written by Andrew Danis in the late 1980’s, this user guide expands the documentation based on conversations with Andrew Danis and C3D users since the format first appeared.  I started working with the C3D format while supporting Vicon 3D motion capture systems running AMASS software on DEC RSX11M systems, prior to the adoption of the C3D format by Oxford Metrics Ltd. The original C3D description was written by Andy Danis in the mid 1980’s and for many years was the only public source of C3D information. A PDF copy of the original document is available from the C3D web site.

This documentation describes the current status of the C3D Format and includes explanations that explain aspects of the C3D format to users and C3D application programmers - documentation updates normally try to cover areas that may have been misunderstood.  While the C3D format has evolved since its creation, it was originally conceived to maintain compatibility in ways that ensure that data stored in all C3D files can always be read and accessed to support universal motion capture, clinical, and research functionality.  Updates to the documentation are normally just explanations of areas in the C3D format, not changes to the format.

The most significant recent documentation updates are summarized here:

Ÿ The explanation of the function of second byte in the C3D file header that documents the data section and structure of the C3D file has been expanded.

Ÿ The C3D frame count stored in the POINT:FRAMES parameter was originally stored as a 16-bit integer value but can also be stored as a floating-point value by all applications that follow the C3D format description.

Ÿ The C3D header words that store the first and last frame numbers refer to the data that created the C3D file; while they may be closely related to the file contents, they are not the C3D file frame numbers.

Ÿ While all internal group and parameter names must be written in 7-bit ASCII characters to support universal C3D file access, localized UTF-8 encoding is permitted for user entered values such as 3D point names, analog channel names, and all descriptions.


Use and Distribution

Revision History