What Are Wordlists?

A wordlist (or password dictionary) is a plain-text file containing a collection of passwords — one per line. These lists are used by security tools to perform dictionary attacks, where each entry is tested as a potential password against a captured hash or login form.

Most wordlists are derived from real-world data breaches — when a company gets hacked, the stolen credentials eventually surface online. The most famous example is RockYou, a list of 14.3 million passwords leaked from the RockYou.com breach in 2009. Despite being over 15 years old, it remains the go-to starting point because people continue to use weak, predictable passwords. Wordlists are the fuel for tools like hashcat and WPA2 cracking with aircrack-ng — see the full Kali Linux toolkit for where they fit.

In 2024, a compilation called RockYou2024 appeared online containing nearly 10 billion entries aggregated from multiple breaches — though working with lists this large requires significant hardware and filtering.

⚠️ Legal disclaimer: Only use wordlists for password cracking on systems you own or have explicit written authorization to test. Unauthorized access to computer systems is illegal under the Computer Fraud and Abuse Act (CFAA) and equivalent laws worldwide. These tools and techniques are for authorized penetration testing and security research only.

Kali Linux Built-In Wordlists

Kali Linux ships with several wordlists pre-installed at /usr/share/wordlists/. You can see everything available by running:

Terminal
$ ls -la /usr/share/wordlists/ dirb -> /usr/share/dirb/wordlists dirbuster -> /usr/share/dirbuster/wordlists fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists john.lst -> /usr/share/john/password.lst metasploit -> /usr/share/metasploit-framework/data/wordlists nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst rockyou.txt.gz seclists -> /usr/share/seclists wfuzz -> /usr/share/wfuzz/wordlist

The most important one is rockyou.txt.gz. It ships compressed to save disk space on live-boot environments. You need to decompress it before use:

Terminal
# Decompress RockYou $ sudo gunzip /usr/share/wordlists/rockyou.txt.gz # Verify — should be ~14.3 million lines $ wc -l /usr/share/wordlists/rockyou.txt 14344391 /usr/share/wordlists/rockyou.txt
💡 Tip: A common beginner mistake is pointing tools like hashcat or aircrack-ng at rockyou.txt.gz (the compressed file). This won't work — you must decompress it first with gunzip.

The Best Wordlists to Download

Here's a comparison of the most popular wordlists and where to get them:

WordlistSizeBest ForSource
Kennyvn WPA2 CollectionVariesWiFi WPA2 crackingGitHub
RockYou14.3M passwordsGeneral password cracking, WPA2Pre-installed on Kali
SecListsMultiple listsWeb app testing, fuzzing, passwordsapt install seclists
CrackStation1.5B passwordsHash cracking (large scale)crackstation.net
Probable WordlistsSorted by frequencyCommon passwords, ISP defaultsGitHub
WeakpassMulti-GBComprehensive breach dataweakpass.com

Installing SecLists

SecLists is the most comprehensive wordlist collection — categorized lists for passwords, usernames, URLs, fuzzing payloads, web shells, and more. It's maintained by Daniel Miessler and is the standard in the industry.

Terminal
# Install SecLists via apt (recommended) $ sudo apt update && sudo apt install seclists -y # Browse the password lists $ ls /usr/share/seclists/Passwords/ Common-Credentials/ Leaked-Databases/ Default-Credentials/ darkweb2017-top10000.txt xato-net-10-million-passwords.txt ...

Downloading the Kennyvn WPA2 Collection

I've curated a collection of wordlists specifically compiled for WPA2 WiFi cracking. They're sorted alphabetically and split to fit GitHub's upload limits:

Terminal
# Clone the repo $ git clone https://github.com/kennyn510/wpa2-wordlists.git # Navigate to a wordlist directory $ cd wpa2-wordlists/Wordlists/Crackdown2016 # Decompress any .gz files $ gunzip *.gz # Merge all text files into one $ cat *.txt > full-wordlist.txt

How To Use Wordlists with Popular Tools

How to use wordlists with the three most common password cracking tools on Kali Linux:

aircrack-ng (WPA2 WiFi cracking)

Terminal — aircrack-ng
# Crack a captured WPA2 handshake $ aircrack-ng handshake.cap -w /usr/share/wordlists/rockyou.txt

Before aircrack-ng can do anything, you need a captured WPA2 handshake — and capturing one requires a wireless card that supports monitor mode and packet injection. Not every adapter does. If yours doesn't, see my guide to the best wireless adapters for Kali Linux. For the complete capture-to-crack process, follow the full WPA2 cracking walkthrough with aircrack-ng and hashcat.

hashcat (GPU-accelerated hash cracking)

Terminal — hashcat
# Crack MD5 hashes with RockYou $ hashcat -m 0 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt # Use rules for smarter mutations (adds numbers, symbols, case changes) $ hashcat -m 0 -a 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
💡 Pro tip: Instead of using a massive 10GB wordlist, use a smaller curated list with hashcat rules (-r best64.rule). Rules automatically generate variations like password → Password1!, p@ssword, password2026, etc. This is far more effective than brute-forcing with a raw list, and it keeps GPU memory usage manageable.

hydra (online brute-force)

Terminal — hydra
# Brute-force SSH login $ hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100 # Brute-force web form login $ hydra -l admin -P /usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt \ 192.168.1.100 http-post-form "/login:user=^USER^&pass=^PASS^:Invalid"
ℹ️ Important: Dictionary attacks only work if the target password is in the wordlist. A strong, unique password like 6VlgB@.|dI11@o5JG3LH! won't appear in any wordlist. In those cases, you'd need a brute-force attack — which can take millions of years for complex passwords. This is why strong, random passwords are still the best defense.

Generating Custom Wordlists

Generic wordlists are a starting point, but the most effective wordlists are custom-built for your target. Kali Linux includes several tools for this.

Crunch — pattern-based generation

Crunch generates wordlists based on character sets and length constraints. It's pre-installed on Kali.

Terminal — Crunch
# Generate all 8-character numeric passwords $ crunch 8 8 0123456789 -o numeric-8char.txt # Generate passwords matching pattern: Company + 4 digits $ crunch 11 11 -t Company%%%% -o company-pins.txt # Use a charset (lowercase + digits, 6-8 chars) $ crunch 6 8 abcdefghijklmnopqrstuvwxyz0123456789 -o custom.txt
⚠️ Warning: Crunch can generate enormous files. A 1-12 character alphanumeric list can exceed several petabytes. Always check the estimated size crunch displays before confirming. Start small and use specific patterns.

CeWL — scrape words from a target website

CeWL (Custom Word List generator) spiders a target website and builds a wordlist from the words it finds. This is highly effective because people often use company names, project names, and industry jargon in their passwords.

Terminal — CeWL
# Spider a website, min word length 5, depth 2 $ cewl -w target-words.txt -d 2 -m 5 https://www.target-company.com # Include numbers in words $ cewl --with-numbers -w target-words.txt https://www.target-company.com

CUPP — profile-based password generation

CUPP (Common User Passwords Profiler) generates a targeted wordlist based on personal information about a specific individual — name, birthday, spouse, pet, etc. It exploits the fact that people use predictable password patterns based on their personal lives.

Terminal — CUPP
# Install CUPP $ git clone https://github.com/Mebus/cupp.git && cd cupp # Run interactive mode (asks questions about the target) $ python3 cupp.py -i

Cleaning & Manipulating Wordlists

Raw wordlists often contain duplicates, blank lines, and entries that are too short to be valid passwords. Here are essential bash one-liners for cleaning them up:

Terminal — Wordlist manipulation
# Remove duplicate entries $ awk '!(count[$0]++)' old.txt > new.txt # Sort alphabetically and remove duplicates $ sort old.txt | uniq > sorted.txt # Sort by password length (shortest first) $ awk '{print length, $0}' old.txt | sort -n | cut -d " " -f2- > by-length.txt # Remove blank lines $ egrep -v "^[[:space:]]*$" old.txt > clean.txt # Remove entries shorter than 8 characters (WPA2 minimum) $ awk 'length >= 8' old.txt > min8.txt # Merge multiple wordlists into one $ cat file1.txt file2.txt file3.txt > combined.txt # Merge, deduplicate, and sort $ cat *.txt | sort -u > master.txt # Remove non-ASCII characters $ iconv -f utf-8 -t ascii//TRANSLIT old.txt > ascii-only.txt 2>/dev/null
💡 WPA2 tip: WPA2 passwords must be between 8 and 63 characters. Filter your wordlists with awk 'length >= 8 && length <= 63' to remove entries that can't possibly be valid — this dramatically reduces cracking time.

Managing Wordlists with wordlistctl

wordlistctl is a Kali tool that lets you search, download, and manage wordlists from multiple sources — all from one command:

Terminal — wordlistctl
# Install wordlistctl $ sudo apt install wordlistctl # Search for wordlists by name $ wordlistctl search rockyou # Download a specific wordlist $ wordlistctl fetch rockyou -d ~/wordlists

Frequently Asked Questions

Which wordlist should I use for WPA2 WiFi cracking?

Start with rockyou.txt — it's the industry standard and cracks a surprising number of weak WiFi passwords. If that doesn't work, try the Probable Wordlists repository or generate a targeted list with CeWL based on the target network's name and location. Remember to filter out entries shorter than 8 characters since WPA2 requires at least 8.

What's the difference between a dictionary attack and a brute-force attack?

A dictionary attack tests each word in a wordlist as a potential password. A brute-force attack tries every possible combination of characters. Dictionary attacks are much faster but only work if the password is in the list. Brute-force is thorough but exponentially slower — an 8-character alphanumeric password has over 2.8 trillion combinations.

Why didn't the wordlist crack the password?

Because the target password isn't in the list. No wordlist contains every possible password. If the target uses a strong, unique password with random characters, no dictionary attack will work. Try using hashcat rules (-r best64.rule) to generate mutations of your wordlist, or build a targeted list with CeWL/CUPP.

How do hashcat rules make wordlists more effective?

Rules tell hashcat to automatically generate variations of each word in the list — like appending numbers (password123), capitalizing (Password), replacing characters (p@ssword), and adding years (password2026). The best64.rule file generates 64 variations per word, turning a 14M-entry list into 900M+ candidates without needing a larger file.

Do I need a GPU for password cracking?

For hash cracking with hashcat, a GPU is strongly recommended — a modern GPU like the RTX 4090 can test billions of hashes per second. For online attacks with hydra (SSH, web forms), CPU is fine since you're limited by network speed. For WPA2 with aircrack-ng, a GPU significantly speeds up the process.

Where does Kali store wordlists?

The default location is /usr/share/wordlists/. RockYou is at /usr/share/wordlists/rockyou.txt.gz (needs decompressing). SecLists installs to /usr/share/seclists/. Other tool-specific lists are scattered across /usr/share/ and symlinked from the wordlists directory.