Skip to the content.

Output formats

Pick with -o / --output. Default is human.

human (default)

Colour-coded per-host block with service annotations. Service names come from the IANA registry (~6000 TCP assignments embedded at build time).

UP    192.168.1.10  (router.local)  12ms
     22/tcp  open      ssh                180µs
     80/tcp  open      http               212µs

scanned 1 host(s), 1 up in 12ms

Colour is auto-detected from isatty(stdout); disable with --no-color or the NO_COLOR env var. On Windows, VT escape processing is enabled at startup.

json

One NDJSON record per host. Stable schema (additions only, no renames):

{
  "addr": "192.168.1.10",
  "hostname": "router.local",
  "up": true,
  "started": "2026-04-24T18:30:00Z",
  "elapsed": "12ms",
  "results": [
    {"port": 22, "proto": "tcp", "state": "open", "service": "ssh", "rtt": "180µs"}
  ]
}

Fields per port result: port, proto, state, service, rtt, optional banner, optional err, optional findings[] (script output).

grep

One host per line, tab-delimited fields, comma-joined port list. Suitable for grep -F 'Status: up'.

Host: 192.168.1.10 (router.local)	Status: up	Ports: 22/open/ssh,80/open/http	Elapsed: 12ms

Script findings appear as [script=output] suffixes on the port entry.

--live (opt-in)

In-place updating table for interactive use; falls back to the streaming human writer when stdout isn’t a TTY. See the Live mode section of the Usage page.