CBOR is specified in an Internet Standard RFC. RFCs that serve as Internet Standards are generated by the IETF based on an extensive technical review and quality control process. These are meant to last.

RFC 8949: CBOR

The stable reference.

Find the motivation for CBOR, the detailed specification, information on transcoding from and to JSON, and appendices with test vectors and readily usable code.

Originally published as RFC 7049 in 2013, a new edition of the specification has become available in 2020: describing the same format, but with more explanation of topics that had arisen since the first RFC.

View details »

Additional specs

RFC 8742: CBOR Sequences

A short specification for encoding sequences of CBOR data items. View details »

RFC 8746: Tags for typed arrays

Tags for efficiently transporting homogeneous and multidimensional arrays. View details »

RFC 8943: Tags for dates

Tags for transporting date information without time of day. View details »

IANA registry

CBOR has been designed to be extensible by enabling third parties to define Tags. Immediately after CBOR was published, extensions started to be documented. Those that are completed are collected in an IANA registry to ensure specifications are available and that they don't stumble over each other.

Find pointers to what other people are also doing with CBOR, and extension specifications that might save you some work.

View details »

RFC 8152: COSE

Binary-enabled serialization is useful for cryptography. CBOR Object Signing and Encryption (COSE) provides a standard way to exchange authenticated, integrity protected, and confidentiality protected objects using CBOR.

View details »

RFC 8392: CWT

Based on COSE, the CBOR Web Token (CWT) is for CBOR what the JSON Web Token (JWT) is for JSON: A compact means of representing claims to be securely conveyed between two parties.

View details »

RFC 8610: CDDL

The Concise Data Definition Language (CDDL) provides a machine-processable notation to express CBOR (and JSON) data structures. This is used in specifications and other design documents for describing the structures that one party is meant to send to another, enabling informed discussion, input validation, and even code generation.

View details »