Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The userHandle read-only property of the AuthenticatorAssertionResponse interface is an ArrayBuffer object which is an opaque identifier for the given user. Such an identifier can be used by the relying party's server to link the user account with its corresponding credentials and other data.

This value is set in the id field of the user options object passed in parameter of CredentialsContainer.create() (used for the creation of the PublicKeyCredential instance).

Note: An AuthenticatorAssertionResponse instance is available on PublicKeyCredential.response after calling navigator.credentials.get().

Note: This property may only be used in top-level contexts and will not be available in an <iframe> for example.


An ArrayBuffer object which is an opaque identifier for the current user. This is not human-readable and does not contain any personally identifying information (e.g. username, email, phone number, etc.)


const options = {
  challenge: new Uint8Array(26), // will be another value, provided by the relying party server
  timeout: 60000,

  .get({ publicKey: options })
  .then((assertionPKCred) => {
    const userHandle = assertionPKCred.response.userHandle;

    // Send response and client extensions to the server so that it can
    // go on with the authentication
  .catch((err) => console.error(err));


Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-authenticatorassertionresponse-userhandle

Browser compatibility

BCD tables only load in the browser

See also