PKCE Generator
Generate a verifier, derive the challenge, and keep the bytes exact for OAuth flows
S256 is the common modern default. plain uses the verifier as-is.PKCE binds an authorization code flow to a client-generated secret. You send the derived challenge during the authorization request and later send the original verifier when you redeem the code.
- Generate a new verifier or paste the exact verifier your app already stored.
- Keep
S256selected unless a provider explicitly requiresplain. - Click Update challenge to derive the final challenge value.
- Copy the verifier and challenge separately so the later token exchange uses the exact same verifier bytes.
plain reuses the verifier as the challenge. S256 hashes the verifier bytes with SHA-256 and then Base64URL-encodes the digest without padding. That extra derivation step is where most PKCE copy-and-encoding mistakes happen.
Can I regenerate the verifier from the challenge later?
No. The verifier is the original secret. The challenge is a derived value, not a reversible encoding.
Why validate the verifier length here?
Because many “invalid verifier” errors come from strings outside the RFC 7636 bounds or from characters outside the allowed set.
Does this page send anything to a server?
No. PKCE verifier generation, SHA-256 hashing, and Base64URL output all stay in your browser.