SecLists: 9 Smart Wordlists for Safer Web Recon
SecLists is a collection of wordlists used for security assessments, including discovering web paths, files, subdomains and other possible inputs. The smartest list is not necessarily the largest. This guide explains nine verified choices for safer web reconnaissance, how to install the collection on Kali Linux, and how to select a list that matches an explicitly authorized test. You will learn to check a filename before using it, estimate the requests it can generate, and verify findings rather than treating every response as a vulnerability.
The collection is data, not a scanner: it does not send HTTP requests by itself. Tools such as Feroxbuster, Gobuster and FFUF read a wordlist and decide what requests to make. That separation matters. A good list still becomes a bad idea when fed into a recursive scanner at high speed against a service you do not control.
Every practical example here belongs on a disposable local web application or another system where you have written permission. I do not claim to have benchmarked these nine lists in my own lab; the suggestions are based on the upstream file structure, tool behavior and a cautious test methodology.
| Your goal | Good starting list | Reason to choose it |
|---|---|---|
| Small path baseline | common.txt | Recognizable web candidates |
| Directory-focused review | raft-small-directories.txt | More focused path names |
| Known API in your lab | common-api-endpoints-mazen160.txt | Endpoint-themed candidates |
| Owned DNS zone | subdomains-top1million-5000.txt | DNS rather than URL discovery |
Key Takeaways
- SecLists is input data: it never grants authority to test a target or performs a scan on its own.
- Start with five words: establish a known good baseline before moving to a packaged list.
- Choose by request type: directory, file, API and DNS lists solve different questions.
- Size is only one control: recursion, extensions, concurrency and redirects may multiply traffic.
- Verify the evidence: a found path is not automatically an exposed secret or a security weakness.
Before the Nine Lists: Install and Inspect SecLists
The official Kali package installs SecLists under /usr/share/seclists/. Downloading the whole package requires considerably more space than a tiny custom wordlist. In a disposable Kali VM, confirm you have enough disk space before installing. On Parrot OS, verify package availability in your configured repositories instead of assuming the Kali path or package version is identical.
apt-cache policy seclists
sudo apt update
sudo apt install seclists
ls -ld /usr/share/seclists/Discovery/Web-Content
ls -ld /usr/share/seclists/Discovery/DNS
The official Kali Linux website provides distribution package information. The upstream collection is maintained in the SecLists repository, which also describes direct Git installation. I recommend the packaged route for a beginner Kali exercise because it is easy to inspect and update through the distribution’s normal workflow.
If apt-cache policy seclists reports no installable candidate on your system, stop and check the supported repository or upstream installation documentation. Do not download a mysterious archive because a forum post says it contains “the latest hacking lists.” A missing package is a packaging question, not a reason to bypass normal system trust checks.
A wordlist path is a file, not a command
Each file below is relative to the SecLists installation root. The collection changes over time, so confirm every example with test -f before citing or using it. You can view a few entries using head and count lines using wc -l. Avoid copying entries containing sensitive-looking strings into a public article or screenshot.
test -f /usr/share/seclists/Discovery/Web-Content/common.txt
head -n 8 /usr/share/seclists/Discovery/Web-Content/common.txt
wc -l /usr/share/seclists/Discovery/Web-Content/common.txt
These are read-only local checks. A list’s number of lines is not necessarily the number of requests: comments, blank lines, duplicates, suffixes, recursion and tool-specific transformations can change that count. Treat a line count as a planning estimate, not a promise of traffic volume.
1. SecLists common.txt: The First Web Baseline
Discovery/Web-Content/common.txt is the accessible starting point for common web path candidates. Its value in this SecLists guide is simple: you can inspect a familiar group of names, compare them with your application, and decide whether expanding your coverage is actually necessary.
For a beginner lab, I would first create a page named /docs/ and check that a tiny custom wordlist can discover it. Then review the contents of common.txt and select a small, relevant subset. Even an ordinary web list can contain hundreds or thousands of candidates; your target’s load tolerance determines what is appropriate, not the enthusiasm of your terminal.
Don’t assume all candidates are directories. A name could refer to a file, endpoint, redirect or a fallback page. Record the method and response rather than prematurely classifying the hit as an interesting resource. If SecLists produces a response that you cannot explain, a manual browser or curl check comes before another scan.
2. quickhits.txt: A Focused First Pass
Discovery/Web-Content/quickhits.txt is a useful candidate list for a focused first look when you have an authorized web application and a reason to try common discovery paths. It is not a universal guarantee that you will find a sensitive file. Treat its entries as hypotheses about what might exist, not a checklist of vulnerabilities.
Inspect the file locally before using it. If the entries include paths with side effects or out-of-scope administration functions, remove those entries from a temporary copy rather than scanning blindly. A wordlist can include URLs or names unrelated to the technology your site uses.
The most useful habit here is to compare the questions. Are you checking whether five known pages exist, or hunting for every imaginable path? If your brief is the former, make a five-line list instead. A quick list should make the question smaller, not turn a limited assessment into a surprise crawl.

3. raft-small-directories.txt: Directory-Oriented Discovery
Discovery/Web-Content/raft-small-directories.txt contains candidates intended for directory discovery. RAFT lists are represented in different sizes and types in SecLists; the small directory variant is a more intentional choice than beginning with a combined collection. It is particularly useful when the target has an intentionally known nested route in your lab.
For example, a disposable app could serve a normal /assets/ directory and an unrelated /docs/ route. Choose a short subset that includes known names, run a single non-recursive check, and compare the results with the server access log. Only after you know the baseline should you consider depth-limited recursion.
This is where the Feroxbuster tutorial becomes a natural companion: it covers recursion, request limits and false positives. The present article stays focused on choosing an input file, not repeating those scanner commands.
Feroxbuster Tutorial: 9 Safe Steps for Recursive Web Recon
4. raft-small-files.txt: Look for Files, Not Folder Names
Discovery/Web-Content/raft-small-files.txt addresses a different intent. It supplies file-oriented names rather than just paths that look like directories. In an authorized application, a file name may reveal expected static content, an old documentation route or a deliberately planted test file. None of those observations is automatically a vulnerability.
Before using a file-oriented wordlist, inspect whether entries include extensions or suffixes. Adding a second collection of extensions to names that already contain them may generate redundant requests. The application could also respond with identical error pages for every missing file. Baseline a known nonexistent path so you can recognize that pattern.
Avoid targeting backup archives or data exports without a reason and permission. The objective is to identify exposure safely, not to retrieve confidential data from someone else’s deployment. If the application owner finds an unintended public file, restrict or remove it and retest that one path. More guessing is not a substitute for remediation.
5. raft-small-words.txt: Flexible Path Segments
Discovery/Web-Content/raft-small-words.txt offers candidate words rather than a guarantee of complete directory or filename coverage. The subtle distinction is useful: words can become path segments or be combined with extension rules by a scanner. But every extra transformation can expand the request count.
I would choose this category only when the intended test needs generic names that are not specifically directories or complete filenames. For a first experiment, keep the input small and avoid extensions. One variable at a time means you can tell whether a response came from the selected word, a suffix, or recursion.
Be aware of case sensitivity. A Linux-backed service may treat /Docs and /docs differently, while some other stacks behave otherwise. Do not automatically generate uppercase, lowercase and title-case permutations unless the scope and workload budget explicitly include them. A focused negative result is more honest than a misleading claim of exhaustive coverage.
6. DirBuster-2007 Small: Know the Legacy Source
The upstream SecLists repository includes Discovery/Web-Content/DirBuster-2007_directory-list-2.3-small.txt. That full filename matters: older guides may refer only to directory-list-2.3-small.txt, which is not the same confirmed path in the inspected current repository tree. Check what your installed package actually contains before pasting a path from another tutorial.
“Small” is relative to other lists in the family, not a declaration that a production scan is harmless. The collection also includes medium and large variants, but the right choice is governed by the site, scope, operational window and allowed request volume. Avoid replacing a carefully chosen list with a much bigger one when the first run finds nothing.
Some historical lists contain comments or entries that do not match your target technology. Inspect how the scanner handles those lines and whether the list needs preprocessing. A list filename is a clue to provenance, not a performance benchmark or guarantee that all entries remain relevant to modern applications.

7. common-api-endpoints-mazen160.txt: API-Specific Candidates
Discovery/Web-Content/common-api-endpoints-mazen160.txt is an API-themed list in SecLists. Use it only when an API is actually in your written testing scope and you understand how that API responds to unexpected paths. If you are reviewing a simple static site with no authorized API target, this is not a sensible list merely because it sounds advanced.
API routes can have different authentication, method requirements and side effects from ordinary pages. A basic GET request may discover that a route exists but tells you little about authorization or request validation. Do not send state-changing methods or replay real tokens as part of a beginner directory lesson. Use a test environment with synthetic data.
Begin with one known benign endpoint, such as a health or documentation route deliberately implemented in your own app, and a small custom input set. Compare the tool output with the service log. Only then consider a carefully chosen subset from this SecLists file. A forbidden or redirected endpoint is a prompt for interpretation, not permission to bypass access controls.
8. graphql.txt: Only When GraphQL Is in Scope
Discovery/Web-Content/graphql.txt is specialized for GraphQL-related web paths. It is a poor generic choice for every website, but it can be relevant to a GraphQL service you own or are contracted to review. If the stack does not use GraphQL, including this file just increases noise.
Keep this SecLists exercise limited to passive recognition of an intended, test-only endpoint path. GraphQL security assessment can involve authorization, introspection configuration, query complexity and data access: none of those issues is resolved or proven by a directory list alone. Avoid submitting intrusive queries to a live service as a side quest.
A useful result here is modest: confirm that the expected route in your lab is reachable, and record whether unknown paths return the same response. Follow a separate, appropriately scoped API testing methodology if your next question concerns authentication or access control. The list locates possible endpoints; it does not evaluate their security posture.

9. subdomains-top1million-5000.txt: DNS Is Not HTTP
Discovery/DNS/subdomains-top1million-5000.txt belongs to the DNS discovery part of SecLists. It contains candidate subdomain labels, not directories to append to a web URL. That distinction prevents a very common beginner mistake: feeding a DNS list into a directory scanner and wondering why the results make little sense.
This list should only be considered for an owned, explicitly authorized DNS zone. Subdomains can point to third-party infrastructure, and discovering a hostname does not authorize scanning the resulting server. Start by reviewing the names and comparing them with an inventory the owner already maintains. Passive sources and existing zone documentation often answer more than another active burst of DNS queries.
For an internally controlled DNS lab, you can demonstrate the concept with a few names such as www, dev and test drawn from your own fictional zone. An additional DNS enumeration tool is a separate activity with its own limits; this tutorial intentionally does not turn the DNS list into an uncontrolled scanning recipe.

How to Build a Lean SecLists Custom Wordlist
The simplest workflow begins with a new, tiny local file. You can include a few paths known to exist in your disposable web app and one deliberately nonexistent path. That gives you positive and negative controls without relying on a large repository list. Save the file in a private directory and record its exact contents.
umask 077
mkdir -p ~/seclists-lab
chmod 700 ~/seclists-lab
cd ~/seclists-lab
printf '%s\n' docs assets help status no-such-lab-path > starter-paths.txt
wc -l starter-paths.txt
cat starter-paths.txt
This command writes five local candidate names; it makes no network requests. The repository can suggest additional candidates later, but copying an entire giant list is not necessary to prove your scanner works. If the expected /docs/ page does not appear, investigate the target URL, container or VM network, response filtering and chosen candidate spelling before adding more words.
Keep your test data honest. Do not claim a server is safe because the list returned nothing, or compromised because a common path responded. Path discovery and vulnerability confirmation are different tasks. The OWASP Foundation homepage is a good starting point for established web security testing guidance, which treats identifying resources and verifying security weaknesses as separate work.
Use Your Small List With Feroxbuster, Gobuster or FFUF
After verifying the target is yours, use a simple baseline instead of launching a full SecLists directory list. The following examples assume the same disposable web app is listening on http://127.0.0.1:8080 as the scanner. In a separate VMware guest, replace loopback with the actual private IP of the app you control. Never substitute an arbitrary public website.
For Feroxbuster, keep recursion and link extraction off, use one thread and one concurrent scan, and cap the per-directory request rate. In this lab setting, the goal is to see how a five-entry input file becomes a small set of requests.
feroxbuster -u http://127.0.0.1:8080 \
-w ./starter-paths.txt -t 1 --scan-limit 1 \
--rate-limit 2 --time-limit 2m \
--no-recursion --dont-extract-links
For a single-pass Gobuster directory demonstration, use the small local list and one worker. Review your installed help for a suitable delay or rate-control option before increasing the input volume. The Gobuster guide covers its syntax and other enumeration modes in more depth.
gobuster dir -u http://127.0.0.1:8080 \
-w ./starter-paths.txt -t 1
Gobuster Command: 7 Proven Techniques for Web Recon
FFUF places the word candidate at a specific FUZZ position. Start with a private, deliberately controlled web route rather than a broad endpoint collection. The FFUF walkthrough examines response matching and filtering beyond this basic SecLists selection exercise.
ffuf -u http://127.0.0.1:8080/FUZZ \
-w ./starter-paths.txt -t 1 -rate 2 -maxtime 60
Interpret Results, Avoid False Positives and Stop Safely
A discovery result needs interpretation. A 200 response might be a legitimate page, a soft 404 or an authentication landing screen. A 301 might simply redirect to a canonical slash, while a 403 means the server denied access. None establishes exploitable exposure by itself. Compare the returned body, location header and known application behavior.
Request budgets are easy to underestimate. A wordlist’s length, extra extensions, recursive depth and concurrent scans can multiply total traffic. Some paths may initiate expensive application work even when the request uses GET. Pause the run if you see errors, repeated redirects or a new host outside the authorized boundary. Do not treat a scan’s “completed” label as authorization after the fact.
When your app returns the same response for nonexistent routes, create a negative control by requesting a made-up path once and noting its status and size. Only add filtering after you know what you would exclude. Document filters because they can hide real matches alongside noise. A wordlist does not decide whether a response is a false positive; that is your assessment and the scanner’s response-handling logic.
HackersGhost Note:
I prefer a list that answers one clearly written question. A server log with five understood requests tells me more than an overflowing result file I cannot explain later. The tool has no idea which paths you were actually allowed to test.
FFUF Tutorial for Beginners: 9 Practical Fuzzing Examples
Keep Your Evidence and Wordlists Reproducible
Write down the exact SecLists filename, its local path, package version or Git revision, and whether you filtered or trimmed the data. The same name may represent slightly different contents in a newer collection. If you are retesting a specific finding, keep the original wordlist copy or at least a checksum. A repeatable input matters more than a triumphant screenshot.
Distinguish three outcomes in your notes: a path was observed, it was manually verified in the authorized app, or it was confirmed to expose a security problem. Those labels prevent ordinary content discovery from turning into an exaggerated incident report. Never publish internal route inventories, session information or real data found during a private engagement.
If a discovered file is publicly accessible by mistake on your own system, the proper next step is to restrict access, review routing and permissions, assess whether secrets were exposed and retest the same route. The list filename may help you reproduce the discovery, but it is not a substitute for fixing the underlying exposure.
Final Thoughts: The Best SecLists Choice Is a Small, Relevant One
You do not need every file in SecLists to complete a useful web reconnaissance check. Start by identifying what belongs to the application, choose a list whose entries match that question, and set a workload budget before scanning. The nine choices above are starting points, not a ranking of the most powerful wordlists.
Your first practical step is to make a five-line lab list and verify one known directory in a disposable local app. Only then select a matching SecLists file and repeat the bounded check. Keep the results, the limitations and the next fix in the same report. Better input decisions lead to better evidence—and fewer unwanted surprises for the server owner.

SecLists FAQ
What is SecLists used for?
SecLists is a collection of candidate names and test inputs for security assessments. It does not scan targets by itself. Tools use its data for tasks such as authorized directory discovery, DNS enumeration and other carefully scoped checks.
How do I install the collection on Kali Linux?
Kali provides a seclists package through its normal package manager. Check availability with apt-cache policy seclists and install using sudo apt install seclists. On Parrot OS, verify repository support instead of assuming the same version or package structure.
Where are the installed wordlists stored?
The Kali package documents /usr/share/seclists/ as the installation root, with folders such as Discovery/Web-Content and Discovery/DNS. A Git checkout uses its own directory. Verify any specific file with test -f before passing it to a tool.
Which SecLists wordlist should beginners choose?
Begin with a five-line custom list against a disposable application you control. Once you understand the responses, common.txt or a selected small directory list can be a sensible next step. The scope and application matter more than list popularity.
Can I use these lists with Gobuster, Feroxbuster and FFUF?
Yes. All three can read wordlists, but their request patterns and filters differ. Feroxbuster can recurse, Gobuster offers directory and other discovery modes, and FFUF places candidates at a FUZZ position. Check the installed tool’s help and keep traffic limits in place.
Why does SecLists report many hits on a nonexistent page?
The scanner may be receiving a catch-all page, login redirect or other soft-404 response. Compare a deliberately nonexistent path with an expected real route, then apply only evidence-based filters. A wordlist cannot prove which responses are genuine resources.
Does a bigger wordlist find every hidden path?
No. A bigger list increases candidate coverage and potential traffic but cannot guarantee complete discovery. Unpredictable names, authentication requirements, filters, app logic and out-of-scope resources all limit conclusions. Report what you tested, not what you wish you had proved.
Web Security & Credential Testing Cluster
- SecLists: 9 Smart Wordlists for Safer Web Recon 》》
- Feroxbuster Tutorial: 9 Safe Steps for Recursive Web Recon 》》
- Nuclei Scanner Tutorial: 9 Powerful Steps for Safe Vulnerability Testing 》》
- Remote File Inclusion: 7 Smart Checks for RFI Flaws 》》
- IDOR Vulnerability: 7 Sneaky Access Control Flaws 》》
- SQL Injection Explained: 7 Essential Safe Lab Lessons 》
- WordPress Hardening: 9 Real Fixes That Took Me From D to A+ 》
- Burp Suite Proxy Tutorial: Intercept in 7 Easy Steps 》
- 4 Password Hashing Algorithms Explained Clearly 》
- Dictionary Attack vs Brute Force: 7 Passwords Tested 》
- How to Use Hashcat: 7 Powerful Password Audit Steps 》
- John the Ripper Password Cracking: 7 Smart Lab Steps 》
- FFUF Tutorial for Beginners: 9 Practical Fuzzing Examples 》》
- Password Cracking: 7 Reasons Weak Passwords Fail Fast 》
- Gobuster Tutorial for Beginners: Find Hidden Directories Safely 》
- Hydra Kali Linux: 7 Practical Tests on Parrot OS Too 》》
- Nikto Web Server Scanner: 7 Useful Checks for Beginners 》
- How to Use Burp Suite Without 7 Common Beginner Mistakes 》
Some links in this article are affiliate links. If you use them, I may earn a small commission — at no extra cost to you. I only recommend tools I’ve actually tested inside my own cybersecurity lab. Read the full disclaimer.
In many cases, these links unlock better deals than you’ll find on your own.
No paid reviews. No sponsored opinions. Just real testing and real setups.
If you decide to use them, you’re not just getting a discount — you’re helping keep this lab running.

