FIDO2 Resident Key vs Non-Resident Key — Discoverable Credentials Explained

When you create a WebAuthn credential, you choose whether it's resident (discoverable) or non-resident (wrapped). This choice affects everything: usernameless login, storage limits, privacy, and which extensions work. Here's the technical comparison.

How They Work

Non-Resident (Wrapped)Resident (Discoverable)
Private Key StorageEncrypted with authenticator master key, stored off-device in the credential ID blob (RP keeps it)Stored on-device in authenticator flash
Credential IDContains encrypted private key + RP ID (opaque, ~200-280 bytes)Opaque index into authenticator storage (~30-80 bytes)
CapacityUnlimited — RP stores the blobLimited: 25-100 per authenticator
Usernameless LoginNo — RP must provide allowCredentialsYes — authenticator provides user handle
WebAuthn SupportresidentKey: "discouraged"residentKey: "required"
hmac-secret ExtensionYesYes
credBlob ExtensionNo (no on-device storage)Yes (small blob stored with key)
PrivacyBetter — RP stores user dataWorse — user handle stored on key

When to Use Each

Use Non-Resident (wrapped) keys when:

This is what most websites use today. The user types their username, the RP sends allowCredentials, and the authenticator signs the challenge.

Use Resident (discoverable) keys when:

This is the future direction (passkeys). But the limited storage per authenticator is a real constraint — YubiKey 5 stores only 25 resident credentials.

Verify Your Key's Firmware

Use our FIDO2 CBOR Attestation Parser to decode your security key's attestation and check the AAGUID, credential storage limits, and supported extensions.

Related

FIDO2 & CTAP Protocol Guide | FIDO2 Attestation Parser | Best Security Keys