Catalog / jjtaftphotography.com
65

SEO audit for jjtaftphotography.com

Photo Gallery - JJ Taft Photography

portfolio

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

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

Photographers of Skagit Valley. Professional Wedding and Portrait Images. Affordable Packages. Greater Seattle. Husband and wife team. Licensed and Insured.

50
pages crawled
50
indexable pages
0
errors
115
warnings
654
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Agent Readiness 70 0 50 42
Content 80 0 34 56
Headings 91 0 15 4
Images 95 0 8 68
Canonical 99 0 2 25
Duplicate 99 0 2 20
Links 99 0 2 50
Titles 99 0 2 0
Cache 100 0 0 50
Crawlability 100 0 0 2
Meta Description 100 0 0 14
Performance 100 0 0 152
Security 100 0 0 100
Social 100 0 0 1
Structured Data 100 0 0 50
URL 100 0 0 20
Findings

Warnings (8 rules)

warning Control has no accessible name

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

warning Interior page canonicalizes to the homepage

Rule canonical.points_to_homepage · Canonical · 2 occurrence(s)

  • https://www.jjtaftphotography.com/6987787 — this interior page canonicalizes to the homepage (https://www.jjtaftphotography.com/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
  • https://www.jjtaftphotography.com/gallery — this interior page canonicalizes to the homepage (https://www.jjtaftphotography.com/) — 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 · 34 occurrence(s)

warning Duplicate <title> across pages

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

warning Images missing alt text

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

warning Internal link points to a redirect

Rule links.redirect_target · Links · 2 occurrence(s)

warning Title likely truncated in SERP (too wide)

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

Notices (24 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 20 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 · 21 occurrence(s)

notice Page served uncached (no-store/private or CDN bypass)

Rule cache.not_cacheable · Cache · 50 occurrence(s)

notice Canonical points to a different URL

Rule canonical.non_self · Canonical · 25 occurrence(s)

notice Low text-to-HTML ratio

Rule content.low_ratio · Content · 48 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 8 occurrence(s)

  • https://www.jjtaftphotography.com/blog — this page reads as difficult (Flesch Reading Ease 49, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/ethan-s-senior-portrait-session — this page reads as difficult (Flesch Reading Ease 36, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/fort-casey-portrait-session-with-model-heidi — this page reads as difficult (Flesch Reading Ease 49, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/light-painting-fun — this page reads as difficult (Flesch Reading Ease 47, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/mount-vernon-photographer-vanderveen-farm-winter-wedding — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/page/4 — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/blog/sky-and-donna — this page reads as difficult (Flesch Reading Ease 50, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.jjtaftphotography.com/schedule-a-wedding — this page reads as difficult (Flesch Reading Ease 36, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Duplicate meta description across pages

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

notice Multiple <h1> elements

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

notice Image filename is generic/auto-generated (missed image-search signal)

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

  • https://www.jjtaftphotography.com/ — 22 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/6987787 — 22 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/about — 1 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog — 97 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/brian-and-sarah — 3 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/mount-vernon-photographer-vanderveen-farm-winter-wedding — 19 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/page/2 — 22 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/page/4 — 19 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/rylie-s-senior-portrait-session — 9 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/sky-and-donna — 88 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/blog/spring-wedding-in-the-pnw — 19 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/engagement — 1 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/family-portraits — 64 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/gallery — 22 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/scenic — 7 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/senior-portraits — 214 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/studio-photography — 16 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
  • https://www.jjtaftphotography.com/weddings — 122 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.

notice Likely hero image lacks fetchpriority=high

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

  • https://www.jjtaftphotography.com/ — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/6987787 — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/6987789 — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/about — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/airsoft-war-project — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/brian-and-sarah — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/fort-casey-portrait-session-with-model-heidi — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/jed-and-christa — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/light-painting-fun — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/mount-vernon-photographer-vanderveen-farm-winter-wedding — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/page/2 — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/pnw-engagement-session — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/blog/spring-wedding-in-the-pnw — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/book-a-session-or-event — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/bookings — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/contact — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/engagement — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/family-portraits — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/gallery — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/scenic — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/schedule-a-wedding — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/senior-portraits — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/studio-photography — the likely hero/LCP image (jj+taft_logo_gold.20201.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://www.jjtaftphotography.com/weddings — the likely hero/LCP image (jj+taft_logo_gold.20201.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 · 50 occurrence(s)

notice Internal link has no anchor text / accessible name

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

notice Meta description too short

Rule meta_desc.too_short · Meta Description · 3 occurrence(s)

notice Missing Open Graph tags

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

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

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

notice Large HTML document

Rule perf.large_html · Performance · 2 occurrence(s)

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

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

  • https://www.jjtaftphotography.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://www.jjtaftphotography.com/6987787 — 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://www.jjtaftphotography.com/6987789 — 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://www.jjtaftphotography.com/about — 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://www.jjtaftphotography.com/blog — 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://www.jjtaftphotography.com/blog/airsoft-war-project — 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://www.jjtaftphotography.com/blog/brian-and-sarah — 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://www.jjtaftphotography.com/blog/fort-casey-portrait-session-with-model-heidi — 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://www.jjtaftphotography.com/blog/jed-and-christa — 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://www.jjtaftphotography.com/blog/light-painting-fun — 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://www.jjtaftphotography.com/blog/mount-vernon-photographer-vanderveen-farm-winter-wedding — 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://www.jjtaftphotography.com/blog/page/2 — 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://www.jjtaftphotography.com/blog/pnw-engagement-session — 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://www.jjtaftphotography.com/blog/spring-wedding-in-the-pnw — 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://www.jjtaftphotography.com/book-a-session-or-event — 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://www.jjtaftphotography.com/bookings — 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://www.jjtaftphotography.com/contact — 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://www.jjtaftphotography.com/engagement — 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://www.jjtaftphotography.com/family-portraits — 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://www.jjtaftphotography.com/gallery — 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://www.jjtaftphotography.com/scenic — 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://www.jjtaftphotography.com/schedule-a-wedding — 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://www.jjtaftphotography.com/senior-portraits — 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://www.jjtaftphotography.com/studio-photography — 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://www.jjtaftphotography.com/weddings — 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 URL redirects to another URL

Rule redirect.single · Crawlability · 2 occurrence(s)

notice Missing recommended security headers

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

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

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

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://www.jjtaftphotography.com/
Photo Gallery - JJ Taft Photography
200 yes 34 50
https://www.jjtaftphotography.com/about
JJ Taft Photography is a husband and wife team specializing in wedding, event, & portrait photography, based out of Mount Vernon, Wa - JJ Taft Photography
200 yes 437 50
https://www.jjtaftphotography.com/blog
Blog - JJ Taft Photography
200 yes 1427 50
https://www.jjtaftphotography.com/book-a-session-or-event
Book Your Portrait Session Or Event Now! - JJ Taft Photography
200 yes 420 50
https://www.jjtaftphotography.com/contact
Contact Us - JJ Taft Photography
200 yes 123 50
https://www.jjtaftphotography.com/engagement
Couples and Engagement Photography - JJ Taft Photography
200 yes 32 50
https://www.jjtaftphotography.com/family-portraits
Family Photography - JJ Taft Photography
200 yes 34 50
https://www.jjtaftphotography.com/gallery
Photo Gallery - JJ Taft Photography
200 yes 34 50
https://www.jjtaftphotography.com/scenic
Outdoor Scenic Photography - JJ Taft Photography
200 yes 32 50
https://www.jjtaftphotography.com/schedule-a-wedding
Book Your Wedding Or Engagement Now! - JJ Taft Photography
200 yes 134 50
https://www.jjtaftphotography.com/senior-portraits
Senior Portraits - JJ Taft Photography
200 yes 34 50
https://www.jjtaftphotography.com/studio-photography
Studio Photography - JJ Taft Photography
200 yes 32 50
https://www.jjtaftphotography.com/weddings
Wedding Photography - JJ Taft Photography
200 yes 34 50
https://www.jjtaftphotography.com/6987787
Photo Gallery - JJ Taft Photography
200 yes 34 1
https://www.jjtaftphotography.com/6987789
Contact Us - JJ Taft Photography
200 yes 123 1
https://www.jjtaftphotography.com/blog/page/4
Blog - JJ Taft Photography
200 yes 1032 3
https://www.jjtaftphotography.com/blog/page/3
Blog - JJ Taft Photography
200 yes 630 3
https://www.jjtaftphotography.com/blog/page/2
Blog - JJ Taft Photography
200 yes 1299 3
https://www.jjtaftphotography.com/blog/ethan-s-senior-portrait-session
Ethan's Senior Portrait Session - Blog - JJ Taft Photography
200 yes 358 2
https://www.jjtaftphotography.com/blog/rylie-s-senior-portrait-session
Rylie's Senior Portrait Session - Blog - JJ Taft Photography
200 yes 238 2
https://www.jjtaftphotography.com/blog/sky-and-donna
Sky and Donna - Blog - JJ Taft Photography
200 yes 890 2
https://www.jjtaftphotography.com/blog/mount-vernon-photographer-vanderveen-farm-winter-wedding
Vanderveen Farm Wedding, Skagit Valley, WA. Greater Seattle area. - Blog - JJ Taft Photography
200 yes 568 14
https://www.jjtaftphotography.com/blog/fort-casey-portrait-session-with-model-heidi
Fort Casey Portrait & Scenic Session - Blog - JJ Taft Photography
200 yes 491 11
https://www.jjtaftphotography.com/blog/tagged/Skagit-Valley-Photographer
Blog - JJ Taft Photography
200 yes 60 5
https://www.jjtaftphotography.com/blog/airsoft-war-project
Airsoft War Project - Blog - JJ Taft Photography
200 yes 86 3
https://www.jjtaftphotography.com/blog/brian-and-sarah
Brian and Sarah - Blog - JJ Taft Photography
200 yes 414 2
https://www.jjtaftphotography.com/blog/jed-and-christa
Jed and Christa - Blog - JJ Taft Photography
200 yes 380 2
https://www.jjtaftphotography.com/blog/spring-wedding-in-the-pnw
Spring Wedding in the PNW - Blog - JJ Taft Photography
200 yes 563 2
https://www.jjtaftphotography.com/blog/light-painting-fun
Light Painting Fun - Blog - JJ Taft Photography
200 yes 244 2
https://www.jjtaftphotography.com/blog/pnw-engagement-session
PNW Engagement Session - Blog - JJ Taft Photography
200 yes 358 2
https://www.jjtaftphotography.com/blog/tagged/Coupeville-Washington
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Fort-Casey
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Greater-Seattle-Photographers
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Lighthouse
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Portrait-Photographers
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Portrait-Photography
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Scenic
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Seattle-area-photography
Blog - JJ Taft Photography
200 yes 47 2
https://www.jjtaftphotography.com/blog/tagged/Bridal
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Mount-Vernon-Photographer
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Skagit-Valley-Couple-Photography
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Skagit-Valley-Wedding-Photographers
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Skagit-ValleyWedding-Rentals
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Vanderveen-Farm
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Washington-Wedding
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Wedding
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Wedding-Photographer
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Wedding-Photographers
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/blog/tagged/Winter-Wedding
Blog - JJ Taft Photography
200 yes 45 2
https://www.jjtaftphotography.com/bookings
Book a Session or Event - JJ Taft Photography
200 yes 32 0

Audit your own site — free

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

Scan your site →