Glossary

What Is the MCAP File Format?

MCAP is an open container format for timestamped robotics logs. Firsthand offers MCAP delivery and is not affiliated with Foxglove.

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

MCAP at a glance, as stated in the official sources
ItemWhat the official sources state
What it isOpen source container file format for multimodal log data; a Foxglove project
MessagesMultiple channels of timestamped, pre-serialized data
SerializationAgnostic: Protobuf, DDS (CDR), ROS, JSON and more
SchemasStored alongside the data
SeekingOptional index; messages outside chunks cannot be indexed
Compression and integrityChunk-based LZ4 or Zstandard, optional; optional CRC32 checksums
LicenceMIT License (README)
Benchmarks and file sizesNot stated in the sources read
Firsthand relationshipNone. Firsthand is not affiliated with Foxglove or the MCAP maintainers

09

Main MCAP records, as defined in the specification

Main MCAP records, as defined in the specification
RecordOpcodeWhat the specification says
Header0x01First record after the magic bytes; profile and library strings
Schema0x03Defines an individual schema, identified by a schema ID
Channel0x04Defines an encoded stream of messages on a topic
Message0x05One timestamped message on a channel, with log_time and publish_time
Chunk0x06A batch of records, compressed or uncompressed
Attachment0x09Auxiliary artifacts such as calibration data; not inside a chunk

10

MCAP and ROS 2 db3 bags, as stated in the sources read

MCAP and ROS 2 db3 bags, as stated in the sources read
AspectWhat the sources state
ROS 2 defaultMCAP is the default log format in ROS 2 (home page)
RecordingRecord directly with the rosbag2 MCAP storage plugin (ROS 2 guide)
Conversionros2 bag convert or the mcap CLI; results may differ from recording in MCAP directly
Self-containmentMCAP stores schemas with data; the guide says db3 files are not completely self-contained
ROS 1 bags, speed, sizeNot stated in the sources read

11

MCAP delivery: what the Firsthand site states, and what it does not

MCAP delivery: what the Firsthand site states, and what it does not
ItemWhat the site states
DeliveryDataset 06 (stereo head rig) ships as MCAP; custom orders are packaged in the format you name
Hand pose21 joints per hand with a per-joint visibility flag
SynchronizationOne hardware-triggered clock; 2.0 ms cross-stream ceiling
Topics, schemas, ratesNot stated; agreed in the skill spec and confirmed on a Spec Pilot
Which streams are channelsNot 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.

egocentric_stereo_sample.mp4 · head-mounted stereo · hands in frame · 1920 × 1080 web preview · rig example

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.