Client-side password hashing is the practice of hashing a password in the user's browser or app before it is sent to a server. The server then stores or verifies the resulting hash rather than the cleartext password, although the original secret may still be exposed to malware, scripts or interception before hashing.
How Client-Side Password Hashing Works
Client-side password hashing moves part of the password-handling process into the browser or application before the secret reaches the server. The server receives a derived value instead of cleartext, but that does not make the password safe by itself, because the original input still exists in the client runtime and can be exposed before hashing.
In practice, the client computes the hash with a chosen algorithm and any parameters or salt handling built into the design. That can reduce direct server-side exposure, but it also means the security of the scheme now depends on the integrity of the client code, the page or app delivery path, and the exact way the resulting value is used on the server.
Why Client-Side Hashing Is Not a Password Protection Strategy on Its Own
Client-side hashing is often misunderstood as a substitute for secure password storage or transport protections. It is not. If an attacker can run scripts in the page, tamper with the app, or observe the password before hashing, they can still capture the secret or the derived value and reuse it.
The better mental model is that client-side hashing changes where the first derivation happens, not whether the password must still be protected end to end. The server still needs strong password storage design, and the client still needs strong transport security and script integrity.
Hashing Guide is the best starting point for the underlying hash properties, while Password Hashing and Key Derivation Guide explains why password hashing needs dedicated KDFs rather than general-purpose hashes.
Where It Fits in Password and Authentication Design
Client-side hashing sits inside a broader authentication design, not outside it. If the browser simply hashes a weak password once and sends the result, the derived value can become a reusable bearer secret unless the protocol adds freshness, challenge-response, or another binding mechanism.
That is why modern password guidance usually focuses on making passwords hard to guess, protecting them at rest on the server, and using stronger authentication controls such as password managers and phishing-resistant authentication where possible. Client-side hashing may be one implementation choice, but it does not remove the need for those controls.
Password Security and Password Manager Guide helps place password handling in the wider control set, and Password Policy Template is useful where policy decisions affect password length, compromise response and privileged or service-account handling.
Common Implementation Pitfalls
The main failure modes are predictable: weak client code, insecure delivery of JavaScript or app updates, reusable hashes, poor salt handling, and false confidence that hashing in the browser prevents interception. If the page is compromised, the attacker can often access the password before hashing or alter the code to exfiltrate both the input and the derived value.
Another pitfall is treating the hashed value as if it were harmless. If that value is accepted repeatedly without replay protections, the attacker may be able to reuse it exactly as they would reuse a password. In that sense, the hashed value can become the new secret.
For cryptographic context, OWASP Top 10 A04 Guide is relevant because weak cryptographic handling and poor parameter choices often create the same exposure class that client-side hashing was meant to reduce.
Risk and Threat Considerations
Client-side password hashing creates a false sense of protection when the browser, page, or app delivery layer is already exposed. The risk is not just weak storage, but password theft before hashing, script injection that captures the original secret, and replay of the derived value as an authentication credential.
Failure mechanism: An attacker who controls or influences the client runtime can read the password before hashing, replace the hashing routine, or steal the resulting hash and reuse it where the server treats it as a login secret.
Impact: Account takeover can occur even though the server never saw cleartext, and compromise may persist until the password or derived credential is replaced and any related sessions are invalidated.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
NIST SP 800-53 Rev 5 and OWASP ASVS set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | IA-5 — Authenticator Management | Client-side hashing changes how password-derived authenticators are handled. |
| IA-2 — Identification and Authentication (Organizational Users) | The term affects how users prove identity before access is granted. | |
| IA-9 — Service Identification and Authentication | Replayable derived secrets can function like service or application authenticators. | |
| Recommendation — Manage password-derived authenticators with secure lifecycle, storage, and replacement rules. Require strong user authentication controls that do not rely on client-side hashing alone. Use authenticated, non-replayable authentication mechanisms for client-server exchanges. | ||
| OWASP ASVS | V6 — Authentication | Client-side hashing is an authentication design choice that affects password handling and login flow. |
| V11 — Cryptography | The term depends on safe selection and use of hashing and key-derivation mechanisms. | |
| Recommendation — Verify the authentication design does not expose reusable secrets or weaken login assurance. Use appropriate cryptographic primitives and parameters for password-related processing. | ||
Practitioner Guidance
Why practitioners should care: Client-side hashing should be treated as one layer in a broader authentication design, not as a substitute for secure transport, secure client delivery, or proper server-side password handling. If the client code can be altered, the protection can disappear entirely.
What to watch for: Review whether the implementation depends on a stable, trusted client runtime and whether the derived value is replayable. If the answer is yes, treat the scheme as credential-bearing material that needs the same care as a password or token.
Practitioner takeaway: Use client-side hashing only when it fits a clearly defined protocol design, and do not let it replace server-side hashing, strong transport protections, or compromise-resistant authentication choices.
Related resources from NHI Mgmt Group
- Why is a client-side secret more protective than relying on stronger password hashing alone?
- Why does stronger client-side authentication matter when users unlock a password manager on Windows?
- How should security teams choose a password hashing algorithm for modern applications?
- How do teams know whether password hashing is actually strong enough?
Deepen Your Knowledge
Free weekly newsletter
Subscribe to the NHI & AI Identity Journal
The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.
Bonus 33% off our NHI Course when you subscribe.
Reviewed and updated by the NHIMG editorial team on November 2, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org