Catalog / zachduncanmedia.com
65

SEO audit for zachduncanmedia.com

Zach Duncan

other

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

Download Markdown report (feed to ChatGPT / Claude / Cursor)
Screenshot of zachduncanmedia.com
49
pages crawled
49
indexable pages
0
errors
230
warnings
348
notices
34
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Content 69 0 51 38
Structured Data 70 0 49 0
Meta Description 71 0 48 0
Links 79 0 34 11
Images 83 0 27 55
Duplicate 94 0 9 0
Performance 94 0 9 129
Agent Readiness 99 0 2 4
Canonical 99 0 1 1
Headings 100 0 0 3
Security 100 0 0 53
Sitemap 100 0 0 1
Social 100 0 0 49
Titles 100 0 0 4
Findings

Warnings (12 rules)

warning Control has no accessible name

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

warning Interior page canonicalizes to the homepage

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

  • https://www.zachduncanmedia.com/commercial — this interior page canonicalizes to the homepage (https://www.zachduncanmedia.com/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.

warning Lorem-ipsum placeholder text in a live page

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

warning Thin content (low word count)

Rule content.thin · Content · 47 occurrence(s)

warning Duplicate page content

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

warning Duplicate <title> across pages

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

warning Images missing alt text

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

warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)

Rule images.no_lazy_lcp_candidate · Performance · 6 occurrence(s)

  • https://www.zachduncanmedia.com/about — the likely hero/LCP image (_x0a3397.jpg) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://www.zachduncanmedia.com/about-1 — the likely hero/LCP image (img_7949.jpg) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://www.zachduncanmedia.com/clients — the likely hero/LCP image (7d3a4661.jpg) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://www.zachduncanmedia.com/contact — the likely hero/LCP image (7d3a7853.jpg) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://www.zachduncanmedia.com/new-page — the likely hero/LCP image (img_6262.jpg) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://www.zachduncanmedia.com/publications — the likely hero/LCP image (screenshot+2026-06-23+at+1.33.02%e2%80%afpm.png) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.

warning Orphan page (no internal inlinks)

Rule links.orphan · Links · 34 occurrence(s)

warning Render-blocking script in <head> (no defer/async)

Rule perf.render_blocking · Performance · 3 occurrence(s)

warning LocalBusiness schema missing required properties (name/address)

Rule schema.localbusiness_incomplete · Structured Data · 49 occurrence(s)

  • https://www.zachduncanmedia.com/ — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/adventure — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/beta-usa — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/commercial — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/dani-bennett-styling — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/desert-maven — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/endurocross — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/eurosport — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/fishpond — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/freightliner-western-star — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/h2r-expeditions — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/holistic-hollow — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/janeys-coffee-house — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/lifestyle-and-branding — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/national-horseman-magazine — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/nocs-provisions — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/numa-brand-lifestyle-skate — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/plaeco — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/portraits — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/pour-caddy — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/sets-of-the-week — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/sweetwool — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/the-cut — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.
  • https://www.zachduncanmedia.com/wildtonic — LocalBusiness structured data is missing required property (name) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended properties (telephone, openingHoursSpecification, geo, priceRange), which enrich the result.

Notices (19 rules)

notice Heading levels skip a level

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

notice No llms.txt for AI agents

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

notice Canonical points to a different URL

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

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

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

  • https://www.zachduncanmedia.com/sets-of-the-week — this page reads as difficult (Flesch Reading Ease 43, 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.zachduncanmedia.com/the-cut — this page reads as difficult (Flesch Reading Ease 43, 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 Multiple <h1> elements

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

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

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

  • https://www.zachduncanmedia.com/ — 6 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.zachduncanmedia.com/about-1 — 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.zachduncanmedia.com/adventure — 33 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.zachduncanmedia.com/beta-usa — 12 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.zachduncanmedia.com/commercial — 6 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.zachduncanmedia.com/dani-bennett-styling — 36 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.zachduncanmedia.com/eurosport — 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.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona — 57 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.zachduncanmedia.com/janeys-coffee-house — 27 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.zachduncanmedia.com/lifestyle-and-branding — 33 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.zachduncanmedia.com/national-horseman-magazine — 6 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.zachduncanmedia.com/new-page — 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.zachduncanmedia.com/numa-brand-lifestyle-skate — 42 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.zachduncanmedia.com/plaeco — 15 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.zachduncanmedia.com/portraits — 36 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.zachduncanmedia.com/sweetwool — 15 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.zachduncanmedia.com/wildtonic — 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.

notice Likely hero image lacks fetchpriority=high

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

  • https://www.zachduncanmedia.com/ — the likely hero/LCP image (7d3a3256.jpg) 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.zachduncanmedia.com/adventure — the likely hero/LCP image (_mgl0919.jpg) 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.zachduncanmedia.com/aravaipa-running — the likely hero/LCP image (_mgl3148.jpg) 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.zachduncanmedia.com/beta-usa — the likely hero/LCP image (img_0096.jpg) 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.zachduncanmedia.com/commercial — the likely hero/LCP image (7d3a3256.jpg) 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.zachduncanmedia.com/dani-bennett-styling — the likely hero/LCP image (img_2619.jpg) 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.zachduncanmedia.com/desert-maven — the likely hero/LCP image (7d3a0121.jpg) 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.zachduncanmedia.com/endurocross — the likely hero/LCP image (img_4212+copy.jpg) 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.zachduncanmedia.com/eurosport — the likely hero/LCP image (_mgl7150.jpg) 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.zachduncanmedia.com/fishpond — the likely hero/LCP image (7d3a3360.jpg) 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.zachduncanmedia.com/freightliner-western-star — the likely hero/LCP image (_mgl0300.jpg) 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.zachduncanmedia.com/gumtree-golf — the likely hero/LCP image (005407-r1-051-24.jpg) 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.zachduncanmedia.com/h2r-expeditions — the likely hero/LCP image (7d3a9915.jpg) 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.zachduncanmedia.com/holistic-hollow — the likely hero/LCP image (_mgl7147.jpg) 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.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona — the likely hero/LCP image (img_2893.jpg) 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.zachduncanmedia.com/janeys-coffee-house — the likely hero/LCP image (img_3048.jpg) 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.zachduncanmedia.com/lifestyle-and-branding — the likely hero/LCP image (img_5416.jpg) 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.zachduncanmedia.com/national-horseman-magazine — the likely hero/LCP image (img_0876.jpg) 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.zachduncanmedia.com/nocs-provisions — the likely hero/LCP image (7d3a9802.jpg) 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.zachduncanmedia.com/numa-brand-lifestyle-skate — the likely hero/LCP image (img_1338.jpg) 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.zachduncanmedia.com/plaeco — the likely hero/LCP image (img_1725.jpg) 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.zachduncanmedia.com/portraits — the likely hero/LCP image (7d3a4979.jpg) 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.zachduncanmedia.com/pour-caddy — the likely hero/LCP image (_mgl8542.jpg) 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.zachduncanmedia.com/sweetwool — the likely hero/LCP image (img_6382.jpg) 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.zachduncanmedia.com/wildtonic — the likely hero/LCP image (img_6273.jpg) 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 · 38 occurrence(s)

notice Internal link has no anchor text / accessible name

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

  • https://www.zachduncanmedia.com/clients — 10 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 Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 10 occurrence(s)

notice Missing Open Graph tags

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

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

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

  • https://www.zachduncanmedia.com/ — 186 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/adventure — 171 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/beta-usa — 12 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/commercial — 186 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/dani-bennett-styling — 36 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/desert-maven — 39 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/endurocross — 18 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/eurosport — 96 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/fishpond — 66 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/freightliner-western-star — 27 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/h2r-expeditions — 66 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/holistic-hollow — 33 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona — 57 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/janeys-coffee-house — 27 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/lifestyle-and-branding — 75 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/national-horseman-magazine — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/nocs-provisions — 30 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/numa-brand-lifestyle-skate — 42 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/plaeco — 15 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/portraits — 63 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/pour-caddy — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/sets-of-the-week — 10 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/sweetwool — 15 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/the-cut — 10 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.zachduncanmedia.com/wildtonic — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.

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

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

  • https://www.zachduncanmedia.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.zachduncanmedia.com/adventure — 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.zachduncanmedia.com/beta-usa — 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.zachduncanmedia.com/commercial — 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.zachduncanmedia.com/dani-bennett-styling — 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.zachduncanmedia.com/desert-maven — 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.zachduncanmedia.com/endurocross — 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.zachduncanmedia.com/eurosport — 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.zachduncanmedia.com/fishpond — 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.zachduncanmedia.com/freightliner-western-star — 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.zachduncanmedia.com/h2r-expeditions — 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.zachduncanmedia.com/holistic-hollow — 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.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona — 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.zachduncanmedia.com/janeys-coffee-house — 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.zachduncanmedia.com/lifestyle-and-branding — 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.zachduncanmedia.com/national-horseman-magazine — 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.zachduncanmedia.com/nocs-provisions — 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.zachduncanmedia.com/numa-brand-lifestyle-skate — 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.zachduncanmedia.com/plaeco — 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.zachduncanmedia.com/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.zachduncanmedia.com/pour-caddy — 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.zachduncanmedia.com/sets-of-the-week — 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.zachduncanmedia.com/sweetwool — 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.zachduncanmedia.com/the-cut — 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.zachduncanmedia.com/wildtonic — 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 target=_blank link without rel=noopener (tab-napping)

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

notice Indexable page not listed in sitemap

Rule sitemap.orphan_not_listed · Sitemap · 1 occurrence(s)

notice Title tag is identical to the H1 (missed keyword variation)

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

notice Title is very short

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

Pages (showing 49 of 49)
URLStatusIndexableWordsIn-links
https://www.zachduncanmedia.com/
Zach Duncan
200 yes 149 49
https://www.zachduncanmedia.com/about
About — Zach Duncan
200 yes 31 49
https://www.zachduncanmedia.com/adventure
Adventure — Zach Duncan
200 yes 139 49
https://www.zachduncanmedia.com/clients
Clients — Zach Duncan
200 yes 44 49
https://www.zachduncanmedia.com/publications
Publications — Zach Duncan
200 yes 45 49
https://www.zachduncanmedia.com/aravaipa-running
Aravaipa Running — Zach Duncan
200 yes 59 1
https://www.zachduncanmedia.com/continental-tires
Continental Tires — Zach Duncan
200 yes 57 1
https://www.zachduncanmedia.com/desert-maven
Desert Maven — Zach Duncan
200 yes 51 1
https://www.zachduncanmedia.com/eurosport
Eurosport — Zach Duncan
200 yes 89 1
https://www.zachduncanmedia.com/fishpond
Fishpond — Zach Duncan
200 yes 69 1
https://www.zachduncanmedia.com/gumtree-golf
Gumtree Golf x Chestnut Sports Club — Zach Duncan
200 yes 55 1
https://www.zachduncanmedia.com/h2r-expeditions
H2R Expeditions — Zach Duncan
200 yes 69 1
https://www.zachduncanmedia.com/holistic-hollow
Holistic Hollow — Zach Duncan
200 yes 47 1
https://www.zachduncanmedia.com/nocs-provisions
Nocs Provisions — Zach Duncan
200 yes 45 1
https://www.zachduncanmedia.com/pour-caddy
Pour Caddy — Zach Duncan
200 yes 31 1
https://www.zachduncanmedia.com/ability-360
Ability 360 — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/about-1
About — Zach Duncan
200 yes 26 0
https://www.zachduncanmedia.com/arizona-wildlife-federation
Arizona Wildlife Federation — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/beta-usa
Beta USA — Zach Duncan
200 yes 33 0
https://www.zachduncanmedia.com/black-rodeo-usa
Black Rodeo USA — Zach Duncan
200 yes 25 0
https://www.zachduncanmedia.com/commercial
Zach Duncan
200 yes 149 0
https://www.zachduncanmedia.com/contact
Contact — Zach Duncan
200 yes 25 0
https://www.zachduncanmedia.com/contact-1
Contact — Zach Duncan
200 yes 83 0
https://www.zachduncanmedia.com/contact-wexley
contact — Zach Duncan
200 yes 25 0
https://www.zachduncanmedia.com/dani-bennett-styling
Dani Bennett Styling — Zach Duncan
200 yes 49 0
https://www.zachduncanmedia.com/endurocross
Endurocross — Zach Duncan
200 yes 37 0
https://www.zachduncanmedia.com/freightliner-western-star
Freightliner / Western Star — Zach Duncan
200 yes 43 0
https://www.zachduncanmedia.com/gensler
Gensler — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/iida-southwest
IIDA Southwest — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/janeys-coffee-co-cave-creek-arizona
Janeys Coffee Co. & Bodega 27 — Zach Duncan
200 yes 63 0
https://www.zachduncanmedia.com/janeys-coffee-house
Janey's Coffee House — Zach Duncan
200 yes 43 0
https://www.zachduncanmedia.com/keep-nature-wild
Keep Nature Wild — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/lifestyle-and-branding
Lifestyle and Branding — Zach Duncan
200 yes 75 0
https://www.zachduncanmedia.com/little-bird-ink
Little Bird Ink — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/mural-mates
Mural Mates — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/national-horseman-magazine
National Horseman Magazine, GRK Farms — Zach Duncan
200 yes 31 0
https://www.zachduncanmedia.com/new-page
New Page — Zach Duncan
200 yes 60 0
https://www.zachduncanmedia.com/new-page-1
New Page — Zach Duncan
200 yes 25 0
https://www.zachduncanmedia.com/new-products
New Products — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/numa-brand-lifestyle-skate
NUMA Brand, Lifestyle, Skate — Zach Duncan
200 yes 53 0
https://www.zachduncanmedia.com/plaeco
Plaeco — Zach Duncan
200 yes 35 0
https://www.zachduncanmedia.com/portraits
Portraits — Zach Duncan
200 yes 67 0
https://www.zachduncanmedia.com/ruben-gallego
Ruben Gallego for Senate — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/sets-of-the-week
Sets of the Week — Zach Duncan
200 yes 372 0
https://www.zachduncanmedia.com/sweetwool
Sweet Wool — Zach Duncan
200 yes 35 0
https://www.zachduncanmedia.com/the-cut
The Cut — Zach Duncan
200 yes 372 0
https://www.zachduncanmedia.com/trout-unlimited
Trout Unlimited — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/west-major
West Major — Zach Duncan
200 yes 21 0
https://www.zachduncanmedia.com/wildtonic
Wild Tonic — Zach Duncan
200 yes 31 0

Audit your own site — free

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

Scan your site →