Client Data JSON
Client Data JSON is a piece of information created by a user's browser or device during a WebAuthn passwordless or security-key login or registration. It records details about the specific sign-in attempt, such as what kind of action is taking place and which website is involved, so the server can confirm the request is genuine. This helps the website and the user's device agree on exactly what is being signed.
In the W3C WebAuthn specification, clientDataJSON is a JSON-compatible serialization of the collected client data assembled by the client (typically the browser or platform WebAuthn API) during a registration or authentication ceremony. It carries contextual fields describing the ceremony, including a type attribute that indicates whether the operation is a credential creation or an assertion, along with values used by the relying party to validate the ceremony. Per Source 1, the client computes a clientDataHash by hashing the clientDataJSON; per Source 5, implementations such as the Win32 WebAuthn API represent it as a UTF-8 encoded JSON serialization with an associated hash algorithm identifier. The authenticator signs over data that incorporates this hash rather than the raw clientDataJSON itself, which lets the relying party bind the returned signature to the specific ceremony context; note this is a signing/integrity mechanism and does not by itself imply encryption of the client data. This term is scoped to WebAuthn/FIDO2 ceremonies and is distinct from IGA or token-issuance artifacts; related variants such as the proposed remoteClientDataJSON extension (Source 4) address passing exact client data in remote-host scenarios and are out of scope for the core definition.
Why it matters
Client Data JSON is a foundational element of how WebAuthn binds a signature to a specific sign-in or registration attempt. Because the authenticator ultimately signs over a hash that incorporates this client data, the relying party can verify that the returned assertion corresponds to the exact ceremony context the client observed, including the type of operation being performed and other values used for validation. This binding is what allows a server to distinguish a genuine, in-context request from a replayed or mismatched one, making clientDataJSON central to the security properties that make passwordless and security-key authentication resistant to certain classes of attack.
For teams designing or auditing WebAuthn/FIDO2 deployments, understanding clientDataJSON matters because errors in how the relying party validates it can undermine the assurances of the entire ceremony. The relying party is responsible for checking the contextual fields carried in the client data against what it expects for the ceremony; skipping or weakening these checks can weaken the protection the protocol is designed to provide. It is also important to be precise about what this artifact does and does not do: the hashing and signing mechanism provides integrity binding, not confidentiality. Signing over the client data hash does not encrypt the client data, and treating it as if it did would be a misreading of the mechanism.
Finally, clientDataJSON is scoped specifically to WebAuthn ceremonies and should not be confused with token-issuance artifacts or identity governance data. It is a runtime authentication construct, not a provisioning or certification record. Keeping this scope clear helps architects reason accurately about where in an access flow the guarantees actually apply.
Who it's relevant to
Inside Client Data JSON
Common questions
Answers to the questions practitioners most commonly ask about Client Data JSON.
