## TL;DR
nuclei loads every template into memory before scanning, and with thousands of templates on a slow disk that step can take very long or look stuck. Narrow the template set with -t or -tags, skip the update check with -disable-update-check, and pre-seed the templates directory on constrained test boxes.

```text
[INF] Loading templates...
(no further output, scan never starts)
```

## Use this when
- nuclei prints the loading line and nothing else for many minutes.
- The templates directory holds thousands of files.
- The test box has slow disk or little RAM.

## Not for this skill when
- Requests go out but no results come back. That is a scan problem.
- Templates fail to load with an error. Fix the load error instead.

## Steps
1. Narrow the template set to what the engagement needs: `nuclei -tags cve -u https://target.example.com`. Verify: loading finishes in seconds instead of minutes.
2. Skip the update check at startup: `nuclei -disable-update-check -u https://target.example.com`. Verify: the scan starts without the network round trip.
3. Point -t at a subdirectory rather than the whole library: `nuclei -t ~/nuclei-templates/http/ -u https://target.example.com`. Verify: only the relevant templates load.
4. On slow test boxes, update templates once beforehand: `nuclei -update-templates`, then run with updates disabled. Verify: startup time is consistent across runs.
5. Watch memory during loading on small VMs. If the box OOMs, the template set is simply too large for it; split the engagement into category batches. Verify: each batch loads and runs cleanly.

Compatibility: nuclei 3.x. Template count grows with each release, so this gets more relevant over time.

## Variant phrasings
### nuclei stuck loading templates
Same fix path, common phrasing.
### nuclei slow startup templates
Symptom-level search.
### nuclei -disable-update-check
The flag-oriented search.

## Why it happens
The template library ships thousands of YAML files, and nuclei parses and indexes all of them at startup when given the whole directory. On spinning disks, network mounts, or tiny cloud VMs, parsing alone can take many minutes. The update check adds a network fetch on top. None of this is a bug; it is the cost of loading everything.

## Edge cases / pitfalls
- -tags filters by template metadata. A mistyped tag loads nothing and the scan "succeeds" with zero coverage. Verify the template count line.
- Disabling updates means stale templates. Update on a schedule, just not at every scan start.
- Network-mounted home directories make this dramatically worse. Keep templates on local disk.
- Record the template set and count in your report so the coverage is auditable.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_DOBPeYFQAmazKeAZP_Mx0Q
