SEO audit for appshot.one
AppShot: App Store & Play Store Screenshots for Builders
Health 65/100 (fair) · 12 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Create store-ready App Store and Google Play screenshots from raw screens. Preview in real store context, fix readiness blockers, export exact sizes.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Content | 70 | 0 | 12 | 12 |
| Headings | 70 | 0 | 12 | 0 |
| Canonical | 73 | 0 | 11 | 12 |
| Links | 73 | 0 | 11 | 0 |
| Cache | 100 | 0 | 0 | 12 |
| Performance | 100 | 0 | 0 | 24 |
| Security | 100 | 0 | 0 | 12 |
Warnings (4 rules)
warning Interior page canonicalizes to the homepage
Rule canonical.points_to_homepage · Canonical · 11 occurrence(s)
- https://appshot.one/app-store-screenshot-examples — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/best-app-store-screenshot-tool — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/claude-code-app-store-screenshots — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/codex-app-store-screenshots — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/first-3-app-store-screenshots — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/how-many-app-store-screenshots — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/product-hunt-launch-screenshots — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/resources — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/screenshot-copy-examples — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/vibe-coding-app-launch-checklist — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
- https://appshot.one/why-app-store-screenshots-matter — this interior page canonicalizes to the homepage (https://appshot.one/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
warning Thin content (low word count)
Rule content.thin · Content · 12 occurrence(s)
- https://appshot.one/ — 2 words
- https://appshot.one/app-store-screenshot-examples — 2 words
- https://appshot.one/best-app-store-screenshot-tool — 2 words
- https://appshot.one/claude-code-app-store-screenshots — 2 words
- https://appshot.one/codex-app-store-screenshots — 2 words
- https://appshot.one/first-3-app-store-screenshots — 2 words
- https://appshot.one/how-many-app-store-screenshots — 2 words
- https://appshot.one/product-hunt-launch-screenshots — 2 words
- https://appshot.one/resources — 2 words
- https://appshot.one/screenshot-copy-examples — 2 words
- https://appshot.one/vibe-coding-app-launch-checklist — 2 words
- https://appshot.one/why-app-store-screenshots-matter — 2 words
warning Missing <h1>
Rule h1.missing · Headings · 12 occurrence(s)
- https://appshot.one/
- https://appshot.one/app-store-screenshot-examples
- https://appshot.one/best-app-store-screenshot-tool
- https://appshot.one/claude-code-app-store-screenshots
- https://appshot.one/codex-app-store-screenshots
- https://appshot.one/first-3-app-store-screenshots
- https://appshot.one/how-many-app-store-screenshots
- https://appshot.one/product-hunt-launch-screenshots
- https://appshot.one/resources
- https://appshot.one/screenshot-copy-examples
- https://appshot.one/vibe-coding-app-launch-checklist
- https://appshot.one/why-app-store-screenshots-matter
warning Orphan page (no internal inlinks)
Rule links.orphan · Links · 11 occurrence(s)
- https://appshot.one/app-store-screenshot-examples — no internal links point here
- https://appshot.one/best-app-store-screenshot-tool — no internal links point here
- https://appshot.one/claude-code-app-store-screenshots — no internal links point here
- https://appshot.one/codex-app-store-screenshots — no internal links point here
- https://appshot.one/first-3-app-store-screenshots — no internal links point here
- https://appshot.one/how-many-app-store-screenshots — no internal links point here
- https://appshot.one/product-hunt-launch-screenshots — no internal links point here
- https://appshot.one/resources — no internal links point here
- https://appshot.one/screenshot-copy-examples — no internal links point here
- https://appshot.one/vibe-coding-app-launch-checklist — no internal links point here
- https://appshot.one/why-app-store-screenshots-matter — no internal links point here
Notices (7 rules)
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 12 occurrence(s)
- https://appshot.one/ — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/app-store-screenshot-examples — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/best-app-store-screenshot-tool — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/claude-code-app-store-screenshots — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/codex-app-store-screenshots — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/first-3-app-store-screenshots — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/how-many-app-store-screenshots — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/product-hunt-launch-screenshots — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/resources — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/screenshot-copy-examples — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/vibe-coding-app-launch-checklist — Cache-Control: no-cache, must-revalidate, max-age=0
- https://appshot.one/why-app-store-screenshots-matter — Cache-Control: no-cache, must-revalidate, max-age=0
notice Canonical target reachable only via a canonical tag (no inlinks)
Rule canonical.isolated_url · Canonical · 1 occurrence(s)
- https://appshot.one/ — this URL is a canonical target but has no internal links pointing to it — crawlers only learn of it via the canonical tag. Add direct internal links (or list it in the sitemap).
notice Canonical points to a different URL
Rule canonical.non_self · Canonical · 11 occurrence(s)
- https://appshot.one/app-store-screenshot-examples — canonical=https://appshot.one/
- https://appshot.one/best-app-store-screenshot-tool — canonical=https://appshot.one/
- https://appshot.one/claude-code-app-store-screenshots — canonical=https://appshot.one/
- https://appshot.one/codex-app-store-screenshots — canonical=https://appshot.one/
- https://appshot.one/first-3-app-store-screenshots — canonical=https://appshot.one/
- https://appshot.one/how-many-app-store-screenshots — canonical=https://appshot.one/
- https://appshot.one/product-hunt-launch-screenshots — canonical=https://appshot.one/
- https://appshot.one/resources — canonical=https://appshot.one/
- https://appshot.one/screenshot-copy-examples — canonical=https://appshot.one/
- https://appshot.one/vibe-coding-app-launch-checklist — canonical=https://appshot.one/
- https://appshot.one/why-app-store-screenshots-matter — canonical=https://appshot.one/
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 12 occurrence(s)
- https://appshot.one/ — 0.1%
- https://appshot.one/app-store-screenshot-examples — 0.1%
- https://appshot.one/best-app-store-screenshot-tool — 0.1%
- https://appshot.one/claude-code-app-store-screenshots — 0.1%
- https://appshot.one/codex-app-store-screenshots — 0.1%
- https://appshot.one/first-3-app-store-screenshots — 0.1%
- https://appshot.one/how-many-app-store-screenshots — 0.1%
- https://appshot.one/product-hunt-launch-screenshots — 0.1%
- https://appshot.one/resources — 0.1%
- https://appshot.one/screenshot-copy-examples — 0.1%
- https://appshot.one/vibe-coding-app-launch-checklist — 0.1%
- https://appshot.one/why-app-store-screenshots-matter — 0.1%
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 12 occurrence(s)
- https://appshot.one/ — 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://appshot.one/app-store-screenshot-examples — 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://appshot.one/best-app-store-screenshot-tool — 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://appshot.one/claude-code-app-store-screenshots — 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://appshot.one/codex-app-store-screenshots — 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://appshot.one/first-3-app-store-screenshots — 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://appshot.one/how-many-app-store-screenshots — 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://appshot.one/product-hunt-launch-screenshots — 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://appshot.one/resources — 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://appshot.one/screenshot-copy-examples — 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://appshot.one/vibe-coding-app-launch-checklist — 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://appshot.one/why-app-store-screenshots-matter — 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 · 12 occurrence(s)
- https://appshot.one/ — 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://appshot.one/app-store-screenshot-examples — 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://appshot.one/best-app-store-screenshot-tool — 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://appshot.one/claude-code-app-store-screenshots — 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://appshot.one/codex-app-store-screenshots — 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://appshot.one/first-3-app-store-screenshots — 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://appshot.one/how-many-app-store-screenshots — 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://appshot.one/product-hunt-launch-screenshots — 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://appshot.one/resources — 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://appshot.one/screenshot-copy-examples — 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://appshot.one/vibe-coding-app-launch-checklist — 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://appshot.one/why-app-store-screenshots-matter — 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 Missing recommended security headers
Rule security.missing_headers · Security · 12 occurrence(s)
- https://appshot.one/ — CSP
- https://appshot.one/app-store-screenshot-examples — CSP
- https://appshot.one/best-app-store-screenshot-tool — CSP
- https://appshot.one/claude-code-app-store-screenshots — CSP
- https://appshot.one/codex-app-store-screenshots — CSP
- https://appshot.one/first-3-app-store-screenshots — CSP
- https://appshot.one/how-many-app-store-screenshots — CSP
- https://appshot.one/product-hunt-launch-screenshots — CSP
- https://appshot.one/resources — CSP
- https://appshot.one/screenshot-copy-examples — CSP
- https://appshot.one/vibe-coding-app-launch-checklist — CSP
- https://appshot.one/why-app-store-screenshots-matter — CSP
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://appshot.one/ AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/app-store-screenshot-examples AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/best-app-store-screenshot-tool AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/claude-code-app-store-screenshots AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/codex-app-store-screenshots AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/first-3-app-store-screenshots AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/how-many-app-store-screenshots AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/product-hunt-launch-screenshots AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/resources AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/screenshot-copy-examples AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/vibe-coding-app-launch-checklist AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
| https://appshot.one/why-app-store-screenshots-matter AppShot: App Store & Play Store Screenshots for Builders |
200 | yes | 2 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.