← all tools

phpass password hash generator

Legacy ≤6.7 · phpass Modern 6.8+ · bcrypt

Portable phpass $P$ hashes, WordPress's password format through 6.7. On 6.8+? use the modern generator — it produces a different, incompatible format.

Legacy phpass hash · $P$

Paste into the user_pass column of wp_users.

When you actually need phpass

Since WordPress 6.8, $P$ is no longer the default — Core writes bcrypt $wp$2y$ hashes instead. This generator still matters for three real cases: an installation still running 6.7 or earlier, a plugin or integration that verifies phpass directly, and migration or recovery procedures that explicitly call for a portable hash. Outside those, use the modern generator — it matches what a current WordPress site actually creates.

Quick answers

Is $P$ still accepted on WordPress 6.8 and later?

Yes. WordPress verifies phpass hashes on any version and rehashes the account to $wp$2y$ automatically the next time that user logs in successfully. You do not need to convert existing hashes by hand.

How is this different from a plain MD5 hash?

phpass runs 8,192 rounds of salted MD5 rather than one, which makes brute-forcing meaningfully slower. It is still weaker than bcrypt, which is why 6.8 replaced it as the default.

Will a $P$ hash work if I paste it into a WordPress 6.8+ database?

Yes — WordPress 6.8+ still verifies phpass hashes for backward compatibility. It only stops accepting them if you roll back below the version that introduced phpass support, which no supported release does.