md5.me / crypto toolkit
0 network calls since load

Hash, generate, and rotate keys — in your browser.
Not on our server.

A small, fast, client-side toolkit for WordPress admins and sysadmins. Hashing, password generation, and WordPress salts run entirely in your tab. No requests, no logs, no telemetry.

runtimebrowser only
requests on generate0
storagenone
trackingprivacy-first analytics

MD5 hash generator

// 128-bit · legacy file integrity, interop, never passwords
output · md5
// hash output appears here

What MD5 is good for

MD5 is a 128-bit cryptographic hash designed by Ronald Rivest in 1991. It still has legitimate uses: file integrity checks, ETags, deduplication, cache keys, fingerprinting non-secret data, and interop with legacy systems that demand it.

Don't use MD5 for passwords

MD5 is broken for security purposes — collisions are trivial to generate. Modern WordPress uses bcrypt (and phpass on older installs), not raw MD5. If you're hashing a password, switch to the bcrypt / phpass tab.

SHA-1 & SHA-256

// SubtleCrypto · runs natively in your browser
output · sha-256
// hash output appears here

When to use SHA

SHA-256 is the default modern fingerprint hash — file checksums, content-addressing, JWTs, signatures. SHA-1 is deprecated for security but still appears in legacy systems (git, old TLS). Like MD5, none of these are password hashes on their own.

How this works

This page calls window.crypto.subtle.digest() — the WebCrypto API built into your browser. The plaintext never leaves the tab.

bcrypt & phpass (WordPress)

// modern WP password hashes for direct DB injection
output · bcrypt
// hash output appears here

Which one do I want?

WordPress 6.8+ stores passwords as bcrypt ($2y$). Older sites use phpass ($P$). Both formats are accepted on read, so a fresh bcrypt hash works on any modern WP. Pick phpass only if you're building a fixture or testing a legacy install.

Hashing is slow on purpose

bcrypt at cost 10 takes ~50–100ms per hash; cost 12 is ~4× slower. That's the feature — it makes brute force expensive. Generation is synchronous and runs on this tab.

Password generator

// crypto.getRandomValues · cryptographically secure
output · passwords
// passwords appear here

Length beats complexity

Every extra character roughly doubles the brute-force work. A 20-character random password is overwhelmingly stronger than an 8-character one with three symbols. 16+ for normal accounts, 24+ for admin / root / cPanel.

Avoid look-alikes when typing matters

If a password will be transcribed by a human (server console, mobile keyboard), the "avoid look-alikes" option strips 1 l I 0 O o so nobody calls you at 2am about a "wrong password" that's actually a confused 1 vs l.

WordPress secret keys (salts)

// drop-in replacement for the SALT block in wp-config.php
output · wp-config.php block
// salt block appears here

What WP salts do

The eight constants — AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, and the four _SALT pairs — sign and encrypt WordPress auth cookies and nonces. Replace the entire block in wp-config.php; rotating them logs out every session instantly.

If you're rotating after a hack

Replacing salts is step one of incident response — it kicks the attacker out of any stolen session. You also need to: change the DB password, force-reset all admin passwords, audit users for unknown admins, and check active sessions and application passwords. SudoWP →

.htpasswd entry

// for protecting wp-login.php, wp-admin, or any nginx/Apache resource
output · .htpasswd line
// .htpasswd entry appears here

Use for wp-login brute-force protection

An .htpasswd in front of wp-login.php stops 99% of automated WordPress login attacks before PHP ever runs. Pair with fail2ban watching the auth log for serious traffic.

Drop in

Append the generated line to your existing .htpasswd, or save it as a new file. RunCloud users: add it via the "Basic Auth" panel under your web app, or reference it manually in your nginx config.

WordPress admin password reset SQL

// when you're locked out and need direct DB access
output · sql
// SQL UPDATE statement appears here

Run via phpMyAdmin or wp-cli

Paste the generated UPDATE in phpMyAdmin → SQL tab, or pipe it: wp db query "$(pbpaste)". The generated hash is bcrypt — accepted by every modern WP version.

Always back up first

This SQL writes directly to wp_users. mysqldump the database (or snapshot the VPS) before running anything. The query also clears user_activation_key as a precaution.

Copied to clipboard