Updated Jul 15, 2026

Scanners

Export Nuclei findings as Markdown reports

Nuclei vulnerability scan with Markdown export for readable findings.

Agent

overview

What nuclei-markdown does

nuclei-markdown is the scan-and-report node: same template-driven Nuclei engine, but each finding lands as a formatted Markdown file instead of JSONL.

Pick it when a reviewer will read the result in a PR, issue, or wiki. Narrow with -severity, -tags, -templates, or -type, and drop noise with -exclude-tags.

Compared with plain nuclei, this node trades queryable JSONL for human-readable files. Feed it live hosts from httpx; empty selection flags yield no templates matched.

source github.com/projectdiscovery/nuclei

use cases

Where nuclei-markdown fits

Produce a readable scan report

Run curated templates against probed hosts and export Markdown so the findings land as formatted files ready to read or publish.

Attach findings to a PR or issue

Generate per-finding Markdown that drops straight into a pull request, an issue tracker, or a wiki without a rendering step.

Scope the report by severity

Filter to high and critical, or to a technology's tags, so the Markdown carries only the findings worth a reviewer's time.

Archive scheduled scan results

Run behind discovery on a schedule and keep each run's Markdown folder as a dated record of what the scanner found.

reference

nuclei-markdown inputs and flags

156 inputs
NameTypeFlagDescription
targetSTRING-targetTarget URLs or hosts to scan.
listFILE-listList of target URLs or hosts, the usual pipeline input.
severitySTRING-severityRun templates by severity (info, low, medium, high, critical, unknown).
tagsSTRING-tagsRun templates by tag (comma-separated).
templatesFOLDER-templatesA folder of templates to run.
typeSTRING-typeRun templates by protocol type (dns, http, ssl, tcp, and more).
rate-limitSTRING-rate-limitMaximum requests to send per second (default 150).
exclude-tagsSTRING-exclude-tagsExclude templates by tag (comma-separated).

Showing key inputs. nuclei-markdown exposes 156 inputs in total.

Full flag reference (156 inputs)
NameTypeFlagDescription
sniSTRING-snitls sni hostname to use (default: input domain name)
varSTRING-varcustom vars in key=value format
codeBOOLEAN-codeenable loading code protocol-based templates
dastBOOLEAN-dastonly run DAST templates
listFILE-listList of target URLs/hosts to scan
tagsSTRING-tagstemplates to run based on tags (comma-separated)
typeSTRING-typetemplates to run based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
ztlsBOOLEAN-ztlsuse ztls library with autofallback to standard one for tls13
debugBOOLEAN-debugshow all requests and responses
jsonlBOOLEAN-jsonlwrite output in JSONL(ines) format
proxySTRING-proxylist of http/socks5 proxy to use (comma separated)
resetBOOLEAN-resetreset removes all nuclei configuration and data files (including nuclei-templates)
statsBOOLEAN-statsDisplay stats of the running scan.
authorSTRING-authortemplates to run based on authors (comma-separated)
configFILE-configpath to the nuclei configuration file
headerSTRING-headercustom header/cookie to include in all http requests in header:value format
no-mheBOOLEAN-no-mhedisable skipping host from scan based on errors
redactSTRING-redactredact given list of keys from query parameter, request header and body
resumeFILE-resumeResume scan using resume.cfg (clustering will be disabled)
silentSTRING-silentdisplay findings only
streamBOOLEAN-streamstream mode - start elaborating without sorting the input
targetSTRING-targettarget URLs/hosts to scan
no-metaBOOLEAN-no-metadisable printing result metadata in cli output
passiveBOOLEAN-passiveenable passive HTTP response processing mode
profileSTRING-profiletemplate profile config file to run
projectBOOLEAN-projectUse a project folder to avoid sending same request multiple times.
retriesSTRING-retriesnumber of times to retry a failed request (default 1)
timeoutSTRING-timeouttime to wait in seconds before timeout (default 10)
uncoverBOOLEAN-uncoverenable uncover engine
verboseBOOLEAN-verboseshow verbose output
env-varsBOOLEAN-env-varsenable environment variables to be used in template
headlessBOOLEAN-headlessenable templates that require headless browser support (root user on linux will disable sandbox)
no-colorBOOLEAN-no-colordisable output content coloring (ANSI escape codes)
no-httpxBOOLEAN-no-httpxdisable httpx probing for non-url input
no-stdinBOOLEAN-no-stdindisable stdin processing
omit-rawBOOLEAN-omit-rawomit request/response pairs in the JSON, JSONL, and Markdown outputs (for findings only)
severitySTRING-severitytemplates to run based on severity. Possible values: info, low, medium, high, critical, unknown
templateFILE-templatestemplate file to run
validateBOOLEAN-validatevalidate the passed templates to nuclei
bulk-sizeSTRING-bulk-sizemaximum number of hosts to be analyzed in parallel per template (default 25)
client-caFILE-client-caclient certificate authority file (PEM-encoded) used for authenticating against scanned hosts
debug-reqBOOLEAN-debug-reqshow all sent requests
interfaceSTRING-interfacenetwork interface to use for network scan
list-tagsBOOLEAN-tgllist all available tags
resolversFILE-resolversfile containing resolver list for nuclei
source-ipSTRING-source-ipsource ip address to use for network scan
tags-listFILE-tagstemplates to run based on tags
templatesFOLDER-templatesfolder of templates to run
timestampBOOLEAN-timestampenables printing timestamp in cli output
vars-listFILE-varcustom vars in key=value format
workflowsSTRING-workflowslist of workflow or workflow directory to run (comma-separated)
client-keyFILE-client-keyclient key file (PEM-encoded) used for authenticating against scanned hosts
debug-respBOOLEAN-debug-respshow all received responses
exclude-idSTRING-exclude-idtemplates to exclude based on template ids (comma-separated)
ip-versionSTRING-ip-versionIP version to scan of hostname (4,6) - (default 4)
proxy-listFILE-proxylist of http/socks5 proxy to use
rate-limitSTRING-rate-limitmaximum number of requests to send per second (default 150)
stats-jsonBOOLEAN-stats-jsonWrite statistics data to stdout in JSONL(ines) format
attack-typeSTRING-attack-typetype of payload combinations to perform (batteringram,pitchfork,clusterbomb)
author-listFILE-authortemplates to run based on authors
client-certFILE-client-certclient certificate file (PEM-encoded) used for authenticating against scanned hosts
concurrencySTRING-concurrencymaximum number of templates to be executed in parallel (default 25)
force-http2BOOLEAN-force-http2force http2 connection on requests
secret-fileFILE-secret-filepath to config file containing secrets for nuclei authenticated scan
template-idSTRING-template-idtemplates to run based on template ids (comma-separated)
enable-pprofBOOLEAN-enable-pprofenable pprof debugging server
exclude-tagsSTRING-exclude-tagstemplates to exclude based on tags (comma-separated)
exclude-typeSTRING-exclude-typetemplates to exclude based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
fuzzing-modeSTRING-fuzzing-modeoverrides fuzzing mode set in template (multiple, single)
fuzzing-typeSTRING-fuzzing-typeoverrides fuzzing type set in template (replace, prefix, postfix, infix)
hang-monitorBOOLEAN-hang-monitorenable nuclei hang monitoring
headers-listFILE-headercustom list of headers/cookies to include in all http requests in header:value
health-checkBOOLEAN-health-checkrun diagnostic check up
include-tagsSTRING-include-tagstags to be executed even if they are excluded either by default or configuration
metrics-portSTRING-metrics-portport to expose nuclei metrics on (default 9092)
page-timeoutSTRING-page-timeoutseconds to wait for each page in headless mode (default 20)
profile-listBOOLEAN-profile-listlist community template profiles
project-pathFOLDER-project-pathUse a user defined project folder. Temporary folder is used if not specified but enabled.
scan-all-ipsBOOLEAN-scan-all-ipsscan all the IP's associated with dns record
template-urlSTRING-template-urltemplate urls to run (comma-separated)
workflow-urlSTRING-workflow-urlworkflow urls to run (comma-separated)
exclude-hostsFILE-exclude-hostshosts to exclude to scan from the input list (ip, cidr, hostname)
max-redirectsSTRING-max-redirectsmax number of redirects to follow for http templates (default 10)
new-templatesBOOLEAN-new-templatesrun only new templates added in latest nuclei-templates release
no-interactshBOOLEAN-no-interactshdisable interactsh server for OAST testing, exclude OAST based templates
omit-templateBOOLEAN-omit-templateomit encoded template in the JSON, JSONL output
report-configFILE-report-confignuclei reporting module configuration file
scan-strategySTRING-scan-strategystrategy to use while scanning(auto/host-spray/template-spray) (default auto)
show-var-dumpBOOLEAN-show-var-dumpshow variables dump for debugging
system-chromeBOOLEAN-system-chromeuse local installed Chrome browser instead of nuclei installed
target-folderFOLDER-targetfolder containing files to execute file templates on
template-urlsFILE-template-urllist of template urls to run
uncover-delaySTRING-uncover-delaydelay between uncover query requests in seconds (0 to disable) (default 1)
uncover-fieldSTRING-uncover-fielduncover fields to return (ip,port,host) (default "ip:port")
uncover-limitSTRING-uncover-limituncover results to return (default 100)
uncover-querySTRING-uncover-queryuncover search query
workflow-urlsFILE-workflow-urllist of workflow urls to run
automatic-scanBOOLEAN-automatic-scanautomatic web scan using wappalyzer technology detection to tags mapping
js-concurrencySTRING-js-concurrencymaximum number of javascript runtimes to be executed in parallel (default 120)
list-templatesBOOLEAN-tllist all available templates
matcher-statusBOOLEAN-matcher-statusdisplay match failure status
max-host-errorSTRING-max-host-errormax errors for a host before skipping from scan (default 30)
proxy-internalBOOLEAN-proxy-internalproxy all internal requests
stats-intervalSTRING-stats-intervalnumber of seconds to wait between showing a statistics update (default 5)
templates-listFILE-templateslist of template to run
uncover-engineSTRING-uncover-engineuncover search engine (shodan,shodan-idb,fofa,censys,quake,hunter,zoomeye,netlas) (default shodan)
workflows-listFILE-workflowslist of workflow or workflow directory to run
exclude-id-listFILE-exclude-idtemplates to exclude based on template ids
show-match-lineBOOLEAN-show-match-lineshow match lines for file templates, works with extractors only
tls-impersonateBOOLEAN-tls-impersonateenable experimental client hello (ja3) tls randomization
exclude-matchersSTRING-exclude-matcherstemplate matchers to exclude in result
exclude-severitySTRING-exclude-severitytemplates to exclude based on severity. Possible values: info, low, medium, high, critical, unknown
follow-redirectsBOOLEAN-follow-redirectsenable following redirects for http templates
headless-optionsSTRING-headless-optionsstart headless chrome with additional options
interactsh-tokenSTRING-interactsh-tokenauthentication token for self-hosted interactsh server
no-strict-syntaxBOOLEAN-no-strict-syntaxDisable strict syntax check on templates
prefetch-secretsBOOLEAN-prefetch-secretsprefetch secrets from the secrets file
system-resolversBOOLEAN-system-resolversuse system DNS resolving as error fallback
template-id-listFILE-template-idtemplates to run based on template ids
track-error-fileFILE-track-erroradds given error to max-host-error watchlist
dialer-keep-aliveSTRING-dialer-keep-alivekeep-alive duration for network requests.
disable-redirectsBOOLEAN-disable-redirectsdisable redirects for http templates
display-templatesBOOLEAN-vvdisplay templates loaded for scan
exclude-tags-listFILE-exclude-tagstemplates to exclude based on tags
exclude-templatesSTRING-exclude-templatestemplate or template directory to exclude (comma-separated)
include-tags-listFILE-include-tagstags to be executed even if they are excluded either by default or configuration
include-templatesSTRING-include-templatestemplates to be executed even if they are excluded either by default or configuration
interactsh-serverSTRING-interactsh-serverinteractsh server url for self-hosted instance (default: oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me)
list-dsl-functionBOOLEAN-list-dsl-functionlist all supported DSL function signatures
rate-limit-minuteSTRING-rate-limit-minutemaximum number of requests to send per minute
templates-versionBOOLEAN-templates-versionshows the version of the installed nuclei-templates
uncover-ratelimitSTRING-uncover-ratelimitoverride ratelimit of engines with unknown ratelimit (default 60 req/min) (default 60)
disable-clusteringBOOLEAN-disable-clusteringdisable clustering of requests
headless-bulk-sizeSTRING-headless-bulk-sizemaximum number of headless hosts to be analyzed in parallel per template (default 10)
input-read-timeoutSTRING-input-read-timeouttimeout on input read (default 3m0s)
response-size-readSTRING-response-size-readmax response size to read in bytes (default 10485760)
response-size-saveSTRING-response-size-savemax response size to read in bytes (default 1048576)
template-conditionSTRING-template-conditiontemplates to run based on expression condition
template-directorySTRING-templatestemplate directory to run
leave-default-portsBOOLEAN-leave-default-portsleave default HTTP/HTTPS ports (eg. host:80,host:443
payload-concurrencySTRING-payload-concurrencymax payload concurrency for each template (default 25)
stop-at-first-matchBOOLEAN-stop-at-first-matchstop processing HTTP requests after the first match (may break template/workflow logic)
disable-update-checkBOOLEAN-disable-update-checkdisable automatic nuclei/templates update check
headless-concurrencySTRING-headless-concurrencymaximum number of headless templates to be executed in parallel (default 10)
list-headless-actionBOOLEAN-list-headless-actionlist available headless actions
exclude-matchers-listFILE-exclude-matcherstemplate matchers to exclude in result
follow-host-redirectsBOOLEAN-follow-host-redirectsfollow redirects on the same host
interactions-evictionSTRING-interactions-evictionnumber of seconds to wait before evicting requests from cache (default 60)
new-templates-versionSTRING-new-templates-versionrun new templates added in specific version
exclude-templates-listFILE-exclude-templatestemplate or template directory to exclude
include-templates-listFILE-include-templatestemplates to be executed even if they are excluded either by default or configuration
allow-local-file-accessBOOLEAN-allow-local-file-accessallows file (payload) access anywhere on the system
interactions-cache-sizeSTRING-interactions-cache-sizenumber of requests to keep in the interactions cache (default 5000)
interactions-poll-durationSTRING-interactions-poll-durationnumber of seconds to wait before each interaction poll request (default 5)
interactions-cooldown-periodSTRING-interactions-cooldown-periodextra time for interaction polling before exiting (default 5)
restrict-local-network-accessBOOLEAN-restrict-local-network-accessblocks connections to the local / private network

example

Run nuclei-markdown

nuclei-markdown · command
# scan probed hosts, keep high/critical, export a Markdown reportnuclei -list live-hosts.txt -severity high,critical -tags cve,exposures -markdown-export reports/
sample output
### CVE-2021-44228 (critical) at http://198.51.100.23:8080 | Field    | Value                                || -------- | ------------------------------------ || Template | CVE-2021-44228                       || Severity | critical                             || Type     | http                                 || Author   | pdteam                               || Matched  | http://198.51.100.23:8080/?x=${jndi} |

guidance

Choosing nuclei-markdown

Use nuclei-markdown when you want a readable report, not raw machine output. Run it on known live hosts from httpx and scope with tags or severity. For JSONL findings to query later, use plain nuclei.

nuclei

Same scanner with JSONL and file output. Prefer it when you need queryable findings instead of a Markdown report.

generate-yaml-report

Builds a structured report from prior results. nuclei-markdown both scans and writes Markdown in one node.

nikto

Classic web scanner with its own output. nuclei-markdown is template-driven and exports formatted Markdown.

faq

nuclei-markdown questions

Use nuclei-markdown when a person will read the result: one Markdown file per finding for a PR, issue, or wiki. Use plain nuclei with -jsonl when a later node needs structured, queryable findings.

Run nuclei-markdown yourself

Targets are probed by httpx, then nuclei-markdown tests the live hosts and writes the findings as a folder of readable Markdown reports.

Facts on this page come from the live Trickest tool library.