Der Client erzeugt einen code_verifier aus 43–128 Zeichen des nicht reservierten URL-Alphabets, sendet in der Autorisierungsanfrage code_challenge = BASE64URL(SHA256(code_verifier)) mit code_challenge_method=S256 und weist später den Besitz nach, indem er den Verifier an den Token-Endpunkt schickt. Die Methode plain sendet den Verifier selbst als Challenge und sollte nicht verwendet werden.
PKCE wurde für mobile Apps entwickelt, in denen andere Apps Redirect-URIs abfangen könnten, verhindert aber auch das Einschleusen fremder Autorisierungscodes in Web-Apps; deshalb empfiehlt RFC 9700 es für jeden Client, und der Entwurf von OAuth 2.1 schreibt es vor. PKCE ersetzt nicht die Client-Authentifizierung bei vertraulichen Clients, und der Autorisierungsserver muss Token-Anfragen ablehnen, denen der Verifier fehlt, wenn eine Challenge gesendet wurde.