PAGES
← all tools
◆ Reconnaissance & OSINT

gowitness

3.2.1 open-source

gowitness is a website screenshot utility written in Golang that uses Chrome Headless to generate screenshots of web interfaces via the command line.

Summary

gowitness is an open-source command-line utility, written in Go, that drives Chrome Headless to take screenshots of large numbers of websites and log what it sees along the way. It runs locally as a CLI tool (or as an importable Go library for embeddingembeddingLists of numbers a model produces to represent the meaning of text, images or code, so similar items sit close together. They power semantic search and RAG. into other tooling), reading targets from URL lists, CIDRCIDRA notation for a block of IP addresses, such as 10.0.0.0/24. The number after the slash says how many leading address bits identify the network. ranges, or Nmap and Nessus output, and writing results to SQLite, JSON Lines, or CSV, with a web-based viewer and REST APIREST APIA web API design style where clients interact with resources over HTTP using standard methods like GET, POST, and DELETE, giving cyber tools a predictable, language-agnostic way to integrate with external services. for browsing captures afterward. It suits red teamers and reconnaissance-focused practitioners who need to visually triage exposed web interfaces across a large target set rather than check them one by one. It sits in the recon tooling space alongside other HTTP-probing and attack-surface mapping utilities, distinguished by its focus on screenshotting at scale. First committed in 2017, it has 45 contributors and 49 commits in the past year, with a release roughly nine months ago, suggesting active but unhurried maintenance.

gowitness is a website screenshot utility written in Golang that uses Chrome Headless to generate screenshots of web interfaces via the command line.

How gowitness helps

Which of the web servers on this network actually have something worth logging into?

scans a list of URLs, CIDR ranges, or Nmap/Nessus output and screenshots every reachable host, so a large target set becomes a gallery you can scan by eye instead of visiting each address

Which of these hundreds of captures are actually the same login page or default install screen?

groups screenshots by perceptual similarity using hamming distance on their hashes, surfacing near-duplicate pages across a large capture set

Which of these hosts share a login page I've already seen, or match a page I'm looking for?

lets you search the report by the page's HTML body content, so you can find every capture containing a particular string or form rather than opening each one

What did a target's page actually send back, beyond the screenshot itself?

records the request log, headers, and cookies alongside each capture, and can surface debug-level error logs when something failed to load properly

Can I check a single suspicious URL right now without kicking off a whole scan?

submits one URL through the API or the immediate-mode web UI and returns the screenshot result directly in the response, without writing anything to the database

Can I capture pages that sit behind a login I've already established in my browser?

points the browser at an existing Chrome user data directory so the scan reuses an already-authenticated session instead of hitting an auth wall on every target

all 15 features, with the evidence for each →

Languages

Not documented

Features

15 capabilities · 3 backed by code, an API document or a real run

Built from gowitness's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • gowitness covers 1 of the 13 network discovery and scanning capabilities we track.

What gowitness offers you

  • Command-line interface4
  • Plugin system1
  • REST API1
  • Web management console1
All capabilities 15 capabilities
HTML report generation shipped Generates an HTML report from collected scan data with configurable sorting and title inclusion for manual review. 16 releases · 2 other sources · first seen Sep 2019

release 16 total

  • Adds keyboard shortcuts for next/previous navigation in the gallery view. 3.1.0 · Nov 2025 · source · release history
  • Adds a none writer option to suppress all output, useful for test or CI scenarios where warnings should be silenced. 3.0.5 · Oct 2024 · source · release history
  • Adds left/right arrow keyboard navigation in the detail view to quickly flip between captured results. 3.0.4 · Oct 2024 · source · release history
  • Screenshot modals in the detail view now display the URL and timestamp of each capture. 3.0.4 · Oct 2024 · source · release history
  • Rewrites the report web server frontend in React with more features and a modernised UI. 3.0.0 · Sep 2024 · source · release history
  • Switches to a pure-Go SQLite implementation, eliminating the CGO_ENABLED=1 build requirement for easier cross-compilation. 3.0.0 · Sep 2024 · source · release history

docs

  • Web screenshot utility using Chrome Headless to capture and report on web interfaces from the command line.

example

  • Generate an HTML report sorted by perception hash and include titles for easier manual review of similar pages. gowitness report generate --sort-perception 1.1.0 · Sep 2019 · source
Screenshot capture verified Captures screenshots during crawling or scanning, with configurable JPEG output quality. 8 releases · 5 other sources · first seen Apr 2018

release 8 total

  • Updates perception hashing to use Hamming Distance for screenshot grouping. 3.0.0 · Sep 2024 · source · release history
  • Adds HTTP response code filtering to control which codes get screenshotted. 2.5.0 · May 2023 · source · release history
  • Adds --screenshot-db-store flag to store screenshots in the database. 2.5.0 · May 2023 · source · release history
  • Adds --js flag to execute externally introduced JavaScript on screenshotted pages. 2.5.0 · May 2023 · source · release history
  • Adds the ability to save screenshots as PDFs instead of just PNGs. 2.4.0 · Jun 2022 · source · release history
  • Changes default behavior so that both the report and screenshot servers now listen on localhost only, restricting network exposure. 2.3.6 · May 2021 · source · release history

command line

  • --screenshot-jpeg-quality — The quality of JPEG screenshots (1-100) 3.1.0 · Nov 2025 · command-line history

example

  • Filter screenshots to only retain results matching a specific HTTP status or pattern, using the restored screenshot-filter option. gowitness scan file -f targets.txt --screenshot-filter 200 3.1.0 · Nov 2025 · source
  • Allow gowitness to capture screenshots of local file paths by disabling the URI scheme restriction. gowitness --allow-insecure-uri -f targets.txt 2.3.6 · May 2021 · source
  • Take screenshots of a site while pretending to be a specific browser. gowitness --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' https://example.com 1.0.7 · Apr 2018 · source
  • Screenshot a single URL, save to DB gowitness scan single --url "https://sensepost.com" --write-db
Network request logging verified Records per-request network activity during scanning, with an option to suppress these logs and associated content saving. 6 releases · 3 other sources · first seen Feb 2018

Also counts toward: Command-line interface

release

  • Adds --chrome-user-data-dir flag to specify an existing Chrome User Directory, enabling reuse of authenticated browser sessions across gowitness runs.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 3.2.0 · Sep 2026 · source · release history
  • Adds --skip-network-logs flag to omit network log recording in writers, reducing output size for large scans. 3.1.0 · Nov 2025 · source · release history
  • Introduces writers concept enabling simultaneous output to SQLite, JSON Lines, and stdout in a single scan run. 3.0.0 · Sep 2024 · source · release history
  • Adds the ability to record browser console logs and network events, making resolved IPs searchable within the tool. 2.4.0 · Jun 2022 · source · release history
  • Adds the --file-cidr flag to read CIDR ranges from a file alongside the standard --cidr flag 1.0.4 · Feb 2018 · source · release history
  • Default subnet mask is /32 for CIDR specifications without an explicit subnet 1.0.4 · Feb 2018 · source · release history

command line

  • --chrome-user-data-dir — A Chrome user data directory to use instead of a temporary one. Point this at an existing profile (e.g. ~/.config/google-chrome) to reuse logged in sessions. The directory is left in place after the scan 3.2.0 · Sep 2026 · command-line history
  • --skip-network-logs — Don't include per-request network logs when writing results (also disables save-content) 3.1.0 · Nov 2025 · command-line history

example

  • Combine inline CIDR with file-based ranges for a broader scan surface gowitness --cidr 192.168.1.0/24 --file-cidr extra_targets.txt scan 1.0.4 · Feb 2018 · source
Scan argument expansion shipped Accepts single URIs, file-based URI lists, and CIDR ranges as scan targets via the scan command. 5 releases · 4 other sources · first seen Dec 2019

Shared capability: Attack surface inventory

Also counts toward: Command-line interface

release

  • Adds delay parameter to the /submit and /submit/single API endpoints, enabling a configurable pause before screenshot capture via the API. 3.0.3 · Sep 2024 · source · release history
  • Allow file parser to parse <host>:<port> targets 3.0.2 · Sep 2024 · source · release history
  • Replaces preflight HTTP checks with CDP Network.responseReceived events for significantly more accurate probe results. 3.0.0 · Sep 2024 · source · release history
  • Introduces pluggable scanner drivers: chromedp (default, higher accuracy via fresh browser per target) and gorod (tab-based, faster/lower resource usage), selectable with --driver. 3.0.0 · Sep 2024 · source · release history
  • Adds --ports, --cidr, and --append-uri arguments to the scan command to accept a single URI, a file of URIs, or CIDR ranges 1.3.0 · Dec 2019 · source · release history

example

  • Screenshot targets while inheriting an already-authenticated Chrome profile (e.g. after manually logging into an SSO portal) to avoid re-authenticating during a scan. gowitness scan single --url "https://internal.corp.example.com" --write-db --chrome-user-data-dir ~/.config/google-chrome/Default 3.2.0 · Sep 2026 · source
  • Reuse an authenticated Chrome profile across gowitness sessions by pointing to an existing user data directory. gowitness --chrome-user-data-dir /path/to/chrome/profile file screenshot targets.txt 3.2.0 · Sep 2026 · source
  • Scan a specific host and port directly from an input file. echo '192.168.1.10:443' | gowitness scan file - 3.0.2 · Sep 2024 · source
  • Scan a specific internal subnet and append /admin paths for each host gowitness scan --cidr 192.168.0.0/30 --append-uri '/admin' 1.3.0 · Dec 2019 · source
Performance profiling verified Collects CPU, memory, and trace profiles during a run and writes them to a timestamped directory for analysis. 5 releases · 1 other source · first seen Sep 2019

release

  • Surfaces error logs automatically when the --debug flag is enabled. 3.1.0 · Nov 2025 · source · release history
  • Improves performance of perception hash calculations by reducing excessive memory allocations. 3.1.0 · Nov 2025 · source · release history
  • Adds application technology identification using Wappalyzer to identify tech stacks on scanned targets. 2.4.0 · Jun 2022 · source · release history
  • --sort-perception / -P flag for sorting reports using perception hashing 1.1.0 · Sep 2019 · source · release history
  • --virtual-time-budget / --chrome-time-budget flag to give pages time to settle post load 1.1.0 · Sep 2019 · source · release history

command line

  • --profile — Enable CPU, memory, and trace profiling (writes to profiles/<timestamp>/) 3.1.0 · Nov 2025 · command-line history
Nmap XML integration shipped Allows scanning targets derived from an Nmap XML file, with options to filter by port and disable the database for disposable analysis. 3 releases · 2 other sources · first seen Sep 2019

Shared capability: Attack surface inventory

Also counts toward: Command-line interface

release

  • Adds --service-contains / -w flag to the nmap subcommand to filter by services that contain a specified string (e.g., http) to match variants like http-alt or http-proxy. 1.3.2 · Feb 2020 · source · release history
  • Adds the --port flag for filtering nmap scans by port number 1.2.0 · Sep 2019 · source · release history
  • New gowitness nmap command to parse Nmap XML scans and scan targets within 1.1.0 · Sep 2019 · source · release history

example

  • Scan only nmap services containing http by using the new filter flag. gowitness nmap --service-contains http <target> 1.3.2 · Feb 2020 · source
  • Scan targets from an Nmap XML file and disable the database for a quick, disposable analysis. gowitness nmap -f scan.xml --disabled-db 1.1.0 · Sep 2019 · source
API integration shipped Exposes a REST API with Swagger documentation and endpoints for submitting targets, retrieving results, and controlling scan parameters. 3 releases · 1 other source · first seen Sep 2024

Also counts toward: REST API

release

  • New /submit/single API endpoint returns screenshot results immediately without invoking writers, enabling synchronous screenshot workflows. 3.0.1 · Sep 2024 · source · release history
  • Adds a link to the Swagger API documentation directly in the UI for easier API exploration. 3.0.1 · Sep 2024 · source · release history
  • Adds an official REST API with code-generated Swagger documentation. 3.0.0 · Sep 2024 · source · release history

example

  • Capture a screenshot of a single URL and get the result back immediately in one API call — no writer pipeline needed, useful for scripting or CI checks. curl -X POST 'http://localhost:7171/submit/single' -H 'Content-Type: application/json' -d '{"url": "https://example.com"}' 3.0.1 · Sep 2024 · source
Chrome headless configuration shipped Allows passing custom arguments and setting virtual time budgets for the Chrome headless instance during scanning. 3 releases · first seen Sep 2019

release

  • Rewrites the chromedp driver to spawn a single browser instance with multiple tabs instead of a full browser per target, significantly improving throughput at scale. 3.1.0 · Nov 2025 · source · release history
  • --chrome-arg / -g flag to pass extra arguments to the Chrome headless invocation 1.1.0 · Sep 2019 · source · release history
  • --virtual-time-budget / --chrome-time-budget flag to give pages time to settle post load 1.1.0 · Sep 2019 · source · release history
Immediate mode probing shipped Supports on-the-fly URL probing with immediate visual feedback in the web UI without writing to the database. 1 release · 1 other source · first seen Sep 2024

Also counts toward: Web management console

release

  • New web UI for immediate-mode probing that shows screenshot results in a modal without writing to the database. 3.0.3 · Sep 2024 · source · release history

example

  • Use immediate mode in the web UI to probe a URL on the fly and see results in a modal without polluting the database. Open the gowitness web UI, navigate to the Probe section, enter a target URL, and select 'Immediate Mode' to view the screenshot result in a modal without recording to the database. 3.0.3 · Sep 2024 · source
Library integration shipped Provides an importable Go library with stable packages for drivers, readers, writers, and runners to embed scanning into other tools. 1 release · 1 other source · first seen Sep 2024

release

  • Exposes gowitness as a proper importable Go library with stable drivers, readers, writers, and runner packages. 3.0.0 · Sep 2024 · source · release history

example

  • Embed gowitness scanning into your own Go tool using the library's runner/reader/writer pattern. runner, _ := runner.NewRunner(...opts) reader := readers.NewFileReader(...fileopts) go func() { if err := reader.Read(runner.Targets); err != nil { log.Error("error in reader.Read", "err", err) } }()… 3.0.0 · Sep 2024 · source
Docker image architecture support shipped Provides official Docker images with multi-architecture builds, enabling native container deployments on ARM64 hosts. 1 release · first seen Oct 2026

release

  • Adds arm64 targets to the official Docker images, enabling native container deployments on ARM64 hosts.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 3.2.1 · Oct 2026 · source · release history
IPv6 support in readers shipped Parses IPv6 addresses when reading input sources such as Nessus files. 1 release · first seen Nov 2025

release

  • Adds IPv6 address parsing support in the Nessus file reader. 3.1.0 · Nov 2025 · source · release history
Report content search shipped Enables searching report data by HTML body content to locate specific screenshots. 1 release · first seen Oct 2024

release

  • Adds search by HTML body content in the report UI, enabling practitioners to find screenshots by page source. 3.0.4 · Oct 2024 · source · release history
Input source expansion shipped suggested Supports diverse input sources including Nmap XML, Nessus, files, and CIDR ranges via a pluggable reader architecture. 1 release · first seen Sep 2024

Suggested capability: Attack surface inventory. This is our guess, not confirmed.

Also counts toward: Plugin system

release

  • Introduces readers concept supporting pluggable input sources (files, CIDR ranges, Nmap, Nessus, and more). 3.0.0 · Sep 2024 · source · release history
CLI report listing shipped suggested Provides a command-line interface to list URLs, status codes, and titles from the database without generating full reports. 1 release · first seen Sep 2019

Suggested capability: Attack surface inventory. This is our guess, not confirmed.

Also counts toward: Command-line interface

release

  • New gowitness report list command for CLI reports of URL, status code and title from gowitness.db 1.1.0 · Sep 2019 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for gowitness, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail gowitness puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

25 entries

  1. October 20261
  2. September 20261
  3. November 20251
  4. October 20242
  5. September 20244
  6. May 20231
  7. July 20221
  8. June 20221
  9. May 20211
  10. March 20211
  11. December 20201
  12. November 20201
  13. September 20202
  14. August 20201
  15. February 20201
  16. December 20191
  17. September 20192
  18. April 20181
  19. February 20181
    Show

    25 entries

    Project health

    Issue, contributor and maintainer activity in sensepost/gowitness, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 10 +7 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 207 days first maintainer reply 3.5 hours
    6. Open backlog 30 of 217 issues ever filed
    1. Issues opened / month 1 · 0 communitymaintainers
    2. Open backlog 30
    3. Contributors / month 3
    4. Commits / month 15
    5. Stars 4,510
    Issue themes, last 12 months
    • features 8%
    • other 92%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Articles

    1 article · updated Nov 4, 2026

    Where gowitness turns up in what others publish: how-tos, attack reports that name it, and incident write-ups. A row says why it is here and quotes where the article names it; the link goes to the publisher.

    Breach post-mortems & incident response 1

    • From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence Microsoft Threat Intelligence
      The threat actor used gowitness to perform a detailed reconnaissance of the HTTP/HTTPS services identified in the previous scan.
      1 more quote
      gowitness scan nmap -f $i --write-db --write-screenshots --screenshot-path ./screenshots --screenshot-fullpage --open-only --service-contains http --delay 5 --threads 1 --chrome-proxy socks5://127.0.0.1:9090 Where they…

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →