Sample report — fictional target

See the exact report a scan gives you.

Below is a complete LaunchLock report for acme-startup.dev — a fictional early-stage SaaS, assembled from the findings we see most on just-shipped sites. Score 74/100, 7 actionable findings (2 medium, 5 low), 14 context signals. No invented emergencies — this is the honest shape of a typical first scan.

Everything below is the real report interface, not a screenshot: search and filter the findings, expand scanner evidence, copy an AI fix prompt for Cursor, Claude Code, or Codex.

Launch reportsample data

acme-startup.dev

7 actionable issues, 7 still open

In good shape — a few medium and low issues left to tidy up.

7 root fixes needed on https://acme-startup.dev. This view lists 3 security and 4 readiness actionable rows; raw evidence is grouped so repeated signals do not hide the actual work.

This sample page uses fixture data for product demonstration.

15
of 15 groups

Actionable findings

7total
3
displayed security rows
4
displayed readiness rows
20
displayed evidence URLs
74
score / 100

Category scores

Overall reflects the full completed scan, so it can differ from any one category. Not scanned means that category was not measured—not that it scored 100.

Security
76/100
(automated signals, not a full pentest)
SEO
82/100
AEO
68/100
Performance
78/100
(signals, not a full audit)
Accessibility
84/100
(signals, not a full audit)
Compliance
93/100
(signals, not legal advice)
Domain
88/100
Email
58/100

Actionable by severity

2 medium5 low14 notes

Open by lifecycle

2 medium5 low

7 open findings

Detected stack

Next.jsReactVercelSupabaseStripe

Scan coverage

partial

Site scan covering security posture, search readiness, accessibility, performance, and domain health. Authenticated or active checks were considered but did not complete; see the coverage details below.

30
ran
8
skipped
0
failed
28/28
passive ran
2/9
external ran

Fix first

Security findings

Confirmed and potential security work from the checks recorded in this scan. Exposed files, source maps, weak CORS, session storage, headers, TLS, cookies, and DNS/email issues appear here.

SecuritymediumConfirmed

Add global production security headers

3 finding(s) point to this root issue on acme-startup.dev. The responses were observed directly, but this automated result is not a penetration test.

Why it matters

Missing browser protections can increase the blast radius of XSS, clickjacking, MIME sniffing, and referrer leaks — especially on the login and app routes.

Fix overview

Add global production security headers at the framework, reverse proxy, or hosting layer. Start Content-Security-Policy in report-only mode, then enforce.

Verify

  • curl -I https://acme-startup.dev/
  • Confirm content-security-policy-report-only, referrer-policy, and permissions-policy are present in production.
  • Watch the browser console for CSP report-only violations before enforcing.

Evidence scope

3 affected URLs
  • https://acme-startup.dev/
  • https://acme-startup.dev/login
  • https://acme-startup.dev/app

AI fix prompts

Scanner issues and evidence

Content-Security-Policy is missing

headers / headers.missing_csp

medium

Evidence URLs

  • https://acme-startup.dev/
  • https://acme-startup.dev/login
  • https://acme-startup.dev/app
{
  "foundOn": "https://acme-startup.dev/",
  "headerName": "content-security-policy",
  "pageRisk": "app",
  "observedStatus": 200,
  "note": "Without a Content-Security-Policy, any successful HTML or script injection runs with full page privileges. The app serves a login form, so this page is treated as app-like rather than static.",
  "severityContext": "Header severity is evidence-weighted: app-like and sensitive pages rank higher than static marketing pages."
}

Permissions-Policy is missing

headers / headers.missing_permissions_policy

info

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "headerName": "permissions-policy",
  "pageRisk": "static",
  "note": "No powerful browser features (camera, microphone, geolocation) are requested by the app today, so this stays informational — but an explicit deny-list costs one line."
}

Referrer-Policy is missing

headers / headers.missing_referrer_policy

info

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "headerName": "referrer-policy",
  "pageRisk": "static",
  "note": "Browsers fall back to strict-origin-when-cross-origin, which is a reasonable default. Kept as context on static pages; set it explicitly while you are adding the CSP."
}
SecuritymediumLikely

Publish a DMARC policy for acme-startup.dev

1 finding(s) point to this root issue on acme-startup.dev. SPF exists but nothing tells receiving mail servers what to do when a message fails alignment.

Why it matters

Anyone can send mail that claims to be from your domain — password resets, invoices, investor updates. One convincing spoof to a customer is a trust incident you cannot patch afterwards.

Fix overview

Publish a DMARC TXT record at _dmarc.acme-startup.dev, start at p=none with an aggregate-report address to observe legitimate senders, then move to p=quarantine and p=reject.

Verify

  • dig TXT _dmarc.acme-startup.dev +short
  • Confirm the record starts with v=DMARC1 and reports arrive at the rua address within 48 hours.

Evidence scope

1 affected URL
  • https://acme-startup.dev

AI fix prompts

Scanner issues and evidence

DMARC record is missing — domain can be spoofed

dns-email / dns_email.missing_dmarc

medium

Evidence URLs

  • https://acme-startup.dev
{
  "checkedName": "_dmarc.acme-startup.dev",
  "records": [],
  "spfRecord": "v=spf1 include:_spf.google.com ~all",
  "note": "No DMARC record was found, so mailbox providers receive no policy for mail that fails SPF/DKIM alignment. Anyone can send mail that claims to be from this domain, and receivers have no instruction to reject it."
}
SecuritylowConfirmed

Declare SameSite on first-party cookies

1 finding(s) point to this root issue on acme-startup.dev. The referral cookie is Secure but leaves SameSite to browser defaults.

Why it matters

Weak cookie attributes can make cross-site request abuse easier and behave inconsistently across browsers and embedded contexts. Low severity here because the cookie is not session-like.

Fix overview

Set SameSite=Lax (or Strict) explicitly wherever the acme_ref cookie is written; keep Secure and add HttpOnly if client JavaScript does not need to read it.

Verify

  • curl -I https://acme-startup.dev/ and inspect the Set-Cookie header for SameSite=Lax.

Evidence scope

1 affected URL
  • https://acme-startup.dev/

AI fix prompts

Scanner issues and evidence

Cookie is missing SameSite

cookies / cookies.missing_samesite

low

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "cookieName": "acme_ref",
  "sessionLike": false,
  "attributes": [
    "Secure",
    "Path=/"
  ],
  "note": "The referral-attribution cookie is set without an explicit SameSite attribute. Modern browsers default to Lax, but relying on defaults is fragile across engines and embedded contexts — declare it explicitly."
}

Advisory

SEO, AEO, UX, and launch readiness

These automated findings are advisory. Treat them as launch cleanup and visibility work, not confirmed security vulnerabilities.

ReadinesslowConfirmed

Write meta descriptions for indexable pages

1 finding(s) point to this root issue on acme-startup.dev. 3 of 8 crawled pages ship without a meta description; titles are present everywhere.

Why it matters

Search engines improvise snippets from page text when no description exists. For a pricing page, that improvised snippet is often a cookie notice or nav text — wasted intent from your highest-value searches.

Fix overview

Add unique 140–160 character descriptions via the Next.js Metadata API on /pricing, /changelog, and the launch blog post.

Verify

  • curl -s https://acme-startup.dev/pricing | grep -i 'meta name="description"'
  • Re-run the scan and confirm the SEO lane clears.

Evidence scope

3 affected URLs
  • https://acme-startup.dev/pricing
  • https://acme-startup.dev/changelog
  • https://acme-startup.dev/blog/introducing-acme

AI fix prompts

Scanner issues and evidence

Meta description is missing

seo / seo.missing_description

low

Evidence URLs

  • https://acme-startup.dev/pricing
  • https://acme-startup.dev/changelog
  • https://acme-startup.dev/blog/introducing-acme
{
  "pagesChecked": 8,
  "pagesMissingDescription": 3,
  "foundOn": "https://acme-startup.dev/pricing",
  "titlePresent": true,
  "note": "3 of 8 crawled pages ship without a meta description. Search engines will improvise a snippet from page text, which usually converts worse than copy you control."
}
ReadinesslowLikely

Label the waitlist email inputs

1 finding(s) point to this root issue on acme-startup.dev. Two email-capture inputs rely on placeholder text alone.

Why it matters

Screen-reader users hit an unnamed text field at the exact moment they try to give you their email. It is a two-line fix on the form most correlated with signups.

Fix overview

Give each email input an associated <label> (visually hidden is fine) or an aria-label, and keep the placeholder as a hint rather than the name.

Verify

  • Tab to each input with VoiceOver/NVDA running and confirm ‘Email address’ is announced.
  • Re-run the scan and confirm the accessibility lane clears.

Evidence scope

2 affected URLs
  • https://acme-startup.dev/
  • https://acme-startup.dev/blog

AI fix prompts

Scanner issues and evidence

Form fields lack labels

accessibility / accessibility.form_labels_missing

low

Evidence URLs

  • https://acme-startup.dev/
  • https://acme-startup.dev/blog
{
  "foundOn": "https://acme-startup.dev/",
  "unlabeledInputs": [
    {
      "selector": "input[name=email]",
      "placeholder": "Enter your email"
    },
    {
      "selector": "input[name=email]",
      "placeholder": "Get launch updates"
    }
  ],
  "note": "The waitlist inputs rely on placeholder text alone. Placeholders disappear on focus and are not consistently announced by screen readers — these fields are effectively unnamed for assistive tech."
}
ReadinesslowLikely

Unblock first paint on the landing page

1 finding(s) point to this root issue on acme-startup.dev. A synchronous legacy script and two stylesheets load ahead of first paint.

Why it matters

Every render-blocking asset delays the first impression on the exact page your ads and launch posts point at. On mid-range phones this reads as a blank screen, and bounce happens before the hero exists.

Fix overview

Load /legacy/widget.js with next/script (strategy="lazyOnload" or "afterInteractive"), and let Next.js inline or defer the two stylesheets — check for a stray <link rel="stylesheet"> added outside the build.

Verify

  • Re-run the scan and confirm the render-blocking finding clears.
  • Compare Lighthouse FCP before/after on a throttled mobile profile.

Evidence scope

1 affected URL
  • https://acme-startup.dev/

AI fix prompts

Scanner issues and evidence

Multiple render-blocking assets detected

performance / performance.many_blocking_assets

low

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "blockingStylesheets": 2,
  "blockingScripts": [
    {
      "url": "https://acme-startup.dev/legacy/widget.js",
      "location": "head",
      "async": false
    }
  ],
  "htmlSizeBytes": 84212,
  "note": "A synchronous script and two stylesheets sit in <head> ahead of first paint. On a mid-range phone this is the difference between an instant hero and a visible blank frame."
}
ReadinesslowPossible

Give answer engines something to quote

1 finding(s) point to this root issue on acme-startup.dev. Crawlers can reach the site (see context) but pages offer little quotable structure.

Why it matters

When someone asks ChatGPT or Perplexity “what does Acme do” or “Acme pricing”, assistants quote whoever answers in clean, extractable blocks. Right now that is more likely to be a competitor or a stale third-party page.

Fix overview

Add question-shaped H2 sections with direct 2–3 sentence answers on the homepage and docs, and mark up genuine FAQs with FAQPage structured data.

Verify

  • Validate the FAQPage JSON-LD in Google’s Rich Results test.
  • Re-run the scan and check the AEO lane score.

Evidence scope

2 affected URLs
  • https://acme-startup.dev/
  • https://acme-startup.dev/docs

AI fix prompts

Scanner issues and evidence

Content structure is minimal for AI answer engines

aeo / aeo.answer_structure_sparse

low

Evidence URLs

  • https://acme-startup.dev/
  • https://acme-startup.dev/docs
{
  "foundOn": "https://acme-startup.dev/",
  "headingDepth": 1,
  "questionShapedHeadings": 0,
  "faqSchema": false,
  "note": "Pages render fine for humans but give answer engines little to quote: one heading level, no question-shaped sections, no FAQ or HowTo structured data. Assistants tend to cite competitors whose pages answer questions directly."
}

AEO · How ChatGPT & Claude cite you

AI engine reachability

Whether each answer engine’s crawler can read this site. Blocking limits direct crawling; it does not by itself make citation impossible.

ChatGPT

GPTBot

Reachable

Claude

ClaudeBot

Reachable

Perplexity

PerplexityBot

Reachable

Google Gemini

Google-Extended

Reachable

Bing Copilot

bingbot

Reachable

Meta AI

meta-externalagent

Reachable

Amazon

Amazonbot

Reachable

Apple

Applebot-Extended

Reachable

Only crawlers named in robots.txt signals observed during this scan receive a reachability result.

Context

Context signals

Informational signals explain what LaunchLock observed. They are not counted as problems.

ContextinfoLikely

Domain posture notes

Public DNS and certificate-transparency observations: what exists around your apex domain, so nothing out there surprises you.

Why it matters

Forgotten subdomains and unrestricted certificate issuance are how stale infrastructure quietly becomes an entry point later.

Fix overview

Confirm every discovered origin is intentional, and consider a CAA record naming your certificate authority.

Verify

  • dig CAA acme-startup.dev +short
  • Confirm each public origin (www, api, status) is intentionally exposed.

Evidence scope

4 affected URLs
  • https://acme-startup.dev
  • https://www.acme-startup.dev/
  • https://api.acme-startup.dev/
  • https://staging.acme-startup.dev/

AI fix prompts

Scanner issues and evidence

CAA record is missing

dns-email / dns_email.missing_caa

info

Evidence URLs

  • https://acme-startup.dev
{
  "checkedName": "acme-startup.dev",
  "records": [],
  "note": "Without a CAA record, any public certificate authority may issue certificates for this domain. Adding one (e.g. letsencrypt.org) narrows mis-issuance risk at zero operational cost."
}

Related origins discovered

related-origin-discovery / related_origins.discovered

info

Evidence URLs

  • https://www.acme-startup.dev/
  • https://api.acme-startup.dev/
  • https://status.acme-startup.dev/
{
  "origins": [
    {
      "hostname": "www.acme-startup.dev",
      "observation": "301 redirect to apex"
    },
    {
      "hostname": "api.acme-startup.dev",
      "observation": "serves JSON, 401 without auth"
    },
    {
      "hostname": "status.acme-startup.dev",
      "observation": "hosted status page"
    }
  ],
  "note": "Origins referenced by pages, DNS, and certificates. Confirm each one is meant to be public."
}

Certificate transparency logs list additional subdomains

ct-subdomain-discovery / ct_subdomains.observed

info

Evidence URLs

  • https://staging.acme-startup.dev/
{
  "source": "certificate transparency logs",
  "subdomains": [
    "staging.acme-startup.dev",
    "api.acme-startup.dev",
    "www.acme-startup.dev"
  ],
  "resolution": {
    "staging.acme-startup.dev": "does not currently resolve"
  },
  "note": "CT logs are public history: certificates were issued for these names. staging no longer resolves — fine, but remember that subdomain names themselves are never secret."
}
ContextinfoLikely

Public surface inventory

The routes, endpoints, and client-visible keys a visitor’s browser can enumerate — the map an attacker would start from, kept visible so you review it on purpose.

Why it matters

Endpoints that return public data or verbose errors may need access-control or input-validation review as the product grows.

Fix overview

Skim the endpoint list once per release: everything public should be public on purpose, and POST routes should validate and rate-limit input.

Verify

  • Confirm each listed endpoint is intentionally public and validates input.

Evidence scope

4 affected URLs
  • https://acme-startup.dev/api/auth/session
  • https://acme-startup.dev/api/checkout
  • https://acme-startup.dev/api/waitlist
  • https://acme-startup.dev/_next/static/chunks/main-app-8f31c2.js

AI fix prompts

Scanner issues and evidence

Publishable API key visible in client JavaScript

js-secrets / js_secrets.publishable_key_visible

info

Evidence URLs

  • https://acme-startup.dev/_next/static/chunks/main-app-8f31c2.js
{
  "match": "pk_live_51Q…(redacted)",
  "classification": "publishable — designed to be public",
  "file": "/_next/static/chunks/main-app-8f31c2.js",
  "note": "Stripe publishable keys are safe to ship in the client. Listed so you can confirm no secret (sk_live_…) key ever lands in a bundle — none was found in this scan."
}

Public routes and API endpoints observed

route-discovery / api_discovery.routes_observed

info

Evidence URLs

  • https://acme-startup.dev/api/auth/session
  • https://acme-startup.dev/api/checkout
  • https://acme-startup.dev/api/waitlist
{
  "pagesCrawled": 8,
  "routesObserved": 14,
  "apiEndpoints": [
    "/api/auth/session",
    "/api/auth/signout",
    "/api/checkout",
    "/api/waitlist",
    "/api/feedback"
  ],
  "note": "Inventory of what a visitor’s browser can see, assembled from crawled pages and shipped JavaScript. Nothing here is a vulnerability by itself — it is the map an attacker would start from."
}
ContextinfoLikely

Auth surface inventory

Where credentials are handled on the public surface. Deeper session and role-boundary testing requires project-scoped setup.

Why it matters

Login and signup flows are the highest-value target on any early-stage app; knowing the surface is the prerequisite for testing it.

Fix overview

No action from this scan. Verify ownership to unlock authenticated checks (tenant isolation, role boundaries, session handling).

Verify

  • Verify domain ownership in LaunchLock to enable authenticated scan modes.

Evidence scope

2 affected URLs
  • https://acme-startup.dev/login
  • https://acme-startup.dev/signup

AI fix prompts

Scanner issues and evidence

Authentication surface detected

auth-surface / auth.surface_inventory

info

Evidence URLs

  • https://acme-startup.dev/login
  • https://acme-startup.dev/signup
{
  "loginRoutes": [
    "/login",
    "/signup"
  ],
  "passwordReset": "/forgot-password",
  "provider": "Supabase Auth (inferred from client bundle)",
  "credentialTransport": "https only",
  "note": "Public inventory of where credentials are handled. Signed-in tests such as role and tenant boundaries require project-scoped setup."
}
ContextinfoConfirmed

Browser storage snapshot

What the public pages persist in localStorage and sessionStorage. Nothing sensitive-looking was found.

Why it matters

Tokens or personal data in browser storage would be readable by any injected script; keeping this list boring is the goal.

Fix overview

No action needed. Keep auth tokens in HttpOnly cookies (Supabase’s SSR helpers already do) rather than localStorage.

Verify

  • Application tab → Storage in devtools after logging in: confirm no token-like keys.

Evidence scope

1 affected URL
  • https://acme-startup.dev/

AI fix prompts

Scanner issues and evidence

Browser storage keys observed

browser-storage / browser_storage.local_storage_keys

info

Evidence URLs

  • https://acme-startup.dev/
{
  "localStorage": [
    "theme",
    "acme_banner_dismissed"
  ],
  "sessionStorage": [],
  "sensitiveLooking": [],
  "note": "Nothing token-like or personal is persisted in localStorage or sessionStorage on the public pages."
}
ContextinfoLikely

Stack fingerprint

What the responses reveal about your stack: Next.js on Vercel with Supabase and Stripe. No version numbers leak.

Why it matters

Fingerprints are inventory, not risk — but version-leaking headers would let attackers match exploits to your stack, so this stays monitored.

Fix overview

Nothing to fix. Header hygiene is already good: platform named, versions hidden.

Verify

  • curl -I https://acme-startup.dev/ and confirm no version numbers appear in Server or X-Powered-By.

Evidence scope

1 affected URL
  • https://acme-startup.dev/

AI fix prompts

Scanner issues and evidence

Technology details exposed in response headers

headers / headers.technology_leakage

info

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "server": "Vercel",
  "poweredBy": null,
  "serverIsCommonEdge": true,
  "note": "Headers name the hosting platform but leak no version numbers. Common edge platforms are treated as context, not risk."
}

Technology and hosting stack detected

technology-fingerprint / technology.stack_inventory

info

Evidence URLs

  • https://acme-startup.dev/
{
  "foundOn": "https://acme-startup.dev/",
  "technologies": [
    {
      "name": "Next.js",
      "category": "framework",
      "confidence": "high",
      "sources": [
        "_next asset paths",
        "response headers"
      ]
    },
    {
      "name": "React",
      "category": "framework",
      "confidence": "high",
      "sources": [
        "client bundle markers"
      ]
    },
    {
      "name": "Vercel",
      "category": "hosting",
      "confidence": "high",
      "sources": [
        "response headers: server, x-vercel-id"
      ]
    },
    {
      "name": "Supabase",
      "category": "baas",
      "confidence": "high",
      "sources": [
        "client bundle: supabase-js"
      ]
    },
    {
      "name": "Stripe",
      "category": "payments",
      "confidence": "high",
      "sources": [
        "js.stripe.com script",
        "publishable key"
      ]
    }
  ],
  "note": "Technology and hosting fingerprints are inventory context for the report, not findings to fix."
}
ContextinfoLikely

AI answer engines can reach you

robots.txt permits all eight major AI answer-engine crawlers, so assistants can read and cite the site.

Why it matters

Being readable is the precondition for being cited in AI answers — the growth channel most early sites accidentally turn off.

Fix overview

Keep it this way. If you later add crawler rules, exempt the answer-engine agents you want citing you.

Verify

  • curl -s https://acme-startup.dev/robots.txt

Evidence scope

1 affected URL
  • https://acme-startup.dev/robots.txt

AI fix prompts

Scanner issues and evidence

AI answer engine crawlers can reach this site

aeo / aeo.ai_crawlers_reachable

info

Evidence URLs

  • https://acme-startup.dev/robots.txt
{
  "robotsUrl": "https://acme-startup.dev/robots.txt",
  "policy": "allow_all",
  "agentsChecked": [
    "GPTBot",
    "ClaudeBot",
    "PerplexityBot",
    "Google-Extended",
    "bingbot",
    "meta-externalagent",
    "Amazonbot",
    "Applebot-Extended"
  ],
  "note": "robots.txt permits every major AI answer-engine user-agent, so assistants can read and cite the site. Pair this with better answer structure (see the AEO finding) to actually get cited."
}
ContextinfoPossible

Traffic handling notes

Rate limiting on this public POST endpoint could not be confirmed within the scan's bounded request policy.

Why it matters

An unthrottled waitlist or feedback endpoint is a spam magnet the week you get attention.

Fix overview

Add basic per-IP rate limiting to public POST routes, or configure a project-scoped Deep Scan to test the behavior safely.

Verify

  • Send 10 rapid POSTs to /api/waitlist and confirm 429 responses after the limit.

Evidence scope

1 affected URL
  • https://acme-startup.dev/api/waitlist

AI fix prompts

Scanner issues and evidence

Rate limiting behavior could not be confirmed

traffic-handling / traffic.rate_limiting_unconfirmed

info

Evidence URLs

  • https://acme-startup.dev/api/waitlist
{
  "probesSent": 0,
  "observedHeaders": [],
  "note": "This scan did not repeatedly submit the POST route, so its rate-limit behavior could not be confirmed. Deep Scan can exercise configured endpoints with stricter project controls."
}
ContextinfoConfirmed

Pre-launch housekeeping

Small, optional launch-hygiene items observed during the scan.

Why it matters

A security.txt file routes researcher reports to you instead of to a public tweet.

Fix overview

Publish /.well-known/security.txt with a contact address and policy link.

Verify

  • curl -s https://acme-startup.dev/.well-known/security.txt

Evidence scope

1 affected URL
  • https://acme-startup.dev/.well-known/security.txt

AI fix prompts

Scanner issues and evidence

security.txt is not published

prelaunch / prelaunch.security_txt_missing

info

Evidence URLs

  • https://acme-startup.dev/.well-known/security.txt
{
  "checkedPath": "/.well-known/security.txt",
  "status": 404,
  "note": "Optional, but a one-file way to tell security researchers where to report issues before they post them publicly."
}

What’s already working

32 checks passing

Already working for you — no action needed.

Clickjacking protection in placeSecurity
CORS does not expose responses to untrusted originsSecurity
Directory listing disabledSecurity
HSTS enforced on HTTPSSecurity
HTTP requests redirect to HTTPSSecurity
Login forms submit credentials securelySecurity
MIME-type sniffing protection enabledSecurity
No .env or config files publicly accessibleSecurity
No API keys, tokens, or secrets in client-side JavaScriptSecurity
No mixed HTTP content on HTTPS pagesSecurity
No sensitive data persisted in browser storageSecurity
No source control or project metadata exposedSecurity
No source maps exposed in productionSecurity
Session cookies marked SecureSecurity

Check coverage

This shows what the scan checked and what it could not verify. Unavailable checks may need additional project setup, a provider connection, or an eligible plan.

Security headers

Public site check · 6 signals reviewed

Checked

TLS configuration

Public site check · 1 signal reviewed

Checked

Email and DNS

Public site check · 3 signals reviewed

Checked

Public pages

Public site check · 8 signals reviewed

Checked

Cookie security

Public site check · 1 signal reviewed

Checked

Sign-in surface

Public site check · 1 signal reviewed

Checked

Cross-origin access

Public site check · 0 signals reviewed

Checked

Exposed files

Public site check · 0 signals reviewed

Checked

Client-side secrets

Public site check · 1 signal reviewed

Checked

Source maps

Public site check · 0 signals reviewed

Checked

Next.js posture

Public site check · 0 signals reviewed

Checked

Supabase posture

Public site check · 0 signals reviewed

Checked

Cloud storage

Public site check · 0 signals reviewed

Checked

Browser storage

Public site check · 1 signal reviewed

Checked

Client dependencies

Public site check · 0 signals reviewed

Checked

Script integrity

Public site check · 1 signal reviewed

Checked

Mobile readiness

Public site check · 0 signals reviewed

Checked

Launch readiness

Public site check · 1 signal reviewed

Checked

Traffic handling

Public site check · 1 signal reviewed

Checked

Technology profile

Public site check · 1 signal reviewed

Checked

Edge protection

Public site check · 1 signal reviewed

Checked

Search readiness

Public site check · 3 signals reviewed

Checked

AI visibility

Public site check · 2 signals reviewed

Checked

Performance signals

Public site check · 1 signal reviewed

Checked

Accessibility signals

Public site check · 2 signals reviewed

Checked

Compliance signals

Public site check · 0 signals reviewed

Checked

Public attack surface

Public site check · 1 signal reviewed

Checked

Related sites

Public site check · 1 signal reviewed

Checked

Certificate records

Extended site check · 1 signal reviewed

Checked

Direct origin exposure

Extended site check · 0 signals reviewed

Checked

Browser security posture

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

TLS analysis

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Public site analysis

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Historical pages

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Public code exposure

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Template checks

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Web app checks

Extended site check · 0 signals reviewed

Not checked

This check wasn’t available for this scan.

Public network services

Active check · 0 signals reviewed

Not checked

Complete the active-scan authorization prerequisites to include this check.

Coverage completeness

partial
38
signals reviewed
34 sec
scan time
38
checks considered

Limitations

  • Active checks were not included.
  • Some extended checks were not available for this scan.

Next actions

  • Complete project setup to include broader active checks.
Scope

You may only scan websites and systems you own or are authorized to test.

Disclaimer

Automated security analysis, not a penetration test or professional security guarantee.

The real sample is your own site.

acme-startup.dev is fictional — the report above shows the structure and honesty you can expect, not your findings. A free Quick scan uses a 60-second scan budget, needs no account, and returns your real score with a preview of what it found. Paid plans unlock the full findings list with evidence, AI fix prompts, and exports — everything you just scrolled through.