Nuclei is an open-source scanner that checks a target against thousands of community-written YAML templates — one template per known misconfiguration, exposed panel or CVE. It is fast, free and genuinely useful, and it will happily send traffic you did not intend, so the tags you choose matter more than the install.
What is the Nuclei vulnerability scanner?
Nuclei, from ProjectDiscovery, is a request-and-match engine. A template describes an HTTP request (or DNS, TCP, SSL, file or JavaScript check) and the response pattern that proves a condition — a status code, a string in the body, a header, a regex. The binary runs the templates you select against the targets you give it, in parallel, and prints matches. That is the whole model, and it is why the project moves quickly: a new CVE becomes a pull request against the template repository, not a release of the scanner itself (docs).
The consequence people miss: Nuclei finds what someone has already written a template for. It is an excellent detector of known, public, patterned problems and a poor detector of anything specific to your application — broken access control between two of your accounts, a business-logic flaw, an authorisation check missing on one endpoint. Those need a different kind of testing.
How do you install and run it safely the first time?
# Install (Go 1.21+), or grab a release binary from the repo
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -update-templates
# A conservative first run against a host you own
nuclei -u https://example.com \
-tags misconfig,exposure,cve,default-login,takeover,panel \
-exclude-tags dos,intrusive,fuzz,fuzzing,brute-force \
-rate-limit 50 -timeout 10 -silent -jsonl -o nuclei.jsonlThat command is not a generic example — it is, flag for flag, what our engine runs inside a full audit. The reasoning behind each part is the useful bit:
-tags misconfig,exposure,cve,default-login,takeover,panel— the categories that are high-signal on a normal website: server misconfigurations, exposed files and endpoints, known CVEs, default credentials on admin software, subdomain takeover conditions, and login panels that should not be public.-exclude-tags dos,intrusive,fuzz,fuzzing,brute-force— the categories that can take a site down, write data, or hammer a login. Running the full template set against production without this is how people discover that a scanner can cause an outage. Exclusion is not optional in our book.-rate-limit 50— requests per second. The default is higher; 50 keeps a small site and its WAF calm.-jsonl— one JSON object per finding, which is what you want if anything downstream reads the output.
missing-security-headers, tech-detect, tls-version, cookie-*, dmarc and friends — so nuclei only adds what the passive pass could not see. If you assemble your own pipeline, build the same suppression list or you will drown in your own echo.What does Nuclei not find?
- Anything unique to your app — IDOR and broken access control between two real accounts, privilege escalation, logic flaws in a checkout or a quota. No template knows your data model; detecting those takes two accounts and a comparison, which is what API security tooling is for.
- Things behind authentication, unless you configure credentials and accept the risk of a scanner acting as a logged-in user.
- Assets you did not give it. Nuclei scans the targets you pass. Finding the forgotten staging host is a different job — see subdomain enumeration.
- Context. It reports that a panel exists; it does not know whether that panel is your intranet behind an IP allow-list or a genuine hole. Somebody has to decide.
Nuclei vs a vulnerability scanner vs a pentest
| Approach | Finds | Misses | Cost |
|---|---|---|---|
| Nuclei (you run it) | Known CVEs, exposed panels and files, default credentials, misconfigurations | App-specific logic, authorisation bugs, unknown assets | Free + your time and judgement |
| Commercial scanner | Similar ground, plus crawling, scheduling, ticket integration and a support line | Same blind spots; usually priced per target | €100–600/month |
| Manual pentest | Logic flaws, chained attacks, authorisation bugs — the things templates cannot encode | Nothing structural; it is a point-in-time engagement | €3,000–10,000+ |
They stack rather than compete. Nuclei is the cheap, wide sweep for problems the internet already knows about; a person is what turns its output into a decision.
For the site owner and for the developer
For the site owner (plain English)
If a developer says “I ran Nuclei against our site”, they used a free tool that checks your site against a public catalogue of known problems. That is a good thing to have done, and it is not the same as a security review: the tool reports what it recognises, and somebody still has to judge which items matter for your business and in what order. If nobody on your side can do that judging, buying the sweep with the judgement attached is usually cheaper than building the habit internally.
Our external audit runs this exact configuration — safe tags, dangerous ones excluded, duplicates against our passive checks suppressed — and a person reviews every finding before you see it. €290 per domain.
See what the audit covers →For the developer
- Only scan what you own or are authorised to test. Nuclei is loud and attributable; unauthorised scanning is a legal problem, not an etiquette one.
- Keep templates fresh (
nuclei -update-templates) — the value of the tool is the repository, and it changes daily. - Pin what runs in CI. Template churn means a pipeline gated on “zero findings” will break on somebody else's new template. Gate on severity and a known baseline instead.
- Feed it a real target list from subdomain discovery — scanning only the apex misses the hosts that actually get breached.
- Triage before filing. Templates tagged
panelandexposurehave the highest false-positive rate on normal sites; confirm by hand before opening a ticket. - Start passively. The free checkers cover headers, TLS, cookies, CSP and email without sending a single unusual request — do that first and you will have less noise to sort in the nuclei output.
Source: the scanner and its templates are open source — projectdiscovery/nuclei and nuclei-templates.