Skip to content

GUI

  1. Pick an interface. The dropdown shows every NIC on your machine. Use the toggle to hide interfaces with no IP. Hit the ↻ button to re-scan after plugging or unplugging cables.
  2. Pick the protocol. LLDP is the universal choice (Aruba, HP, Juniper, Extreme, Cisco, and MikroTik when you’ve enabled it). CDP is Cisco-only. MNDP is the MikroTik-only fallback for RouterOS devices that ship with discovery-protocol = mndp and never speak LLDP.
  3. Click Start. Most switches send a discovery packet every 30–60 seconds, so it usually takes a few seconds for the first frame to arrive.
  4. Read the result. Switch name, IP, port, VLAN, voice VLAN, MTU, and model populate the result card.

Native widgets per platform — same workflow, different chrome.

PortFinder on macOS

PortFinder shows a banner if it can’t capture packets:

  • macOS — click Install BPF Helper once. The app installs a LaunchDaemon that makes /dev/bpf* readable for members of the access_bpf group, which Wireshark also uses.
  • Linux — install the .deb or .rpm package. The postinstall sets CAP_NET_RAW on the binary so it doesn’t need sudo.
  • Windows — install Npcap with “Allow non-administrators to capture” enabled.

Selecting Sniff all Interfaces runs a capture on every non-loopback NIC in parallel and returns the first matching packet. Useful when you don’t know which physical port is patched into the switch.

After a capture lands you get seven rows: Switch Name, Switch IP, Switch Port, VLAN, Voice VLAN, MTU, Switch Model. Fields the switch didn’t advertise render as a muted Not advertised.

  • Click any value to copy that one field to the clipboard.
  • Copy as JSON copies the full result as pretty-printed JSON — byte-identical to what portfinder capture --json produces, so you can paste it into a ticket or pipe it through jq.
  • History (N) opens a popover with the last ten captures. Each row shows a relative timestamp (“2m ago · LLDP on en0 · Gi1/0/24”) plus the switch name and IP. Left-click restores that capture to the card; right-click silently copies the entry as JSON.

History is session-scoped by default; flipping Save capture history in the settings menu writes it to disk so it survives restarts.

ActionmacOSLinux / Windows
Start / Stop capture⌘RCtrl+R
Quit⌘QAlt+F4

The shortcut is also wired into the PortFinder application menu as Start/Stop Capture. It’s inert while the settings popover is open, so the popover’s controls keep arrow-key focus.

A hamburger menu in the title bar opens the settings panel. The popover is grouped into Capture, Logging, About, and a folders row.

  • Save capture history — when on, the History popover persists to a history.json file alongside settings.json. Default OFF. Flipping ON snapshots the current in-memory deque to disk immediately, so quit + relaunch round-trips. Flipping OFF deletes the file; the in-memory deque stays for the rest of the session.
  • Log level — slider with three discrete stops:

    • Normal (info) — lifecycle events only: boot, capture start/stop, settings flips. The default.
    • Verbose (debug) — adds per-event capture diagnostics (“PortFinder isn’t capturing” debugging).
    • Trace — adds per-pcap-tick noise (~20 Hz per interface). Almost always overkill; useful for libpcap timing questions.

    The level applies live to every active logger, including any parallel portfinder capture invocation in another terminal. CLI -v / -vv / -q flags still override at runtime.

  • Write debug log — toggles file logging. Default OFF — a fresh install never drops a log file anywhere until you flip the switch. When enabled, log lines go to the platform’s conventional log directory and the toggle takes effect immediately (no relaunch). Rotates at 1 MiB to portfinder.log.1.

The About → row opens a sub-page inside the same popover with version, GitHub link, GPL-3.0 license link, and a platform-specific capture-privilege status row (BPF helper on macOS, Npcap on Windows, “Capture access” on Linux). The privilege row is read-only status — installation flows live on the prominent banner up top.

Two buttons reveal the relevant directories in your file manager.

Settings folderLog folder
macOS~/Library/Application Support/PortFinder/~/Library/Logs/PortFinder/ (Console.app picks this up automatically)
Linux~/.config/portfinder/ (XDG config dir)~/.local/state/portfinder/ (XDG state dir)
Windows%APPDATA%\PortFinder\%LOCALAPPDATA%\PortFinder\Logs\ (Local, not Roaming)

The settings folder holds settings.json and (when Save capture history is on) history.json. The log folder holds portfinder.log plus the rotated portfinder.log.1 if you’ve crossed the 1 MiB threshold.