5 min read

Web Check: See Everything a Website Exposes, in One Report (GitHub, Scanned)

Run around 50 checks on a website at once: DNS, TLS, headers, ports, trackers and more.

Web Check logo
✅
Scan: safe. Nothing malicious. One thing to know: by design it fetches, port-scans and traceroutes whatever host it is given, so a self-hosted copy left open to the internet is a free probe for anyone who finds it. Scanned Oct 28, 2026; the full report is below.

Web Check takes one URL and runs around 50 checks against it in parallel, then lays the results out as a dashboard of cards: IP and server location, DNS records and DNSSEC, SSL certificate chain and TLS cipher suites, HTTP security headers and HSTS, cookies, redirects, open common ports, a traceroute, the tech stack, trackers, carbon footprint, archive history, block-list and threat-feed status, mail configuration, robots.txt, sitemap, security.txt and a screenshot from headless Chromium. It is the afternoon of terminal commands a sysadmin would run on a new domain, done in about a minute and readable by someone who has never typed dig.

It is built and maintained by Alicia Sykes, who also makes Dashy and a long list of privacy tools, and it is one of the most starred OSINT projects on GitHub: about 35,300 stars, 43 contributors and a 2.3 release in October 2026, with the last push the day before our scan. The code is MIT-licensed. There is a free hosted version at web-check.xyz, so you do not have to run anything to try it.

Self-hosting is the better fit for regular use or for checking hosts on your own network. It runs as a Node server, a Docker container, or serverless functions on Netlify or Vercel. No configuration is needed; optional keys for Google, Shodan, Cloudmersive and a few others switch on extra checks.

  • Repository: github.com/Lissy93/web-check
  • Licence: MIT (MIT License)
  • Language: TypeScript. Stars: 35.3K. Forks: 2,914. Last push: Oct 27, 2026.
  • Scan: safe, Oct 28, 2026, commit a16d6e8

Who it is for

Site owners and sysadmins auditing their own domains, developers checking headers and certificates after a deploy, security teams doing a first pass on infrastructure they are responsible for, and journalists or researchers verifying who hosts a site and how it is set up.

Getting started

1. Try it without installing anything

open https://web-check.xyz

2. Or run your own copy with Docker, then open localhost:3000

docker run -p 3000:3000 lissy93/web-check

3. Or build from source (Node 22.22.3+ or 24.16+, and yarn)

git clone https://github.com/Lissy93/web-check.git && cd web-check && yarn install && yarn build && yarn start

A self-hosted instance has no login, and anyone who can reach it can make your server send requests, port scans and traceroutes to any host they type in. Keep it on localhost or a VPN, or put it behind a reverse proxy with auth, and use API_BLOCKED_HOSTS and API_DISABLED_CHECKS to fence it in. Only scan sites you own or have permission to test.

Safety scan

We cloned Lissy93/web-check at commit a16d6e8 on Oct 28, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secrets, no pattern hits, no install hooks and no committed binaries across 395 files. The network hosts the scan lists are the services the checks call or link to (Shodan, SSL Labs, crt.sh, URLhaus, the Wayback Machine and others) plus documentation links.
  • yarn.lock pins 1,355 packages with 15 known advisories, none critical and 13 high. They sit almost entirely in deployment and install tooling: toml and node-forge come from the Netlify and local dev servers, extract-zip unpacks the Chromium download at install time, and basic-ftp is only reachable through Puppeteer's proxy-autoconfig support. The zod advisory is a memory exhaustion case in Astro's validation. None is a path a visitor to the app can reach in normal use.
  • The pattern a reader should know about is the app's purpose: its server makes requests to whatever host you give it, including internal ones. SECURITY.md says so plainly and lists the controls (blocked hosts, enabled and disabled checks, rate limiting, CORS origin, GUI off). Checks that call third-party APIs skip private IPs, localhost and .local hosts, and chromium and traceroute run without a shell.
  • Six workflows. Two use pull_request_target, one to label PRs through the API and one to tag releases after a merge; neither checks out the pull request's code, and PR titles reach shell steps only through environment variables. The 14 third-party action uses are pinned to tags rather than commits. Docker images are built in CI, scanned with Trivy and published with signed provenance and an SBOM.
  • Security policy with a written threat model, Dependabot, CodeQL, licence and contributing guide present; no code of conduct.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious codeNone found.
Install-time codeNone: nothing runs at install beyond the package manager itself.
Committed binariesNone.
CI workflows6 workflows. 2 use pull_request_target, none check out the pull request head. 14 of 14 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often pixelflare.cc, en.wikipedia.org, developer.mozilla.org, github.com. No URLs to bare IP addresses.
Known vulnerabilities15 advisories across 1,355 pinned packages: 0 critical, 13 high, 1 moderate, 1 low. yarn.lock: 1,355 packages, 15 advisories.
Project hygieneHas security policy, automated dependency updates, CodeQL, licence file, contributing guide.
OpenSSF ScorecardNot scored: the project is not in Scorecard's weekly index.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Worst known vulnerabilities (15 of 15)
AdvisorySeverityPackageSummary
GHSA-c475-qrg2-pj4rhighbasic-ftp@5.3.1basic-ftp: Quadratic-time CPU denial of service in Client.list() Unix directory-listing parser (RE_LINE backtracking)
GHSA-7pqw-9j4j-h8q3highextract-zip@2.0.1extract-zip allows arbitrary file writes through symlink archive entries
GHSA-jmr9-qjv8-65gvhighextract-zip@2.0.1extract-zip unvalidated symlink path traversal
GHSA-7pqw-9j4j-h8q3highextract-zip@1.7.0extract-zip allows arbitrary file writes through symlink archive entries
GHSA-jmr9-qjv8-65gvhighextract-zip@1.7.0extract-zip unvalidated symlink path traversal
GHSA-86w9-cpqp-85rvhighnode-forge@1.4.0node-forge RSA PKCS#1 v1.5 signature verification accepts extra nested DigestAlgorithm elements
GHSA-4qx8-w7c3-pj3phightoml@4.3.0toml-node: Quadratic-complexity DoS via many array-of-tables headers in toml.parse()
GHSA-9j65-hcg3-gc64hightoml@4.3.0toml-node: Quadratic-complexity DoS via long dotted keys or table paths in toml.parse()
GHSA-9qmh-m7c6-f92phightoml@4.3.0toml-node: Uncontrolled resource consumption (CPU DoS) via unbounded-length integer literals in toml.parse()
GHSA-h895-cgqg-jf52hightoml@4.3.0toml-node: Prototype pollution: parsing a TOML document can write to Object.prototype
GHSA-mrhx-c7xc-m3w5highzod@4.1.11Zod can exhaust memory while validating oversized constrained collections
GHSA-mrhx-c7xc-m3w5highzod@3.25.76Zod can exhaust memory while validating oversized constrained collections
GHSA-mrhx-c7xc-m3w5highzod@4.6.5Zod can exhaust memory while validating oversized constrained collections
GHSA-6pq8-jhm2-2vcwmoderateqs@6.16.0qs : qs.stringify with arrayFormat 'comma' throws an uncaught TypeError on array elements carrying a non-callable own to…
GHSA-gcqx-w48m-w2h4lowdeepmerge@4.3.1deepmerge mergeObject() allows prototype poisoning of returned objects
Workflows worth a look

By the numbers

Stars35.3K
Forks2,914
Contributors43
Commits833
Open issues2
Open pull requests0
Releases4
Latest release2.3.0
LicenceMIT
Main languageTypeScript
Project age3 years
Last pushOct 27, 2026
Tracked files395
Lines of code33.7K
Checkout size21 MB

Lines by language: TypeScript 11.6K, JSON 11.5K, YAML 5,113, JavaScript 4,342, Markdown 466, SCSS 437.

Questions

Is Web Check free?

Yes. The code is MIT-licensed, the hosted version at web-check.xyz is free to use, and self-hosting costs only whatever your server or Netlify or Vercel plan costs. A few checks need free or paid keys from third parties such as Shodan or Google, and simply skip themselves when no key is set.

Most checks read public information any browser or DNS lookup would see, but the port scan and traceroute actively probe the server, and some hosts and jurisdictions treat unrequested scanning as hostile. Use it on sites you own or are authorised to test, turn off the ports and trace-route checks otherwise, and do not load test or attack the public web-check.xyz instance.

Does Web Check store the sites I scan?

Not on a self-hosted copy: there are no accounts and no database, results go straight back to your browser, and screenshots are deleted as soon as they are sent. The target is passed to the third-party services the checks use, such as Shodan or SSL Labs, so they see what you looked up. On web-check.xyz you are also trusting the public instance's operator.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.