What input formats does the decoder accept?
Either base64 (whitespace tolerated) or hex (lowercase, uppercase, spaces, optional 0x prefix). Toggle the format above the input panel. The bytes you supply must be a valid CBOR-encoded value per RFC 8949 — typically what comes out of cbor-x, cbor.js, the Python cbor2 library, or any COSE / CWT serializer.
Does this decoder handle COSE / CWT / WebAuthn payloads?
It decodes the CBOR structure underneath. COSE_Sign1, CWT, and WebAuthn attestation are CBOR-encoded arrays / maps with specific known shapes — pasting the bytes here gives you the raw CBOR view, which you can then interpret semantically. CBOR tags (major type 6) are decoded transparently — the wrapped item is returned and the tag number is dropped.
How are uint64 and int64 outside safe-integer range shown?
JavaScript numbers cannot safely represent values above 2^53 − 1. When a CBOR uint64 or negative-int64 falls outside that range, it is shown as a string tagged "(uint64) 18446744073709551615" or "(int64) -9000000000000000000" so you can see the exact value without silent precision loss.
How are byte strings (major type 2) shown?
CBOR distinguishes binary blobs from UTF-8 text. Because JSON has no native byte type, this decoder represents each byte string as an object {"__bin__": "<base64>"} so the bytes survive a JSON.stringify round-trip without corruption.
Are float16 (half-precision) values supported?
Yes — major 7 / additional info 25 (tag 0xf9) decodes through an inline IEEE 754 half-precision conversion: sign / 5-bit exponent / 10-bit fraction → JS number. CoAP / COSE encoders emit float16 to save bytes when the value fits, and this decoder handles all three width classes (float16, float32, float64).
Does the decoder support indefinite-length containers?
Yes. Indefinite-length text strings, byte strings, arrays, and maps (additional info 31, terminated by 0xff break) are read until the break and concatenated / accumulated. This is the form streaming encoders emit when they do not know the length up front.
What does "Truncated CBOR" mean?
The decoder reached the end of the byte buffer mid-value — typically because the input was clipped during copy/paste, or the wrong base64/hex toggle was used. The error message includes the byte offset where parsing failed. Re-copy the full payload and confirm the format toggle.
Is the data uploaded?
No. Decoding runs entirely in JavaScript inside this tab. CBOR payloads carrying attestation statements, customer records, or proprietary schemas never reach our servers. Open DevTools → Network and click Decode to confirm zero outbound requests.