Glossary
What Is the MCAP File Format?
Last reviewed: October 2026
Short answer
MCAP is an open-source container file format for multimodal log data, from Foxglove. It stores multiple channels of timestamped, pre-serialized messages, with schemas kept in the file and an optional index. It is common in robotics and is the default log format in ROS 2. Firsthand offers MCAP delivery and is not affiliated with Foxglove.
01
What is the MCAP file format?
MCAP (pronounced em-cap) is described on mcap.dev as an open source container file format for multimodal log data, and as a Foxglove project. The README calls it a modular, performant, serialization-agnostic container file format for pub/sub and robotics applications, under the MIT License. This page draws on the mcap.dev home page, the format specification, the ROS 2 guide and the foxglove/mcap README. The mcap.dev motivation page was not read, so anything beyond those sources is Not stated in the sources read.
02
How is an MCAP file structured, per the sources?
Per the specification, an MCAP file begins and ends with magic bytes, with a Header record first and a Footer record last. The data section holds Schema, Channel, Message, Attachment, Chunk, Message Index, Metadata and Data End records. A Schema defines an individual schema, a Channel defines an encoded stream of messages on a topic, and a Message is one timestamped message on a channel, with log_time and publish_time as uint64 nanoseconds since a user-understood epoch. Messages can be written into Chunk records, which may be compressed with zstd, lz4 or not at all, and messages outside chunks cannot be indexed. An optional summary section supports fast lookup, CRC32 values are optional, and attachments such as calibration data sit outside chunks.
03
How do you read, write and inspect MCAP files, per the sources?
The README lists libraries in C++, Go, Python, JavaScript/TypeScript, Swift and Rust, and a CLI to inspect, merge and split MCAP files. The ROS 2 guide adds that the CLI can validate files and echo messages to stdout. The specification gives the media type application/vnd.mcap and the extension .mcap. Writers can configure chunking, indexing, CRC checksums and compression.
04
How does MCAP compare with rosbag, per the sources?
The sources compare MCAP with ROS 2 db3 bag files, not with every bag format. The home page says MCAP is the default log format in ROS 2. The ROS 2 guide says ROS 2 records directly to MCAP with the rosbag2 MCAP storage plugin, that existing .db3 files can be converted with ros2 bag convert or the mcap CLI, and that conversion may give different results from recording in MCAP directly. It recommends MCAP over db3 because db3 files are not completely self-contained, while MCAP stores schemas alongside data. A comparison with ROS 1 bags, file sizes, write speeds or read speeds is Not stated in the sources read, so this page makes none.
05
How does MCAP relate to other delivery formats on this site?
On this site, RLDS is episodic, step-based data built on TFDS, the LeRobot format stores episodes, and WebDataset uses sharded tar archives. By the specification, MCAP is a container of timestamped messages on channels, not an episode schema. The site does not state that an MCAP file is exported from the same episodes as its other formats, or how episode boundaries and action segments appear in a file. Both are Not stated and are agreed in the skill spec.
06
What real human egocentric data can you get custom-collected on demand?
The site states MCAP delivery in two places. The off-the-shelf stereo head rig, dataset 06 (dual fisheye, 1080p per eye, 62 mm baseline, per-unit calibration, 9-axis IMU), ships as MCAP, and a custom order is packaged in the format you name. Hand pose is 21 joints per hand with a per-joint visibility flag, on one hardware-triggered clock with a 2.0 ms cross-stream ceiling. Topic names, schemas, encodings, rates and which streams are channels are Not stated. They are agreed in the skill spec and confirmed on a Spec Pilot, paid per validated hour, with a 48-hour median where coverage is deep.
Firsthand offers custom collection at scale through a network of thousands of capture providers, for a consistent, recurring data flow to labs. The data is real human egocentric capture, never synthetic. The only stereo clip on the site is a rig example, not an MCAP file; see the stereo sample linked below.
07
MCAP at a glance, as stated in the official sources
| Item | What the official sources state |
|---|---|
| What it is | Open source container file format for multimodal log data; a Foxglove project |
| Messages | Multiple channels of timestamped, pre-serialized data |
| Serialization | Agnostic: Protobuf, DDS (CDR), ROS, JSON and more |
| Schemas | Stored alongside the data |
| Seeking | Optional index; messages outside chunks cannot be indexed |
| Compression and integrity | Chunk-based LZ4 or Zstandard, optional; optional CRC32 checksums |
| Licence | MIT License (README) |
| Benchmarks and file sizes | Not stated in the sources read |
| Firsthand relationship | None. Firsthand is not affiliated with Foxglove or the MCAP maintainers |
09
Main MCAP records, as defined in the specification
| Record | Opcode | What the specification says |
|---|---|---|
| Header | 0x01 | First record after the magic bytes; profile and library strings |
| Schema | 0x03 | Defines an individual schema, identified by a schema ID |
| Channel | 0x04 | Defines an encoded stream of messages on a topic |
| Message | 0x05 | One timestamped message on a channel, with log_time and publish_time |
| Chunk | 0x06 | A batch of records, compressed or uncompressed |
| Attachment | 0x09 | Auxiliary artifacts such as calibration data; not inside a chunk |
10
MCAP and ROS 2 db3 bags, as stated in the sources read
| Aspect | What the sources state |
|---|---|
| ROS 2 default | MCAP is the default log format in ROS 2 (home page) |
| Recording | Record directly with the rosbag2 MCAP storage plugin (ROS 2 guide) |
| Conversion | ros2 bag convert or the mcap CLI; results may differ from recording in MCAP directly |
| Self-containment | MCAP stores schemas with data; the guide says db3 files are not completely self-contained |
| ROS 1 bags, speed, size | Not stated in the sources read |
11
MCAP delivery: what the Firsthand site states, and what it does not
| Item | What the site states |
|---|---|
| Delivery | Dataset 06 (stereo head rig) ships as MCAP; custom orders are packaged in the format you name |
| Hand pose | 21 joints per hand with a per-joint visibility flag |
| Synchronization | One hardware-triggered clock; 2.0 ms cross-stream ceiling |
| Topics, schemas, rates | Not stated; agreed in the skill spec and confirmed on a Spec Pilot |
| Which streams are channels | Not stated |
12
Frequently asked questions
- What is the MCAP file format?
- An open source container file format for multimodal log data. It stores multiple channels of timestamped, pre-serialized messages, with schemas kept alongside the data and an optional index.
- Is MCAP the same as rosbag?
- No. Per the sources, MCAP is the default log format in ROS 2, and rosbag2 can record directly to it through a storage plugin. mcap.dev recommends MCAP over ROS 2 db3 files because db3 files are not completely self-contained. A comparison with ROS 1 bags is Not stated in the sources read.
- Does MCAP require a particular message serialization?
- No. The home page says it records and replays binary messages in any format, such as Protobuf, DDS (CDR), ROS and JSON.
- What licence is MCAP under?
- The foxglove/mcap README states the MIT License. Check the repository for current terms; this is not legal advice.
- Does Firsthand deliver MCAP?
- Yes. The stereo head rig dataset (06) ships as MCAP, and a custom order is packaged in the format you name. Topic names, schemas and rates are Not stated on the site and are agreed in the skill spec.
- Is Firsthand affiliated with Foxglove, and can I request a custom dataset?
- Firsthand is not affiliated with Foxglove or the MCAP maintainers. Firsthand data is real human egocentric capture. You can request a custom egocentric dataset: write a spec, confirm it on a Spec Pilot, pay per validated hour.
Example footage
What does the stereo footage behind an MCAP delivery look like?
One real clip already published on this site. It is a format and rig example: a head-mounted stereo capture with hands in frame. It is not an MCAP file, and it does not show a task from this entry.
No MCAP-delivered clip is published on the site, so this is the nearest stereo clip. Request a sample to see the delivered files. See stereo sample page, request an egocentric data sample.