Catalog / schoolshootingleague.com
55

SEO audit for schoolshootingleague.com

SSPL - Official Website of School Shooting Premier League (SSPL)

other

Health 55/100 (fair) · 26 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

From School to the Olympics – Nurturing Champions

Screenshot of schoolshootingleague.com
26
pages crawled
18
indexable pages
14
errors
69
warnings
244
notices
0
orphan pages
7
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Crawlability 73 7 0 0
Links 73 7 0 1
Agent Readiness 79 0 18 27
Canonical 79 0 18 0
Images 79 0 18 18
Duplicate 87 0 11 8
Titles 98 0 2 5
Content 99 0 1 18
Headings 99 0 1 2
Meta Description 100 0 0 10
Performance 100 0 0 72
Robots 100 0 0 1
Security 100 0 0 27
Social 100 0 0 36
Structured Data 100 0 0 18
URL 100 0 0 1
Findings

Errors (2 rules)

error Broken internal link (target 4xx/5xx)

Rule links.broken_internal · Links · 7 occurrence(s)

Warnings (10 rules)

warning Control has no accessible name

Rule agent.control_no_name · Agent Readiness · 18 occurrence(s)

warning Lorem-ipsum placeholder text in a live page

Rule content.lorem_ipsum · Content · 1 occurrence(s)

warning Duplicate page content

Rule duplicate.content · Duplicate · 2 occurrence(s)

warning Near-duplicate page content

Rule duplicate.near · Duplicate · 4 occurrence(s)

warning Homepage duplicated across protocol/host variants (no redirect)

Rule duplicate.protocol_host · Duplicate · 3 occurrence(s)

  • https://schoolshootingleague.com/ — http://schoolshootingleague.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
  • https://schoolshootingleague.com/ — http://www.schoolshootingleague.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
  • https://schoolshootingleague.com/ — https://www.schoolshootingleague.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.

warning Duplicate <title> across pages

Rule duplicate.title · Duplicate · 2 occurrence(s)

warning Missing <h1>

Rule h1.missing · Headings · 1 occurrence(s)

warning Images missing alt text

Rule images.missing_alt · Images · 18 occurrence(s)

warning Title likely truncated in SERP (too wide)

Rule title.too_long · Titles · 2 occurrence(s)

Notices (21 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 8 occurrence(s)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 18 occurrence(s)

notice Duplicate meta description across pages

Rule duplicate.meta_desc · Duplicate · 8 occurrence(s)

notice Multiple <h1> elements

Rule h1.multiple · Headings · 2 occurrence(s)

notice Likely hero image lacks fetchpriority=high

Rule images.hero_no_fetchpriority · Performance · 18 occurrence(s)

  • https://schoolshootingleague.com/ — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/about.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/all-photos.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/email-verification.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/gallery.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/gallery/sspl-2025-officially-launched.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/gallery/sspl-governing-body-pre-launch.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/gallery/sspl-thank-you-note-by-founder.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/gallery/sspl-trials-pan-india.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/happing-now.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/index.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/league.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/media.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/privacy-policy.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/standings.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/stats.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/team.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://schoolshootingleague.com/terms-condition.php — the likely hero/LCP image (sspl.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.

notice Images without width/height (layout shift / CLS)

Rule images.missing_dimensions · Images · 18 occurrence(s)

notice Internal link has no anchor text / accessible name

Rule links.no_anchor_text · Links · 1 occurrence(s)

  • https://schoolshootingleague.com/media.php — 7 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.

notice Legacy <meta name=keywords> tag present (Google ignores it)

Rule meta.keywords_present · Content · 18 occurrence(s)

notice Missing Open Graph tags

Rule og.missing · Social · 18 occurrence(s)

notice Legacy image format (jpg/png/gif) with no next-gen fallback

Rule perf.images_legacy_format · Performance · 18 occurrence(s)

notice No ETag header (no conditional GET for unchanged pages)

Rule perf.no_etag · Performance · 18 occurrence(s)

  • https://schoolshootingleague.com/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/about.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/all-photos.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/email-verification.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/gallery.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/gallery/sspl-2025-officially-launched.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/gallery/sspl-governing-body-pre-launch.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/gallery/sspl-thank-you-note-by-founder.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/gallery/sspl-trials-pan-india.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/happing-now.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/index.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/league.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/media.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/privacy-policy.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/standings.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/stats.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/team.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://schoolshootingleague.com/terms-condition.php — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.

notice No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 18 occurrence(s)

  • https://schoolshootingleague.com/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/about.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/all-photos.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/email-verification.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/gallery.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/gallery/sspl-2025-officially-launched.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/gallery/sspl-governing-body-pre-launch.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/gallery/sspl-thank-you-note-by-founder.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/gallery/sspl-trials-pan-india.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/happing-now.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/index.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/league.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/media.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/privacy-policy.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/standings.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/stats.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/team.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://schoolshootingleague.com/terms-condition.php — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice robots.txt missing (root returns 404/none)

Rule robots.txt_missing · Robots · 1 occurrence(s)

  • https://schoolshootingleague.com/ — robots.txt did not return a 200 at the site root — a healthy site should serve one (declare your sitemap and confirm the host serves root files)

notice Missing recommended security headers

Rule security.missing_headers · Security · 25 occurrence(s)

notice target=_blank link without rel=noopener (tab-napping)

Rule security.unsafe_cross_origin_links · Security · 2 occurrence(s)

notice Uppercase letters in URL path

Rule url.uppercase · URL · 1 occurrence(s)

Pages (showing 26 of 26)
URLStatusIndexableWordsIn-links
https://schoolshootingleague.com/about.php
About Us - SSPL
200 yes 713 18
https://schoolshootingleague.com/all-photos.php
All Photos - SSPL
200 yes 370 18
https://schoolshootingleague.com/email-verification.php
Email Verification - SSPL
200 yes 318 18
https://schoolshootingleague.com/gallery.php
Gallery - SSPL
200 yes 373 18
https://schoolshootingleague.com/happing-now.php
News - SSPL
200 yes 725 18
https://schoolshootingleague.com/index.php
SSPL - Official Website of School Shooting Premier League (SSPL)
200 yes 1674 18
https://schoolshootingleague.com/league.php
League Details - SSPL
200 yes 914 18
https://schoolshootingleague.com/media.php
Media - SSPL
200 yes 532 18
https://schoolshootingleague.com/privacy-policy.php
Privacy Policy - SSPL
200 yes 997 18
https://schoolshootingleague.com/standings.php
Standings - SSPL
200 yes 478 18
https://schoolshootingleague.com/stats.php
Stats - SSPL
200 yes 429 18
https://schoolshootingleague.com/team.php
Teams - SSPL
200 yes 397 18
https://schoolshootingleague.com/terms-condition.php
Terms and Conditions - SSPL
200 yes 1178 18
https://schoolshootingleague.com/gallery/sspl-2025-officially-launched.php
SSPL 2025 Officially Launched - A New Era Begins! - School Shooting Premier League
200 yes 353 6
https://schoolshootingleague.com/gallery/sspl-governing-body-pre-launch.php
SSPL Governing Body Pre-Launched in Faridabad - School Shooting Premier League
200 yes 353 6
https://schoolshootingleague.com/gallery/sspl-thank-you-note-by-founder.php
Thank You Note by Our Founder - School Shooting Premier League
200 yes 364 6
https://schoolshootingleague.com/gallery/sspl-trials-pan-india.php
SSPL Completes Trials all over India - School Shooting Premier League
200 yes 364 3
https://schoolshootingleague.com/
SSPL - Official Website of School Shooting Premier League (SSPL)
200 yes 1674 0
https://schoolshootingleague.com/images/SSPL-Placeholder.png 200 no 0 1
https://schoolshootingleague.com/images/gallery-1.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-3.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-4.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-5.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-6.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-7.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1
https://schoolshootingleague.com/images/gallery-8.jpg
SSPL - Official Website of School Shooting Premier League (SSPL)
404 no 1674 1

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →