SecLists wordlist archive represented by a security magnifying glass, shield and verified files.

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 goalGood starting listReason to choose it
Small path baselinecommon.txtRecognizable web candidates
Directory-focused reviewraft-small-directories.txtMore focused path names
Known API in your labcommon-api-endpoints-mazen160.txtEndpoint-themed candidates
Owned DNS zonesubdomains-top1million-5000.txtDNS 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.

Magnifying glass inspecting a folder and stacked documents for targeted web directory discovery.

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

My Feroxbuster guide shows how directory candidates turn into recursive HTTP requests, and why shallow depth and rate controls matter after wordlist selection.

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.

Protected API gateway and cybersecurity inspection symbol for authorized endpoint discovery.

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.

Secured globe with a magnifying glass illustrating authorized DNS subdomain enumeration.

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.

Small custom wordlist shown as a checklist with verified entries and a protective shield.

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

The Gobuster article explains directory-scan syntax and practical recon checks, so you can apply a chosen list without guessing which mode to use.

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

My FFUF tutorial shows how FUZZ placement and response filters change a request, which is the next skill after choosing a trustworthy wordlist.

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.

Question mark inside a magnifying glass with a file folder and security shield.

SecLists FAQ

What is SecLists used for?

How do I install the collection on Kali Linux?

Where are the installed wordlists stored?

Which SecLists wordlist should beginners choose?

Can I use these lists with Gobuster, Feroxbuster and FFUF?

Why does SecLists report many hits on a nonexistent page?

Does a bigger wordlist find every hidden path?

ⓘ

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.

Leave a Reply

Your email address will not be published. Required fields are marked *