Catalog / juhrrex.com
71

SEO audit for juhrrex.com

Juan Carlos Urrea | UX Designer – User Experience Designer

otherWordPress

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

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

UX Design

19
pages crawled
15
indexable pages
0
errors
66
warnings
179
notices
1
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Duplicate 75 0 16 14
Performance 76 0 15 52
Content 91 0 6 15
Titles 91 0 6 0
Canonical 92 0 5 0
Headings 92 0 5 10
Links 92 0 5 8
Agent Readiness 94 0 4 1
Hreflang 97 0 2 0
Images 98 0 1 16
Meta Description 98 0 1 14
Crawlability 100 0 0 4
Security 100 0 0 15
Social 100 0 0 22
Structured Data 100 0 0 4
URL 100 0 0 4
Findings

Warnings (14 rules)

warning Control has no accessible name

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

warning Thin content (low word count)

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

warning Duplicate page content

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

warning Duplicate <title> across pages

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

warning hreflang set has no self-reference

Rule hreflang.missing_self · Hreflang · 1 occurrence(s)

warning hreflang has no return link (not reciprocal)

Rule hreflang.no_return · Hreflang · 1 occurrence(s)

warning Images missing alt text

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

warning Orphan page (no internal inlinks)

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

warning Internal link points to a redirect

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

warning Missing meta description

Rule meta_desc.missing · Meta Description · 1 occurrence(s)

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

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

warning Title likely truncated in SERP (too wide)

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

Notices (19 rules)

notice No llms.txt for AI agents

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

  • https://juhrrex.com/ — no llms.txt found at the site root — add one so AI agents get a curated site summary

notice Duplicate meta description across pages

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

notice Multiple <h1> elements

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

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

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

  • https://juhrrex.com/ — 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.

notice Likely hero image lacks fetchpriority=high

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

  • https://juhrrex.com/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/author/admin-2/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/caso-flow/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/caso-humano/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/caso-todo1/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/caso-yuxi/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/portafolio/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/portfolio-types/app/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/portfolio-types/experience/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/portfolio-types/software/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/portfolio-types/web/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/work/caso-flow/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/work/caso-humano/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/work/caso-todo1/ — the likely hero/LCP image (logo-nombre.svg) 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://juhrrex.com/work/caso-yuxi/ — the likely hero/LCP image (logo-nombre.svg) 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 · 15 occurrence(s)

notice Internal link has no anchor text / accessible name

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

  • https://juhrrex.com/portfolio-types/app/ — 1 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.
  • https://juhrrex.com/portfolio-types/experience/ — 1 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.
  • https://juhrrex.com/portfolio-types/software/ — 1 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.
  • https://juhrrex.com/portfolio-types/web/ — 1 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 · 4 occurrence(s)

  • https://juhrrex.com/caso-flow/ — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
  • https://juhrrex.com/caso-humano/ — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
  • https://juhrrex.com/caso-todo1/ — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
  • https://juhrrex.com/caso-yuxi/ — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.

notice Missing Open Graph tags

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

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

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

  • https://juhrrex.com/ — 2 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://juhrrex.com/caso-flow/ — 2 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://juhrrex.com/caso-humano/ — 2 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://juhrrex.com/caso-yuxi/ — 2 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://juhrrex.com/work/caso-flow/ — 2 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://juhrrex.com/work/caso-humano/ — 2 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://juhrrex.com/work/caso-yuxi/ — 2 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 ETag header (no conditional GET for unchanged pages)

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

  • https://juhrrex.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://juhrrex.com/author/admin-2/ — 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://juhrrex.com/caso-flow/ — 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://juhrrex.com/caso-humano/ — 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://juhrrex.com/caso-todo1/ — 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://juhrrex.com/caso-yuxi/ — 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://juhrrex.com/portafolio/ — 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://juhrrex.com/portfolio-types/app/ — 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://juhrrex.com/portfolio-types/experience/ — 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://juhrrex.com/portfolio-types/software/ — 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://juhrrex.com/portfolio-types/web/ — 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://juhrrex.com/work/caso-flow/ — 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://juhrrex.com/work/caso-humano/ — 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://juhrrex.com/work/caso-todo1/ — 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://juhrrex.com/work/caso-yuxi/ — 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 · 15 occurrence(s)

  • https://juhrrex.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://juhrrex.com/author/admin-2/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://juhrrex.com/caso-flow/ — 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://juhrrex.com/caso-humano/ — 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://juhrrex.com/caso-todo1/ — 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://juhrrex.com/caso-yuxi/ — 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://juhrrex.com/portafolio/ — 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://juhrrex.com/portfolio-types/app/ — 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://juhrrex.com/portfolio-types/experience/ — 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://juhrrex.com/portfolio-types/software/ — 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://juhrrex.com/portfolio-types/web/ — 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://juhrrex.com/work/caso-flow/ — 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://juhrrex.com/work/caso-humano/ — 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://juhrrex.com/work/caso-todo1/ — 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://juhrrex.com/work/caso-yuxi/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice URL redirects to another URL

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

notice Deep page has no BreadcrumbList structured data

Rule schema.breadcrumb_missing · Structured Data · 4 occurrence(s)

notice Missing recommended security headers

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

Pages (showing 19 of 19)
URLStatusIndexableWordsIn-links
https://juhrrex.com/
Juan Carlos Urrea | UX Designer – User Experience Designer
200 yes 252 15
https://juhrrex.com/portafolio/
Portafolio – Juan Carlos Urrea | UX Designer
200 yes 144 15
https://juhrrex.com/work/caso-todo1/
Caso Todo1: Una sola plataforma. Múltiples posibilidades. – Juan Carlos Urrea | UX Designer
200 yes 1113 7
https://juhrrex.com/work/caso-yuxi/
Caso YUXI: Un onboarding rediseñado desde la experiencia del empleado – Juan Carlos Urrea | UX Designer
200 yes 571 7
https://juhrrex.com/work/caso-flow/
Caso Flow: Transformacion – Juan Carlos Urrea | UX Designer
200 yes 531 5
https://juhrrex.com/work/caso-humano/
Caso Humano: Integracion, tecnologia y cambio – Juan Carlos Urrea | UX Designer
200 yes 531 5
https://juhrrex.com/portfolio-types/app/
App – Juan Carlos Urrea | UX Designer
200 yes 24 4
https://juhrrex.com/portfolio-types/experience/
Experience – Juan Carlos Urrea | UX Designer
200 yes 24 4
https://juhrrex.com/portfolio-types/software/
Software – Juan Carlos Urrea | UX Designer
200 yes 24 4
https://juhrrex.com/portfolio-types/web/
Web – Juan Carlos Urrea | UX Designer
200 yes 24 4
https://juhrrex.com/caso-flow/
Caso Flow: Transformacion – Juan Carlos Urrea | UX Designer
200 yes 531 1
https://juhrrex.com/caso-humano/
Caso Humano: Integracion, tecnologia y cambio – Juan Carlos Urrea | UX Designer
200 yes 531 1
https://juhrrex.com/caso-todo1/
Caso Todo1: Una sola plataforma. Múltiples posibilidades. – Juan Carlos Urrea | UX Designer
200 yes 1113 1
https://juhrrex.com/caso-yuxi/
Caso YUXI: Un onboarding rediseñado desde la experiencia del empleado – Juan Carlos Urrea | UX Designer
200 yes 571 1
https://juhrrex.com/author/admin-2/
admin – Juan Carlos Urrea | UX Designer
200 yes 31 0
https://juhrrex.com/wp-content/uploads/2026/06/caso_flow_featured-1024x683.webp 200 no 0 1
https://juhrrex.com/wp-content/uploads/2026/06/caso_humano_featured-1024x683.webp 200 no 0 1
https://juhrrex.com/wp-content/uploads/2026/06/caso_todo1_featured-1024x683.webp 200 no 0 1
https://juhrrex.com/wp-content/uploads/2026/06/caso_yuxi_featured-1024x683.webp 200 no 0 1

Audit your own site — free

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

Scan your site →