Web Authentication (WebAuthn) is a web standard published by the World Wide Web Consortium (W3C). It defines an API that websites use to authenticate with WebAuthn credentials (commonly known as passkeys) and outlines what WebAuthn authenticators should do. It solves many of the issues of traditional password-based authentication by verifying the user's identity with digital signatures. Although WebAuthn is often touted as a complete replacement for passwords, most websites that implement it continue to use passwords in some capacity.

To use WebAuthn, users require a compatible authenticator. The standard does not specify how to store the keys required for signing, so a variety of authenticator types can be used. The most common authenticator type is a platform authenticator, which is built into the operating system of the device. Common platform authenticators include Android, Apple Keychain and Windows Hello. These make use of hardware security features (such as TEE and TPM), and often sync credentials between devices for ease-of-use. Another common authenticator type is a roaming authenticator, where a separate hardware device authenticates the user by connecting over USB, Bluetooth Low Energy, or near-field communications (NFC). Most smartphones can be used as roaming authenticators, and dedicated physical security keys are also used. WebAuthn is effectively backward compatible with FIDO Universal 2nd Factor (U2F) as they both use the CTAP protocol. Password managers can also be used as an authenticator, often with cloud sync. Where credentials sync is not viable or possible, WebAuthn Hybrid Transport can be used to access credentials stored on another authenticator such as a smartphone.

Like legacy U2F, WebAuthn is resistant to some phishing attacks as the authenticator only offers credentials that were registered on the same website. However, unlike U2F, WebAuthn can be implemented in a passwordless manner. Moreover, a roaming hardware authenticator resists malware, since the keys are stored on a separate device, which prevents the malware from accessing them directly.

The WebAuthn Level 1 and 2 standards were published as W3C Recommendations on 4 March 2019 and 8 April 2021 respectively. A Level 3 specification progressed through several Candidate Recommendation Snapshots during 2026, and in July 2026 the W3C proposed advancing it to full Recommendation status.

Background The combination of username and password has been the standard mechanism for users to prove to a website that they are a specific person since the dawn of web-based services. However, password-based authentication has been known to be flawed for many years, even decades, with most issues relating to poor practices on either the user side or the server side.

Users routinely reuse passwords across services (which exposes them to credential stuffing), choose weak passwords that can be brute-forced and predicted in a short amount of time, and store them in insecure ways that allows for their disclosure (for example writing them down on a piece of paper or a document), with each of those contributing to the likelihood of credentials and account compromise.

Likewise, servers often deal with passwords improperly, both while storing them in databases, and while processing them. Common flaws include plaintext storage, lack of salted hashing (or more advanced schemes for at-rest credentials), arbitrary restrictions on password length and charset, mandatory ineffective password changes, and deliberate incompatibility with password managers (for instance, by preventing passwords to be pasted).

As a result, in 2012, Google alongside Yubico started working on a standard called Universal 2 Factor (U2F) that would allow websites to programatically verify a second-factor about the user by verifying the presence of hardware-based tokens (like smart cards) on the user. This standard was considered an improvement over existing solutions like time-based one-time password (TOTP) or SMS-based authentication that still left the user vulnerable to sophisticated phishing campaigns. The standard was later adopted into a larger industry wide collaboration called the FIDO (Fast IDentity Online) Alliance. The first draft for this proposed standard was published in 2014. In 2015, the FIDO Alliance started developing the FIDO 2 Project, releasing a proposed standard where they sought to improve upon the existing U2F standard by addressing many of its weaknesses. For example, the U2F standard still required to use of passwords alongside a second factor which still left websites vulnerable to password leaks and other similar attacks that were common against passwords. Additionally, the U2F specification only verified the second factor device and did not perform any user authentication. This meant that if the second factor device had been stolen or lost anyone with access to the U2F device would be able to bypass the second factor of authentication for accounts linked to the device.

In November 2015, the FIDO Alliance submitted the first version of FIDO 2 to the World Wide Web Consortium as a proposed web standard. In 2016, the W3C established a separate W3C Web Authentication Working Group to help write a standard for the new FIDO 2 project's authentication framework such that it could be integrated into browsers by default. The standard was adopted by major browser vendors in late 2018 and early 2019, with Chrome supporting the standard in version 67, Firefox in version 60 and Safari in version 13. In 2019, the FIDO 2 project alongside the W3C Web Authentication Working Group released the first version of the WebAuthn specification based on the FIDO 2 project as a W3C recommendation. Subsequently, the standard has gone through two revisions, being called Level 1, Level 2 with a Level 3 revision still being considered a Candidate Recommendation , meaning that it is considered mature and feature complete and is ready for implementation and testing by interested parties.

Passkey branding

Passkey is the de facto non-technical term for a saved sign-in credential, a piece of cryptographic information that is capable of being used to authenticate a user using the WebAuthn standard. Most user interfaces that support using WebAuthn refer to it as supporting passkeys.

Due to the open-ended nature of the WebAuthn specification, a passkey can be stored on software or hardware that is capable of authenticating a user. This includes technology like Windows Hello which works by using facial recognition to authenticate users, Bitwarden which authenticates users through a browser extension or YubiKeys that allow a user to authenticate using a physical hardware token. The cryptographic keys stored by the software are only available to use for the browser once the software or hardware is authenticated the user.

When Apple first prominently introduced passkeys to the public in 2022, they emphasized integrations with their own products. This, combined with the lack of clear communication from other companies, led to speculation that passkeys were proprietary to Apple. As browsers and websites began to implement WebAuthn, the inconsistent feature-sets have often resulted in a variety of understandings of what exactly counted as a passkey.

Overview

Like its predecessor FIDO U2F, W3C Web Authentication (WebAuthn) involves a website, a web browser, and an authenticator:

The website is a conforming WebAuthn Relying Party The browser is a conforming WebAuthn Client The authenticator is a FIDO2 authenticator, that is, it is assumed compatible with the WebAuthn Client

WebAuthn specifies how a claimant demonstrates possession and control of a FIDO2 authenticator to a verifier called the WebAuthn Relying Party. The authentication process is mediated by an entity called the WebAuthn Client, which is little more than a conforming web browser.

Level 3

WebAuthn Level 3 introduces several capabilities beyond authentication alone. The PRF (Pseudo-Random Function) extension allows a passkey to derive encryption keys, enabling it to help protect encrypted data such as backups without a separate password. Related Origin Requests (ROR) let a single passkey be used across multiple domains belonging to the same organization, reducing the need for duplicate credentials.

The specification also added a section addressing the privacy implications of using WebAuthn credentials across origins, including risks associated with cross-origin iframes.

Authentication

Authenticator is a multi-factor cryptographic authenticator that uses public-key cryptography to sign an authentication assertion targeted at the WebAuthn Relying Party. Assuming the authenticator uses either a facial recognition, fingerprint or PIN for user verification, the authenticator itself is something you have while the facial recognition and fingerprint (biometric) are something you are and the PIN is something you know.

To initiate the WebAuthn authentication flow, the WebAuthn Relying Party indicates its intentions to the WebAuthn Client (i.e., the browser) via JavaScript. The WebAuthn Client communicates with the authenticator using a JavaScript API implemented in the browser. A roaming authenticator conforms to the FIDO Client to Authenticator Protocol (CTAP), and connected over USB, Bluetooth Low Energy, or near-field communications (NFC).

WebAuthn does not strictly require a roaming hardware authenticator. Alternatively, a software authenticator (e.g., implemented on a smartphone) or a platform authenticator (i.e., an authenticator implemented directly on the WebAuthn Client Device) may be used. Relevant examples of platform authenticators include Windows Hello and the Android operating system.

WebAuthn Hybrid Transport allows the WebAuthn Client to access credentials stored on another authenticator such as a smartphone, useful in certain situations where credential sync is not viable.

There is a lingering misunderstanding among users that biometric data is transmitted over the network in the same manner as passwords, which is not the case.

Registration

When the WebAuthn Relying Party receives the signed authentication assertion from the browser, the digital signature on the assertion is verified using a trusted public key for the user.

To obtain a public key for the user, the WebAuthn Relying Party initiates a WebAuthn registration flow that is similar to the authentication flow illustrated above. The primary difference is that the authenticator now signs an attestation statement with its attestation private key. The signed attestation statement contains a copy of the public key that the WebAuthn Relying Party ultimately uses to verify a signed authentication assertion. The attestation certificate contains metadata describing the authenticator itself.

The digital signature on the attestation statement is verified with the trusted attestation public key for that particular model of authenticator. How the WebAuthn Relying Party obtains its store of trusted attestation public keys is unspecified. One option is to use the FIDO metadata service.

The attestation type specified in the JavaScript determines the trust model. For instance, an attestation type called self-attestation may be desired, for which the trust model is essentially trust on first use.

Support

The WebAuthn Level 1 standard was published as a W3C Recommendation by the Web Authentication Working Group on 4 March 2019. WebAuthn is supported by Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari and Opera.