The base types are &quot;unsigned int&quot;, &quot;negative int&quot;, &quot;binary data&quot;, &quot;UTF-8 string&quot;, an array of said items, a map (key,value) of said items, extended types (up to 2^64) and tags (again, up to 2^64).  There are only 8 &quot;extended types&quot; currently defined (false, true, null, undefined, half float (IEEE 16b), single float (IEEE 32b) and double float (IEEE 64b) and break (used to terminate streaming data)), leaving plenty unused values for future expansion.<p>Tags are used to apply meta information to a piece of datum.  For example, you can tag a UTF-8 string as a URL or tag an array with a reference so it can be referred to elsewhere in the CBOR encoded data (an extension defined by the IETF but outside RFC-7049).