Catalog / tuffproducts.com
65

SEO audit for tuffproducts.com

Tactical and Duty Gear for Shooters of All Levels, TUFF Products- Products that Protect

ecommerce

Health 65/100 (fair) · 50 pages crawled · generated 2026-07-29

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

Official Store, TUFF Products Gear Manufactured For The Shooting Sport Enthusiasts And Law Enforcement Professional

Screenshot of tuffproducts.com
50
pages crawled
44
indexable pages
0
errors
551
warnings
544
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Budget 0 0 418 0
Agent Readiness 74 0 44 45
Structured Data 74 0 44 2
Meta Description 88 0 20 3
Images 90 0 16 44
Titles 98 0 4 12
Content 99 0 2 50
Duplicate 99 0 2 14
Canonical 99 0 1 0
Cache 100 0 0 44
Crawlability 100 0 0 6
Headings 100 0 0 5
Links 100 0 0 1
Performance 100 0 0 184
Security 100 0 0 61
Social 100 0 0 72
URL 100 0 0 1
Findings

Warnings (10 rules)

warning Control has no accessible name

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

warning robots.txt-disallowed URL receives internal links (crawl-budget leak)

Rule budget.disallow_linked · Budget · 418 occurrence(s)

  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&in_stock=1 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&in_stock=1, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=1 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=1, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=2 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=2, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=3 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=3, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=4 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=4, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=5 — internal links point to https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=5, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/cart.php — internal links point to https://tuffproducts.com/cart.php, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/cart.php?action=add&product_id=251 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=251, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/.
  • https://tuffproducts.com/cart.php?action=add&product_id=465 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=465, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/tuff-2019/, https://tuffproducts.com/patches/.
  • https://tuffproducts.com/cart.php?action=add&product_id=467 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=467, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/cop-tuff/.
  • https://tuffproducts.com/cart.php?action=add&product_id=519 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=519, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/patches/, https://tuffproducts.com/patches/fun-patches/.
  • https://tuffproducts.com/cart.php?action=add&product_id=532 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=532, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/tuff-2019/, https://tuffproducts.com/tuff-2017/new/.
  • https://tuffproducts.com/cart.php?action=add&product_id=548 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=548, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/blem-4097/, https://tuffproducts.com/blem7065-cbv-2/.
  • https://tuffproducts.com/cart.php?action=add&product_id=549 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=549, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/blem-4097/.
  • https://tuffproducts.com/cart.php?action=add&product_id=550 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=550, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/blem-4097/.
  • https://tuffproducts.com/cart.php?action=add&product_id=551 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=551, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/.
  • https://tuffproducts.com/cart.php?action=add&product_id=552 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=552, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/patches/, https://tuffproducts.com/law-enforcement-military-patches/.
  • https://tuffproducts.com/cart.php?action=add&product_id=83 — internal links point to https://tuffproducts.com/cart.php?action=add&product_id=83, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/.
  • https://tuffproducts.com/login.php — internal links point to https://tuffproducts.com/login.php, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/login.php?action=create_account — internal links point to https://tuffproducts.com/login.php?action=create_account, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/, https://tuffproducts.com/blems-and-ooops/, https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black — internal links point to https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black%2F+Black — internal links point to https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black%2F+Black, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black%2FBlack — internal links point to https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black%2FBlack, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black++Available+in+ALL+Sizes — internal links point to https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black++Available+in+ALL+Sizes, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/tuff-2019/.
  • https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black+Basketweave — internal links point to https://tuffproducts.com/tuff-2019/?_bc_fsnf=1&Color=Black+Basketweave, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://tuffproducts.com/tuff-2019/.

warning Missing canonical tag

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

warning Thin content (low word count)

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

warning Near-duplicate page content

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

warning Images missing alt text

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

warning BreadcrumbList present but structurally incomplete

Rule schema.breadcrumb_incomplete · Structured Data · 42 occurrence(s)

  • https://tuffproducts.com/4096-tuff-casing-collector-ammo-bag-blue/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/7002-or-2-pack-orange-quickstrip/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/7002-quickstrips-black-2-set/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/7011-10-pack-magazine-storage-fits-10-double-stack-and-20-single-stack-mags/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/blems-and-ooops/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/cop-tuff/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/cop-tuff/law-enforcement-military-patches/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/duty-gear/accessories/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/e-d-c-concealed-carry/accessories/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/hello-my-name-is-influencer-pvc-glow-in-the-dark-patch/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/law-enforcement-military-patches/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/oem-info/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/other-brands/sentinel-concepts-elite-collection/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/patches/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/patches/fun-patches/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/pvc-patch-3-glow-in-the-dark-space-force-with-hook-and-loop-fastener/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/range-gear/bags-for-the-range/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/team-tuff/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/team-tuff/team-tuff-gear/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/tuff-2016/e-d-c/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/tuff-2016/e-d-c/quickstrips/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/tuff-2017/new/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/tuff-2019/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.
  • https://tuffproducts.com/tuff-products/quickstrips/ — a BreadcrumbList is present but structurally incomplete — missing required name. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.

warning Product schema missing required or recommended properties

Rule schema.product_incomplete · Structured Data · 2 occurrence(s)

  • https://tuffproducts.com/7002-or-2-pack-orange-quickstrip/ — Product structured data is missing required property (offers.price) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended property (brand), which enrich the result.
  • https://tuffproducts.com/7002-quickstrips-black-2-set/ — Product structured data is missing required property (offers.price) — without them Google won't generate the rich result. Add each field (and validate with the Rich Results Test). It is also missing recommended property (brand), which enrich the result.

warning Title likely truncated in SERP (too wide)

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

Notices (25 rules)

notice Heading levels skip a level

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

notice No llms.txt for AI agents

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

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

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

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

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

  • https://tuffproducts.com/brands/ — 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://tuffproducts.com/brands/Sentinel-Concepts-Elite.html — this page reads as difficult (Flesch Reading Ease 46, 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://tuffproducts.com/contact-us/ — 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://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/ — 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://tuffproducts.com/sitemap.php — 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://tuffproducts.com/tuff/ — 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.

notice Title tag and meta description are identical

Rule content.title_meta_same · Meta Description · 1 occurrence(s)

notice Duplicate meta description across pages

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

notice Likely hero image lacks fetchpriority=high

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

  • https://tuffproducts.com/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/4096-tuff-casing-collector-ammo-bag-blue/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/7002-quickstrips-black-2-set/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/7011-10-pack-magazine-storage-fits-10-double-stack-and-20-single-stack-mags/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/blems-and-ooops/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/cop-tuff/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/cop-tuff/law-enforcement-military-patches/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/duty-gear/accessories/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/e-d-c-concealed-carry/accessories/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/hello-my-name-is-influencer-pvc-glow-in-the-dark-patch/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/law-enforcement-military-patches/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/oem-info/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/other-brands/sentinel-concepts-elite-collection/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/patches/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/patches/fun-patches/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/pvc-patch-3-glow-in-the-dark-space-force-with-hook-and-loop-fastener/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/range-gear/bags-for-the-range/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/team-tuff/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/team-tuff/team-tuff-gear/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/tuff-2016/e-d-c/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/tuff-2016/e-d-c/quickstrips/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/tuff-2017/new/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/tuff-2019/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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://tuffproducts.com/tuff-products/quickstrips/ — the likely hero/LCP image (tuff_logo_with_web_reg_blk_1515195546__36612.original.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 · 44 occurrence(s)

notice Internal link has no anchor text / accessible name

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

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

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

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

notice Meta description too short

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

notice Missing Open Graph tags

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

notice Large DOM (over 1500 elements) slows rendering & interaction

Rule perf.dom_size_large · Performance · 8 occurrence(s)

  • https://tuffproducts.com/cop-tuff/ — the page has 2228 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/duty-gear/accessories/ — the page has 1983 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/patches/ — the page has 1930 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/patches/fun-patches/ — the page has 1841 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/team-tuff/ — the page has 1523 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/team-tuff/team-tuff-gear/ — the page has 1560 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/tuff-2016/e-d-c/ — the page has 1974 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://tuffproducts.com/tuff-2019/ — the page has 2226 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.

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

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

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

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

  • https://tuffproducts.com/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://tuffproducts.com/4096-tuff-casing-collector-ammo-bag-blue/ — 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://tuffproducts.com/7002-quickstrips-black-2-set/ — 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://tuffproducts.com/7011-10-pack-magazine-storage-fits-10-double-stack-and-20-single-stack-mags/ — 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://tuffproducts.com/blems-and-ooops/ — 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://tuffproducts.com/cop-tuff/ — 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://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/ — 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://tuffproducts.com/cop-tuff/law-enforcement-military-patches/ — 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://tuffproducts.com/duty-gear/accessories/ — 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://tuffproducts.com/e-d-c-concealed-carry/accessories/ — 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://tuffproducts.com/hello-my-name-is-influencer-pvc-glow-in-the-dark-patch/ — 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://tuffproducts.com/law-enforcement-military-patches/ — 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://tuffproducts.com/oem-info/ — 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://tuffproducts.com/other-brands/sentinel-concepts-elite-collection/ — 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://tuffproducts.com/patches/ — 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://tuffproducts.com/patches/fun-patches/ — 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://tuffproducts.com/pvc-patch-3-glow-in-the-dark-space-force-with-hook-and-loop-fastener/ — 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://tuffproducts.com/range-gear/bags-for-the-range/ — 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://tuffproducts.com/team-tuff/ — 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://tuffproducts.com/team-tuff/team-tuff-gear/ — 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://tuffproducts.com/tuff-2016/e-d-c/ — 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://tuffproducts.com/tuff-2016/e-d-c/quickstrips/ — 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://tuffproducts.com/tuff-2017/new/ — 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://tuffproducts.com/tuff-2019/ — 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://tuffproducts.com/tuff-products/quickstrips/ — 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 · 44 occurrence(s)

  • https://tuffproducts.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://tuffproducts.com/4096-tuff-casing-collector-ammo-bag-blue/ — 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://tuffproducts.com/7002-quickstrips-black-2-set/ — 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://tuffproducts.com/7011-10-pack-magazine-storage-fits-10-double-stack-and-20-single-stack-mags/ — 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://tuffproducts.com/blems-and-ooops/ — 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://tuffproducts.com/cop-tuff/ — 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://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/ — 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://tuffproducts.com/cop-tuff/law-enforcement-military-patches/ — 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://tuffproducts.com/duty-gear/accessories/ — 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://tuffproducts.com/e-d-c-concealed-carry/accessories/ — 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://tuffproducts.com/hello-my-name-is-influencer-pvc-glow-in-the-dark-patch/ — 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://tuffproducts.com/law-enforcement-military-patches/ — 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://tuffproducts.com/oem-info/ — 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://tuffproducts.com/other-brands/sentinel-concepts-elite-collection/ — 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://tuffproducts.com/patches/ — 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://tuffproducts.com/patches/fun-patches/ — 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://tuffproducts.com/pvc-patch-3-glow-in-the-dark-space-force-with-hook-and-loop-fastener/ — 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://tuffproducts.com/range-gear/bags-for-the-range/ — 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://tuffproducts.com/team-tuff/ — 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://tuffproducts.com/team-tuff/team-tuff-gear/ — 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://tuffproducts.com/tuff-2016/e-d-c/ — 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://tuffproducts.com/tuff-2016/e-d-c/quickstrips/ — 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://tuffproducts.com/tuff-2017/new/ — 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://tuffproducts.com/tuff-2019/ — 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://tuffproducts.com/tuff-products/quickstrips/ — 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 Blocked by robots.txt

Rule robots.blocked · Crawlability · 6 occurrence(s)

notice No structured data detected

Rule schema.none · Structured Data · 2 occurrence(s)

notice Missing recommended security headers

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

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

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

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

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

notice Title is very short

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

notice Uppercase letters in URL path

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

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://tuffproducts.com/
Tactical and Duty Gear for Shooters of All Levels, TUFF Products- Products that Protect
200 yes 395 44
https://tuffproducts.com/about-us-1/
About Us
200 yes 428 44
https://tuffproducts.com/blems-and-ooops/
Oops and Blems
200 yes 328 44
https://tuffproducts.com/brands/
TUFF Products Brands
200 yes 176 44
https://tuffproducts.com/brands/Sentinel-Concepts-Elite.html
Sentinel Concepts Elite Products - TUFF Products
200 yes 304 44
https://tuffproducts.com/contact-us/
Contact Us
200 yes 199 44
https://tuffproducts.com/cop-tuff/
Cop TUFF - Gear For the Law Enforcement, Military and First Responders
200 yes 1001 44
https://tuffproducts.com/cop-tuff/duty-gear/duty-gear-phone-cases/
Cop TUFF - Duty Gear - Duty Gear Phone Cases - TUFF Products
200 yes 261 44
https://tuffproducts.com/cop-tuff/law-enforcement-military-patches/
Cop TUFF - Law Enforcement Military Patches - TUFF Products
200 yes 380 44
https://tuffproducts.com/duty-gear/accessories/
Cop TUFF - Duty Gear - Accessories - Page 1 - TUFF Products
200 yes 956 44
https://tuffproducts.com/e-d-c-concealed-carry/accessories/
TUFF Products - E.D.C. - Accessories - TUFF Products
200 yes 537 44
https://tuffproducts.com/law-enforcement-military-patches/
Patches - Law Enforcement Military Patches - TUFF Products
200 yes 511 44
https://tuffproducts.com/oem-info/
Custom OEM Products
200 yes 324 44
https://tuffproducts.com/other-brands/sentinel-concepts-elite-collection/
Sentinel Concepts Gear by TUFF
200 yes 443 44
https://tuffproducts.com/patches/
Patches for the Patch lovers
200 yes 1007 44
https://tuffproducts.com/patches/fun-patches/
Patches - Fun Patches - Page 1 - TUFF Products
200 yes 956 44
https://tuffproducts.com/range-gear/bags-for-the-range/
TUFF Products - Range Gear - Bags for the Range - TUFF Products
200 yes 376 44
https://tuffproducts.com/shipping-returns/
Shipping & Returns
200 yes 422 44
https://tuffproducts.com/sitemap.php
Sitemap
200 yes 225 44
https://tuffproducts.com/team-tuff/
Team TUFF Branded Gear for the Team TUFF Fan
200 yes 677 44
https://tuffproducts.com/team-tuff/team-tuff-gear/
Team TUFF - Team TUFF Gear - TUFF Products
200 yes 715 44
https://tuffproducts.com/terms-and-conditions/
Terms and Conditions
200 yes 1594 44
https://tuffproducts.com/tuff-2016/e-d-c/
TUFF Products - E.D.C. - TUFF Products
200 yes 857 44
https://tuffproducts.com/tuff-2016/e-d-c/quickstrips/
TUFF Products - E.D.C. - QuickStrips ¢ - TUFF Products
200 yes 282 44
https://tuffproducts.com/tuff-2017/new/
TUFF Products - NEW - TUFF Products
200 yes 417 44
https://tuffproducts.com/tuff-2019/
2016 TUFF Products Current Product Line
200 yes 1127 44
https://tuffproducts.com/tuff-products/quickstrips/
QuickStrips
200 yes 285 44
https://tuffproducts.com/tuff/
TUFF Products - TUFF Products
200 yes 254 44
https://tuffproducts.com/4096-tuff-casing-collector-ammo-bag-blue/
4096 TUFF Casing Collector Ammo Bag-Blue - TUFF Products
200 yes 428 8
https://tuffproducts.com/7907-quickstrips-tactical-pouch/
7907 QuickStrips Tactical Pouch - TUFF Products
200 yes 1100 8
https://tuffproducts.com/7002-quickstrips-black-2-set/
7002 QuickStrips- Black 2 Set - TUFF Products
200 yes 1303 9
https://tuffproducts.com/7002-or-2-pack-orange-quickstrip/
7002-OR 2 Pack Orange QuickStrip - TUFF Products
200 yes 1121 8
https://tuffproducts.com/tuff-america-250-pvc-patch/
TUFF America 250 PVC Patch - TUFF Products
200 yes 353 5
https://tuffproducts.com/7011-10-pack-magazine-storage-fits-10-double-stack-and-20-single-stack-mags/
7011- 10 Pack Magazine Storage Fits 10 Double Stack and 20 Single Stack Mags - TUFF Products
200 yes 607 5
https://tuffproducts.com/7065-tuff-original-in-line-magazine-pouches/
TUFF Original 5 Inline , 5 pack, 5 side by Side
200 yes 794 5
https://tuffproducts.com/pvc-patch-3-glow-in-the-dark-space-force-with-hook-and-loop-fastener/
PVC Patch 3" Glow in the Dark Space Force With Hook and Loop fastener - TUFF Products
200 yes 416 5
https://tuffproducts.com/hello-my-name-is-influencer-pvc-glow-in-the-dark-patch/
Hello My Name is Influencer PVC Glow in the Dark Patch - TUFF Products
200 yes 382 4
https://tuffproducts.com/blem7065-cbv-2/
Blem7065-CBV-2 - TUFF Products
200 yes 399 5
https://tuffproducts.com/blem7065-nyv-2/
Blem7065-NYV-2 - TUFF Products
200 yes 458 5
https://tuffproducts.com/america-strong-patriotic-badge-band-made-in-the-u-s-a-elastic/
America Strong Patriotic Badge Band. Made in the U.S.A. Elastic - TUFF Products
200 yes 692 3
https://tuffproducts.com/butt-stock-cheek-rest-designed-for-lmt-tactical-single-launcher-expandable-stock/
Butt Stock, Cheek Rest, LMT Tactical Single Launcher Expandable Stock
200 yes 453 3
https://tuffproducts.com/blem-4097/
Blem 4097 - TUFF Products
200 yes 356 3
https://tuffproducts.com/3902-tuff-t-a-s-k-active-shooter-leg-rig-with-p-t-k/
3902 TUFF T.A.S.K. Active Shooter Leg Rig with P.T.K.
200 yes 1285 2
https://tuffproducts.com/custom-flap/
Custom Flap - TUFF Products
200 yes 630 2
https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&in_stock=1 0 no 0 1
https://tuffproducts.com/blems-and-ooops/?_bc_fsnf=1&rating=1 0 no 0 1
https://tuffproducts.com/cart.php 0 no 0 44
https://tuffproducts.com/cart.php?action=add&product_id=532 0 no 0 7
https://tuffproducts.com/login.php 0 no 0 44
https://tuffproducts.com/login.php?action=create_account 0 no 0 44

Audit your own site — free

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

Scan your site →