SAMPLE: generated for illustration on 2026-10-30 from an offline FIXTURE site (fictional business, fictional DNS).

Acme Digital logo
Acme Digital

Website audit: acme-bakery.example

Prepared by Acme Digital · 2026-10-30 · https://acme-bakery.example/

Passive, point-in-time assessment of public pages and public DNS. This report is not a penetration test, security certification, legal or compliance opinion, and does not promise rankings, traffic or security. Absence of a finding does not prove absence of a problem.

Executive summary

We read 4 pages of acme-bakery.example and checked SEO, Security (passive), Links, Email authentication, AI readiness on 2026-10-30, using passive, read-only requests. We found 31 issues: 5 high, 13 medium, 11 low, 2 info. Start with: No /llms.txt; No DMARC record; Missing strict-transport-security. By area: SEO poor (38/100), Security (passive) poor (48/100), Links good (88/100), Email authentication needs work (78/100), AI readiness good (88/100). 1 check could not run or was skipped; they are listed under coverage and nothing was assumed for them. This is a point-in-time, passive assessment, not a penetration test.

AreaHealthScoreFindings
SEOPoor (partial)3812
Security (passive)Poor4810
LinksGood882
Email authenticationNeeds work784
AI readinessGood883

Top priorities

  1. P1No /llms.txt. (AI readiness, effort S) F01
  2. P1No DMARC record. (Email authentication, effort S) F02
  3. P1Missing strict-transport-security. (Security (passive), effort S) F03
  4. P1Plain HTTP does not redirect to HTTPS. (Security (passive), effort S) F04
  5. P1No meta description (3 of 4 pages checked). (SEO, effort S) F05

Findings

F01 · No /llms.txt.

highP1effort S · 0.5-2 hAI readinessowner: Developerobserved

Impact. AI assistants have no short summary of the site and its key pages.

Evidence

Fix. Publish /llms.txt (llmstxt.org): an H1 with the site name, a one-paragraph summary and Markdown links to the key pages.
Where: Files at the web root of the site.

https://acme-bakery.example/llms.txt:
# Site name
> One-paragraph summary of what the business offers.

## Key pages
- [Services](https://acme-bakery.example/services): what we do
- [Contact](https://acme-bakery.example/contact): how to reach us

Verify. curl -s https://acme-bakery.example/llms.txt (starts with "# ")

F02 · No DMARC record.

highP1effort S · 0.5-2 hEmail authenticationowner: DNS adminobserved

Impact. Anyone can send email that claims to be from this domain and receivers have no policy to reject it.

Evidence

Fix. Publish TXT _dmarc.acme-bakery.example: "v=DMARC1; p=none; rua=mailto:dmarc@acme-bakery.example" then move to quarantine/reject.
Where: DNS zone of acme-bakery.example (at the DNS host).

_dmarc.acme-bakery.example.  TXT "v=DMARC1; p=none; rua=mailto:dmarc@acme-bakery.example"   (then p=quarantine, then p=reject)

Verify. dig TXT _dmarc.acme-bakery.example +short

F03 · Missing strict-transport-security.

highP1effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. The first visit (or a typed http:// link) can be downgraded to plain HTTP by an attacker on the network.

Evidence

Fix. Add Strict-Transport-Security: max-age=31536000; includeSubDomains
Where: Response headers: Apache config or .htaccess (Header always set ...).

Strict-Transport-Security: max-age=31536000; includeSubDomains

Verify. curl -sI https://acme-bakery.example/ | grep -i strict-transport-security

F04 · Plain HTTP does not redirect to HTTPS.

highP1effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Send a 301 from http:// to https:// for every path.
Where: Response headers: Apache config or .htaccess (Header always set ...).

http://acme-bakery.example/* -> 301 -> https://acme-bakery.example/*

Verify. curl -sI http://acme-bakery.example/ (expect 301 and Location: https://...)

F05 · No meta description (3 of 4 pages checked).

highP1effort S · 0.5-2 hSEOowner: Contentobserved

Impact. Search engines and AI tools write their own snippet; click-through usually drops.

Pages: https://acme-bakery.example/, https://acme-bakery.example/about, https://acme-bakery.example/contact

Evidence

Fix. Add a 70-160 character meta description that summarises the page.
Where: Page templates / CMS page settings.

<meta name="description" content="One or two sentences (70-160 characters) that say what this page offers and for whom.">

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F06 · No X-Frame-Options or CSP frame-ancestors (clickjacking).

mediumP3effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Other sites can frame these pages and trick visitors into clicks.

Evidence

Fix. Add X-Frame-Options: SAMEORIGIN or CSP frame-ancestors 'self'.
Where: Response headers: Apache config or .htaccess (Header always set ...).

Content-Security-Policy: frame-ancestors 'self'   (or X-Frame-Options: SAMEORIGIN)

Verify. curl -sI https://acme-bakery.example/ | grep -iE "x-frame-options|frame-ancestors"

F07 · Missing x-content-type-options.

mediumP3effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Add X-Content-Type-Options: nosniff
Where: Response headers: Apache config or .htaccess (Header always set ...).

X-Content-Type-Options: nosniff

Verify. curl -sI https://acme-bakery.example/ | grep -i x-content-type-options

F08 · 1 JSON-LD block(s) do not parse as JSON.

mediumP3effort S · 0.5-2 hSEOowner: Developerobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/contact

Evidence

Fix. Fix the JSON syntax of the ld+json block (validate with validator.schema.org).
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the structured-data check) after the change and confirm this finding is gone.

F09 · No canonical link (3 of 4 pages checked).

mediumP3effort S · 0.5-2 hSEOowner: Developerobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/, https://acme-bakery.example/about, https://acme-bakery.example/contact

Evidence

Fix. Add <link rel="canonical"> pointing to the preferred URL.
Where: Page templates / CMS page settings.

<link rel="canonical" href="https://acme-bakery.example/this-page/">

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F10 · Page titles are too short or too long (2 of 4 pages checked).

mediumP3effort S · 0.5-2 hSEOowner: Contentobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/, https://acme-bakery.example/about

Evidence

Fix. Aim for roughly 30-60 characters with the main topic first.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F11 · No DKIM key found at 30 common selectors (it may use a custom selector).

mediumP3effort M · 2-8 hEmail authenticationowner: DNS admininferred

Impact. Affects whether others can send email that looks like it comes from this domain, and whether real mail is delivered.

Basis. Only 30 common DKIM selectors were queried; a custom selector would not be seen, so DKIM may exist.

Evidence

Fix. Enable DKIM signing at your mail provider and publish its key.
Where: DNS zone of acme-bakery.example (at the DNS host).

Verify. dig TXT <selector>._domainkey.acme-bakery.example +short (selector from your mail provider)

F12 · 2 of 8 links checked on the home page are broken.

mediumP3effort M · 2-8 hLinksowner: Contentobserved

Impact. Visitors and crawlers hit dead ends; link value is wasted.

Evidence

Fix. Fix each target or 301-redirect it, and update the links.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the broken-links check) after the change and confirm this finding is gone.

F13 · A page linked from the home page answers HTTP 404.

mediumP3effort M · 2-8 hLinksowner: Contentobserved

Impact. Visitors and crawlers hit dead ends; link value is wasted.

Pages: https://acme-bakery.example/old-page

Evidence

Fix. Fix the page or 301-redirect it, and update the links that point to it.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the page-fetch check) after the change and confirm this finding is gone.

F14 · No XML sitemap found (robots.txt or /sitemap.xml).

mediumP3effort M · 2-8 hSEOowner: Developerobserved

Impact. New and deep pages are discovered more slowly.

Evidence

Fix. Publish /sitemap.xml and reference it in robots.txt.
Where: Page templates / CMS page settings.

https://acme-bakery.example/sitemap.xml  +  robots.txt line: Sitemap: https://acme-bakery.example/sitemap.xml

Verify. curl -sI https://acme-bakery.example/sitemap.xml (200, XML)

F15 · No JSON-LD structured data (2 of 4 pages checked).

mediumP3effort M · 2-8 hSEOowner: Developerobserved

Impact. No eligibility for rich results; machines get less certain facts about the business.

Pages: https://acme-bakery.example/about, https://acme-bakery.example/menu

Evidence

Fix. Add schema.org JSON-LD (Organization/LocalBusiness/Article/Product as fits).
Where: Page templates / CMS page settings.

<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"...","url":"https://acme-bakery.example/","logo":"https://acme-bakery.example/logo.png"}</script>

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F16 · JSON-LD missing required properties: LocalBusiness (address).

mediumP3effort M · 2-8 hSEOowner: Developerobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/

Evidence

Fix. Add the required properties so the markup is eligible for rich results (validate with validator.schema.org or Google's Rich Results Test).
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the structured-data check) after the change and confirm this finding is gone.

F17 · Missing content-security-policy.

mediumP3effort L · 1-3 daysSecurity (passive)owner: Developerobserved

Impact. No browser-enforced limit on which scripts may run if an injection bug exists.

Evidence

Fix. Add a Content-Security-Policy (start with default-src 'self' and loosen as needed; report-only first).
Where: Response headers: Apache config or .htaccess (Header always set ...).

Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'
(start in Report-Only, then switch to Content-Security-Policy)

Verify. curl -sI https://acme-bakery.example/ | grep -i content-security-policy

F18 · Thin content: few words of visible text (2 of 4 pages checked).

mediumP3effort L · 1-3 daysSEOowner: Contentobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/, https://acme-bakery.example/contact

Evidence

Fix. Add useful content that answers the visitor's question.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F19 · No TLS-RPT.

lowP4effort S · 0.5-2 hEmail authenticationowner: DNS adminobserved

Impact. Affects whether others can send email that looks like it comes from this domain, and whether real mail is delivered.

Evidence

Fix. Optional: publish _smtp._tls TXT "v=TLSRPTv1; rua=mailto:..."
Where: DNS zone of acme-bakery.example (at the DNS host).

_smtp._tls.acme-bakery.example.  TXT "v=TLSRPTv1; rua=mailto:tls-reports@acme-bakery.example"

Verify. dig TXT _smtp._tls.acme-bakery.example +short

F20 · Cookie PHPSESSID is missing Secure, HttpOnly, SameSite.

lowP4effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Set Secure; HttpOnly (unless JS needs it); SameSite=Lax on cookies.
Where: Response headers: Apache config or .htaccess (Header always set ...).

Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax

Verify. Re-run this report (or the security-headers check) after the change and confirm this finding is gone.

F21 · Missing permissions-policy.

lowP4effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Add a Permissions-Policy that disables unused features (camera=(), microphone=(), geolocation=()).
Where: Response headers: Apache config or .htaccess (Header always set ...).

Permissions-Policy: camera=(), microphone=(), geolocation=()

Verify. curl -sI https://acme-bakery.example/ | grep -i permissions-policy

F22 · Missing referrer-policy.

lowP4effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Add Referrer-Policy: strict-origin-when-cross-origin
Where: Response headers: Apache config or .htaccess (Header always set ...).

Referrer-Policy: strict-origin-when-cross-origin

Verify. curl -sI https://acme-bakery.example/ | grep -i referrer-policy

F23 · server discloses a version (Apache/2.4.41 (Ubuntu)).

lowP4effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Remove the version from the server header.
Where: Response headers: Apache config or .htaccess (Header always set ...).

Verify. Re-run this report (or the security-headers check) after the change and confirm this finding is gone.

F24 · x-powered-by discloses a version (PHP/7.4.3).

lowP4effort S · 0.5-2 hSecurity (passive)owner: Developerobserved

Impact. Affects how well visitors and their browsers are protected against common web attacks.

Evidence

Fix. Remove the version from the x-powered-by header.
Where: Response headers: Apache config or .htaccess (Header always set ...).

Verify. Re-run this report (or the security-headers check) after the change and confirm this finding is gone.

F25 · Meta description is 47 characters.

lowP4effort S · 0.5-2 hSEOowner: Contentobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/menu

Evidence

Fix. Aim for roughly 70-160 characters.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F26 · HTML is not compressed (4 of 4 pages checked).

lowP4effort S · 0.5-2 hSEOowner: Developerobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/, https://acme-bakery.example/about, https://acme-bakery.example/menu, https://acme-bakery.example/contact

Evidence

Fix. Enable gzip or brotli.
Where: Response headers: Apache config or .htaccess (Header always set ...).

nginx: gzip on; (or brotli)  /  Apache: AddOutputFilterByType DEFLATE text/html

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F27 · No Open Graph tags (4 of 4 pages checked).

lowP4effort S · 0.5-2 hSEOowner: Contentobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/, https://acme-bakery.example/about, https://acme-bakery.example/menu, https://acme-bakery.example/contact

Evidence

Fix. Add og:title, og:description, og:image for link previews.
Where: Page templates / CMS page settings.

<meta property="og:title" content="..."><meta property="og:description" content="..."><meta property="og:image" content="https://acme-bakery.example/og.png">

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F28 · No MTA-STS.

lowP4effort M · 2-8 hEmail authenticationowner: DNS adminobserved

Impact. Affects whether others can send email that looks like it comes from this domain, and whether real mail is delivered.

Evidence

Fix. Optional hardening: publish MTA-STS to enforce TLS for inbound mail.
Where: DNS zone of acme-bakery.example (at the DNS host).

Verify. dig TXT _mta-sts.acme-bakery.example +short

F29 · 2 of 2 images have no alt attribute.

lowP4effort M · 2-8 hSEOowner: Contentobserved

Impact. Affects how search engines crawl, understand and show these pages.

Pages: https://acme-bakery.example/

Evidence

Fix. Add short descriptive alt text (empty alt="" only for decorative images).
Where: Page templates / CMS page settings.

<img src="team.jpg" alt="Our team at the Penang office">   (alt="" only for decorative images)

Verify. Re-run this report (or the seo-page check) after the change and confirm this finding is gone.

F30 · robots.txt blocks AI training crawlers: GPTBot.

infoP4effort S · 0.5-2 hAI readinessowner: Developerobserved

Impact. Affects whether AI assistants and answer engines can read, understand and cite the site.

Evidence

Fix. Fine if intended: this only opts out of model training, not AI search answers.
Where: Page templates / CMS page settings.

Verify. Re-run this report (or the agent-readiness check) after the change and confirm this finding is gone.

F31 · No agent discovery files (/.well-known/x402, /.well-known/mcp.json, /.well-known/agent-card.json, /openapi.json).

infoP4effort M · 2-8 hAI readinessowner: Developerobserved

Impact. Affects whether AI assistants and answer engines can read, understand and cite the site.

Evidence

Fix. Only needed if you offer an API or agent service: publish the matching discovery file so agents can find and pay for it.
Where: Files at the web root of the site.

Verify. Re-run this report (or the agent-readiness check) after the change and confirm this finding is gone.

Implementation plan

Order within a phase: priority, then effort. "depends_on" lists findings to fix first.

Quick wins (this week)

FindingWhatOwnerEffortDepends on
F01No /llms.txt.DeveloperS (0.5-2 h)-
F02No DMARC record.DNS adminS (0.5-2 h)-
F03Missing strict-transport-security.DeveloperS (0.5-2 h)F04
F04Plain HTTP does not redirect to HTTPS.DeveloperS (0.5-2 h)-
F05No meta description (3 of 4 pages checked).ContentS (0.5-2 h)-
F06No X-Frame-Options or CSP frame-ancestors (clickjacking).DeveloperS (0.5-2 h)-
F07Missing x-content-type-options.DeveloperS (0.5-2 h)-

Next 30 days

FindingWhatOwnerEffortDepends on
F081 JSON-LD block(s) do not parse as JSON.DeveloperS (0.5-2 h)-
F09No canonical link (3 of 4 pages checked).DeveloperS (0.5-2 h)-
F10Page titles are too short or too long (2 of 4 pages checked).ContentS (0.5-2 h)-
F11No DKIM key found at 30 common selectors (it may use a custom selector).DNS adminM (2-8 h)-
F122 of 8 links checked on the home page are broken.ContentM (2-8 h)-
F13A page linked from the home page answers HTTP 404.ContentM (2-8 h)-
F14No XML sitemap found (robots.txt or /sitemap.xml).DeveloperM (2-8 h)-
F15No JSON-LD structured data (2 of 4 pages checked).DeveloperM (2-8 h)-
F16JSON-LD missing required properties: LocalBusiness (address).DeveloperM (2-8 h)-

Later

FindingWhatOwnerEffortDepends on
F17Missing content-security-policy.DeveloperL (1-3 days)-
F18Thin content: few words of visible text (2 of 4 pages checked).ContentL (1-3 days)-
F19No TLS-RPT.DNS adminS (0.5-2 h)F28
F20Cookie PHPSESSID is missing Secure, HttpOnly, SameSite.DeveloperS (0.5-2 h)-
F21Missing permissions-policy.DeveloperS (0.5-2 h)-
F22Missing referrer-policy.DeveloperS (0.5-2 h)-
F23server discloses a version (Apache/2.4.41 (Ubuntu)).DeveloperS (0.5-2 h)-
F24x-powered-by discloses a version (PHP/7.4.3).DeveloperS (0.5-2 h)-
F25Meta description is 47 characters.ContentS (0.5-2 h)-
F26HTML is not compressed (4 of 4 pages checked).DeveloperS (0.5-2 h)-
F27No Open Graph tags (4 of 4 pages checked).ContentS (0.5-2 h)-
F28No MTA-STS.DNS adminM (2-8 h)-
F292 of 2 images have no alt attribute.ContentM (2-8 h)-

Needs human review

Coverage

Pages read: 4 (max 10; found from internal links on the home page (same host, robots.txt checked before any request)).

Not crawled because robots.txt disallows them: https://acme-bakery.example/private/admin

Pages that failed: https://acme-bakery.example/old-page (target_http_error)

Areas checked: SEO, Security (passive), Links, Email authentication, AI readiness.

CheckAreaTargetResultTime
canonical-checkSEOhttps://acme-bakery.example/ok1 ms
canonical-checkSEOhttps://acme-bakery.example/aboutok0 ms
canonical-checkSEOhttps://acme-bakery.example/menuok1 ms
canonical-checkSEOhttps://acme-bakery.example/contactok0 ms
page-fetchSEOhttps://acme-bakery.example/ok22 ms
page-fetchSEOhttps://acme-bakery.example/aboutok5 ms
page-fetchSEOhttps://acme-bakery.example/menuok3 ms
page-fetchSEOhttps://acme-bakery.example/contactok3 ms
page-fetchSEOhttps://acme-bakery.example/old-pagefailed (target_http_error)2 ms
seo-pageSEOhttps://acme-bakery.example/ok10 ms
seo-pageSEOhttps://acme-bakery.example/aboutok9 ms
seo-pageSEOhttps://acme-bakery.example/menuok4 ms
seo-pageSEOhttps://acme-bakery.example/contactok4 ms
structured-dataSEOhttps://acme-bakery.example/ok1 ms
structured-dataSEOhttps://acme-bakery.example/aboutok0 ms
structured-dataSEOhttps://acme-bakery.example/menuok0 ms
structured-dataSEOhttps://acme-bakery.example/contactok0 ms
security-headersSecurity (passive)https://acme-bakery.example/ok26 ms
security-scan-liteSecurity (passive)https://acme-bakery.example/ok26 ms
broken-linksLinkshttps://acme-bakery.example/ok39 ms
email-authEmail authenticationacme-bakery.exampleok4 ms
agent-readinessAI readinesshttps://acme-bakery.example/ok37 ms
tech-stackcontexthttps://acme-bakery.example/ok20 ms

Limitations

Not a guarantee. This report is not a penetration test, security certification, legal or compliance opinion, and does not promise rankings, traffic or security. Absence of a finding does not prove absence of a problem.

Detected stack (context, from public signatures): Apache 2.4.41, PHP 7.4.3.