Argon2 Password Hash Format Explorer
Understand the Argon2 PHC string format, parameter meanings (time cost, memory cost, parallelism), and how Argon2 compares to bcrypt, scrypt, and PBKDF2. Educational tool with simulated hash output.
Updated
Argon2 Password Hash Format Explorer
Understand the Argon2 PHC string format, parameter meanings, and how Argon2 compares to bcrypt, scrypt, and PBKDF2. Educational tool with simulated hash output.
Why Argon2id is Recommended
Argon2id won the Password Hashing Competition (PHC) in 2015 and is the current OWASP recommendation. Unlike bcrypt (limited to 72 bytes, 1999-era design) and PBKDF2 (not memory-hard), Argon2id is memory-hard, time-adjustable, and parallelism-configurable — making it exponentially more expensive for attackers using GPUs or ASICs.
Hash Parameters
Hybrid variant combining data-independent (argon2i) and data-dependent (argon2d) memory access patterns. Resistant to both side-channel and GPU attacks. Recommended by OWASP and RFC 9106.
Iterations
Memory KiB
Threads
t (time cost): Number of iterations. Higher = slower for attacker AND user.
m (memory cost): Memory in KiB. 64 MB required per hash attempt. Stops GPU parallelism.
p (parallelism): Number of parallel lanes. Should match server CPU threads.
★ = OWASP recommended minimum for user authentication
Configure parameters and click Generate to see the Argon2 PHC string format.
Algorithm Comparison: Argon2 vs bcrypt vs scrypt vs PBKDF2
| Algorithm | Memory-Hard | GPU-Resistant | Side-Channel Safe | Year | Use Today? |
|---|---|---|---|---|---|
| Argon2id★ Best | ✅ | ✅ | ✅ | 2015 | Yes |
| bcrypt | ❌ | ❌ | ✅ | 1999 | Legacy |
| scrypt | ✅ | ✅ | ⚠️ | 2009 | Legacy |
| PBKDF2 | ❌ | ❌ | ✅ | 2000 | Legacy |
| MD5 (never) | ❌ | ❌ | ⚠️ | 1992 | Never |
Real Implementation Note
This tool demonstrates the PHC string format for educational purposes. The hashes shown are deterministic simulations — not cryptographically secure outputs.
For production use: server-side — use the argon2 npm package (Node.js) or language-native bindings. Client-side — use argon2-browser which wraps the reference C implementation via WebAssembly.
Frequently Asked Questions
Are the hashes cryptographically secure?
No — the hashes shown are deterministic simulations for educational purposes. For real password hashing use the argon2 npm package server-side or argon2-browser client-side (WebAssembly).
Why is Argon2id recommended over bcrypt?
Argon2id is memory-hard, GPU-resistant, and configurable — making brute-force attacks orders of magnitude more expensive. bcrypt is limited to 72-byte passwords and uses a 1999-era design that lacks memory hardness.
What is the PHC string format?
PHC (Password Hashing Competition) string format encodes all hash parameters in a single portable string: $algorithm$version$parameters$salt$hash.
Is it free?
Yes, completely free.
Is my data safe with this tool?
Absolutely. The Argon2 Password Hash Format Explorer processes everything client-side in your browser. No data is uploaded to or stored on any server. Your content remains private on your device at all times.
Does the Argon2 Password Hash Format Explorer work on mobile devices?
Yes, the Argon2 Password Hash Format Explorer is fully responsive and works on smartphones and tablets. You can use it on any device with a modern web browser -- no app download required.
Do I need to create an account to use this tool?
No account or registration is needed. Simply open the Argon2 Password Hash Format Explorer in your browser and start using it immediately. There are no sign-up walls or usage restrictions.
How do I use the Argon2 Password Hash Format Explorer?
Simply enter your input in the provided field, adjust any settings to your preference, and the tool will process it instantly. You can then copy the result to your clipboard or download it.
Which browsers are supported?
The Argon2 Password Hash Format Explorer works in all modern browsers including Chrome, Firefox, Safari, Edge, and Opera. For the best experience, use the latest version of your preferred browser.
What is the difference between Argon2id, Argon2i, and Argon2d?
The three Argon2 variants differ only in how they access memory. Argon2d uses data-dependent access, which gives the strongest resistance to GPU and ASIC cracking but leaks timing information, making it unsafe against side-channel attacks. Argon2i uses data-independent access, defeating side-channel timing attacks but offering weaker resistance to dedicated cracking hardware. Argon2id is a hybrid: it runs the first pass in Argon2i mode and the rest in Argon2d mode, so it gets meaningful protection against both threats at once. That balance is why OWASP and RFC 9106 recommend Argon2id as the default for password storage, with Argon2d reserved for cases like cryptocurrency where side channels are not a concern. Switch between all three in the explorer to see how only the algorithm label in the PHC string changes.
What do the t, m, and p parameters mean in an Argon2 hash?
Inside a PHC string you will see a segment like m=65536,t=3,p=4, and each letter is a tuning knob. The t value is time cost, the number of passes Argon2 makes over memory; raising it linearly increases how long every guess takes for both attacker and user. The m value is memory cost in kibibytes, so 65536 means 64 MB of RAM is needed per hash; this is what makes Argon2 memory-hard and starves cheap parallel cracking rigs of bandwidth. The p value is parallelism, the number of independent lanes, ideally matched to your server's CPU threads. OWASP's interactive-login baseline is t=3, m=64MB, p=4, marked with a star in the tool. Adjust each dropdown in the explorer to watch the parameter segment of the PHC string update live.
How do I choose good Argon2 cost parameters for my server?
Tuning Argon2 is about spending as much of an attacker's resources as possible without slowing real logins to a crawl. A practical rule is to first set memory cost as high as your hardware can spare, since memory hardness is Argon2's main defense; 64 MB is the recommended floor for interactive logins, and 128 or 256 MB is reasonable on a well-provisioned server. Set parallelism to roughly match your available CPU threads. Then raise the time cost until a single hash takes about half a second on your production machine, which keeps brute-force expensive while staying responsive. Because every parameter is embedded in the PHC string, you can raise these values later and rehash passwords at next login with no database migration. Use the explorer to preview different parameter combinations and the exact string they produce before committing to a configuration.
What does v=19 mean in an Argon2 PHC string?
The v=19 segment is the Argon2 algorithm version, not a parameter you tune. It refers to Argon2 version 1.3, whose hexadecimal identifier 0x13 equals 19 in decimal. Version 1.3 fixed a weakness present in the original 1.0 design, and it has been the standard ever since, so nearly every modern library emits v=19. Recording the version inside the hash matters because it lets a verifier know exactly which algorithm revision produced a stored password, so older hashes can still be checked correctly even after libraries update. If you ever encounter a hash with no version field, it predates this convention and was likely made with version 1.0. The explorer always outputs v=19 in its breakdown so you can see where the version sits between the algorithm name and the cost parameters.
Why does Argon2 include a salt, and where is it stored?
A salt is a unique random value mixed into each password before hashing, and it appears as the second-to-last base64 segment of the PHC string. Its job is to guarantee that two users with the same password produce completely different hashes, which defeats precomputed rainbow tables and stops an attacker from cracking many accounts at once. Because the salt only needs to be unique, not secret, it is stored in plain sight right inside the hash string itself rather than in a separate column. When someone logs in, the verifier reads the salt back out of the stored string, re-runs Argon2 with it and the embedded cost parameters, and compares the result. This self-contained design means one database field holds everything needed to verify a login. Generate a string in the explorer to see the salt highlighted as its own color-coded part.
Embed This Tool
Add a free, live version of this widget to your own website or blog post — it runs entirely in your visitors' browsers, with a credit link back to The Toolbox.
<iframe src="https://getthetoolbox.com/embed/argon2-gen" title="Argon2 Password Hash Format Explorer — The Toolbox" width="100%" height="280" style="max-width:480px;border:1px solid #e2e8f0;border-radius:12px" loading="lazy"></iframe>
<p style="font-size:12px;margin:4px 0 0"><a href="https://getthetoolbox.com/utility-tools/argon2-gen?utm_source=embed&utm_medium=widget" target="_blank" rel="noopener">Free Argon2 Password Hash Format Explorer</a> by The Toolbox</p>Related Tools
Free Secure Password Generator
Generate secure, random passwords with customizable options. Free, fast, and works entirely in your browser with no sign-up required.
Free UUID/GUID Generator
Generate universally unique identifiers (UUIDs/GUIDs). Free, fast, and works entirely in your browser with no sign-up required.
Free QR Code Generator Online
Create QR codes for URLs, text, WiFi, and contacts. Customize colors, size, and error correction. Free, private — runs in your browser, no sign-up.
Free JSON Formatter & Validator
Format, validate, and beautify JSON data with syntax highlighting and error detection. Free, fast, and works entirely in your browser with no sign-up required.
About the Argon2 Password Hash Format Explorer
The Argon2 Password Hash Format Explorer is a free, browser-based teaching tool that shows you exactly how an Argon2 password hash is structured and what each of its parameters does. Type a sample password, pick a variant and cost settings, and the explorer assembles the corresponding PHC (Password Hashing Competition) string and breaks it into its labeled parts. It is built for developers, security students, and anyone configuring authentication who wants to understand Argon2 before wiring it into a real system.
One thing to be clear about up front: the hash bytes shown are deterministic simulations generated locally, not cryptographically secure output. The point of the explorer is the format and the parameters, not production hashing. Everything runs client-side in your browser — the password you type is never sent to a server, and there is no sign-up.
What the PHC string format encodes
Argon2 outputs a single self-describing string using the PHC format, so a database only needs one column to store everything needed to verify a login. The structure is:
$argon2id$v=19$m=65536,t=3,p=4$<salt>$<hash>
The explorer color-codes each segment so you can see what it carries:
- Algorithm — the variant, e.g.
argon2id. - Version —
v=19, which is Argon2 version 1.3 (0x13 = 19). - Parameters — memory (
m, in KiB), time (t), and parallelism (p). - Salt — a unique random value, base64-encoded, that defeats rainbow tables.
- Hash — the derived key, also base64-encoded.
Because all parameters travel inside the string, a verifier can re-derive the hash and rehash older passwords when you raise the cost settings, with no schema migration.
Choosing a variant and tuning the cost parameters
Argon2 comes in three variants, and the explorer explains the trade-off of each:
- Argon2id — a hybrid of the other two, resistant to both GPU and side-channel attacks. It is the default here and the variant recommended by OWASP and RFC 9106.
- Argon2i — data-independent memory access, strongest against side-channel timing attacks.
- Argon2d — data-dependent access for maximum GPU resistance, but not generally advised for password storage.
The three cost knobs are where Argon2's strength is configured. The explorer marks OWASP's recommended starting points for interactive login (the ★ values):
- Time cost (t) — the number of iterations. Default 3. Higher values cost the attacker more per guess, but also slow legitimate logins.
- Memory cost (m) — RAM consumed per hash, default 64 MB (65536 KiB). This is what makes Argon2 memory-hard: cheap, parallel GPU and ASIC cracking rigs run out of memory bandwidth long before they run out of compute.
- Parallelism (p) — the number of lanes, default 4, ideally matched to your server's CPU threads.
A practical tuning rule: pick the highest memory you can afford, then raise time cost until a single hash takes roughly half a second on your production hardware.
Why Argon2 matters and how it compares
Argon2id won the Password Hashing Competition in 2015 and is now the modern default for new applications. The explorer's comparison shows why it outranks older choices: bcrypt (1999) is not memory-hard and silently truncates passwords at 72 bytes; PBKDF2 (2000) is fast on GPUs and easily parallelized by attackers; scrypt (2009) is memory-hard but lacks Argon2id's side-channel hardening. Fast hashes like MD5 should never be used for passwords at all.
Use this explorer to learn the format, demo it to a team, or sanity-check a config before deployment. When you are ready for the real thing, reach for the argon2 npm package server-side, language-native bindings, or argon2-browser (a WebAssembly wrapper around the reference C implementation) in the browser — those produce genuine, verifiable hashes.