UX & SEO: where user experience and search overlap
A comprehensive reference for the user experience patterns that directly affect search performance. Modern search engines measure user satisfaction signals heavily — pogo-sticking, dwell time, return…
Information Architecture, Navigation Design, Page Layout, Mobile Experience, Engagement Patterns, and the Intersection of User Experience with Search Performance
A comprehensive reference for the user experience patterns that directly affect search performance. Modern search engines measure user satisfaction signals heavily — pogo-sticking, dwell time, return visits, navigation depth all factor into ranking. Sites with strong UX outrank sites with weak UX even when on-page SEO is similar.
Cross-stack implementation note: the code samples in this framework are written in plain HTML for clarity. For React, Vue, Svelte, Next.js, Nuxt, SvelteKit, Astro, Hugo, 11ty, Remix, WordPress, Shopify, and Webflow equivalents of every pattern below, see
framework-cross-stack-implementation.md. For pure client-rendered SPAs (no SSR/SSG) seeframework-react.md. For Tailwind-specific concerns (purge, dynamic classes, dark-mode CLS, focus accessibility) seeframework-tailwind.md.
1. Document Purpose
UX and SEO converge in 2026 more than ever. Page Experience signals (Core Web Vitals) are explicit ranking factors. Helpful Content System rewards content that actually satisfies users. AI engines preferentially cite well-structured, navigable sources. CRO fundamentals overlap with engagement signals.
This framework specifies UX patterns that simultaneously serve users and search optimization. Where framework-cro.md focuses on conversion, this framework focuses on broader UX affecting how users interact with content and navigate sites.
1.1 Required Tools
- Hotjar / FullStory / Microsoft Clarity — heatmaps and session recordings
- GA4 engagement metrics — bounce rate, engagement rate, session duration
- Lighthouse — UX audit metrics
- Card sorting tools — OptimalSort for IA testing
- Tree testing tools — Treejack for navigation testing
2. Information Architecture
Information architecture (IA) is how content is organized and labeled.
2.1 IA Principles
ia_principles:
user_mental_models:
description: "Organize how users think, not how you do"
method: "Card sorting reveals natural categorizations"
shallow_hierarchy:
rule: "Critical content reachable in 3 clicks or fewer"
rationale: "Both users and crawlers prefer shallow"
consistent_labeling:
rule: "Same concept always has same label"
avoid: "Calling it 'Services' here, 'Solutions' there, 'What We Do' elsewhere"
meaningful_categories:
rule: "Categories should be recognizable user-facing concepts"
avoid: "Internal jargon as user-facing categorization"
primary_user_journeys:
rule: "IA supports the most common user goals first"
method: "Identify top 5-10 user goals; ensure smooth paths"
2.2 Site Architecture Patterns
site_architecture_patterns:
hub_and_spoke:
description: "Topic hub with related sub-pages linking back"
example: "SEO services hub linking to AEO, technical SEO, local SEO sub-pages"
seo_benefit: "Concentrates authority on hub; clear topical signals"
pyramid:
description: "Homepage > category > subcategory > detail"
example: "Common e-commerce pattern"
seo_benefit: "Clear hierarchy; appropriate authority distribution"
flat:
description: "Most pages directly accessible from homepage or main nav"
example: "Smaller sites with limited content"
seo_benefit: "Fast crawl; appropriate for small sites"
mesh:
description: "Heavy cross-linking between related content"
example: "Wikipedia model"
seo_benefit: "Topical authority through dense relevance signals"
silos:
description: "Strict content groupings with limited cross-links"
example: "Sites with very distinct topic verticals"
seo_benefit: "Clear topic separation; risk of orphaning"
For Joseph's portfolio (mostly small business sites), pyramid or hub-and-spoke is typical optimal pattern.
2.3 IA Testing
ia_validation_methods:
card_sorting:
when: "Designing or redesigning IA"
process:
- List all content topics/pages
- Have users group them into categories
- Reveals natural mental models
tools: "OptimalSort, UserZoom, Maze"
tree_testing:
when: "Validating IA design"
process:
- Show users a hierarchical menu
- Ask them to find specific content
- Reveals navigation success rate
tools: "Treejack"
first_click_testing:
when: "Testing navigation effectiveness"
process:
- Show users a page
- Ask them to start a task
- Measure first-click accuracy
research: "First click correctness predicts task completion"
3. Navigation Design
3.1 Primary Navigation
primary_navigation_principles:
visibility:
requirement: "Always accessible from any page"
pattern: "Persistent header navigation"
scope:
rule: "5-7 primary items maximum"
rationale: "Cognitive load increases beyond 7"
if_more_needed: "Group into sub-menus"
labels:
rule: "User language, not internal jargon"
examples:
good: "Services", "About", "Contact"
bad: "Solutions Portfolio", "Our Team Member Directory"
current_section_indication:
requirement: "Visual indicator of current section"
implementation: "Active state styling"
mobile_nav:
pattern: "Hamburger menu standard"
accessibility: "Must work via keyboard and screen reader"
3.2 Navigation Patterns
navigation_patterns:
top_horizontal_nav:
most_common: true
works_for: "Most sites"
limit: "Items + dropdowns"
side_navigation:
works_for: "Documentation, complex hierarchies"
pattern: "Persistent left sidebar with current section expanded"
mega_menu:
works_for: "Sites with many categories (e-commerce)"
requirement: "Must be keyboard accessible"
risk: "Can feel overwhelming if poorly designed"
hidden_navigation:
when: "Mobile (hamburger)"
avoid_on_desktop: "Hiding navigation on desktop reduces discoverability"
3.3 Breadcrumb Navigation
breadcrumb_implementation:
benefits:
- Reveals position in hierarchy
- Provides easy navigation up
- Reinforces site structure for SEO
- Sometimes appears in SERP snippet
pattern: "Home > Category > Subcategory > Current Page"
schema:
type: "BreadcrumbList"
visible_to_user: true
example: |
<script type="application/ld+json">
{
"@type": "BreadcrumbList",
"itemListElement": [
{"@type":"ListItem","position":1,"name":"Home","item":"https://example.com/"},
{"@type":"ListItem","position":2,"name":"Services","item":"https://example.com/services/"},
{"@type":"ListItem","position":3,"name":"Web Development"}
]
}
</script>
3.4 Footer Navigation
footer_navigation:
purposes:
- Secondary navigation for less critical content
- Site map for thoroughness
- Trust signals (NAP, copyright, certifications)
- Legal links (privacy, terms)
organization:
- Group related links
- Provide clear column headers
- Don't overload (footer dump)
required_elements:
- Privacy policy link
- Terms link (where applicable)
- Copyright with current year
- NAP for businesses
- Social media links
3.5 Internal Search
internal_search:
when_to_implement:
- Site has 100+ content pieces
- Users likely to seek specific content
- E-commerce sites
- Documentation sites
implementation_quality:
- Search box prominent
- Auto-suggestions
- Search results page well-designed
- Filters where appropriate
- Track searches in GA4 (reveals content gaps)
search_results_page:
- Show query
- Show result count
- Sort options
- Filter options
- Clear no-results state with suggestions
internal_search_tracking:
- GA4 Enhanced Measurement tracks site_search
- Reveals what users seek
- Identifies content gaps
- Common refinements suggest UX improvements
4. Page Layout
4.1 Above the Fold
The above-the-fold area has disproportionate impact:
above_fold_principles:
hero_section_essentials:
- Clear page purpose (what is this page about?)
- Primary value proposition
- Visual focal point (hero image or design)
- Primary CTA (where conversion-focused)
- Trust signal (rating, badge, brief proof)
load_priority:
- Hero loads fast (LCP target)
- Visible content first
- Below-fold content can lazy-load
device_considerations:
desktop: "Roughly 800x600 area visible"
mobile: "Roughly 375x600 area visible"
plan_for: "Both contexts simultaneously"
4.2 Content Layout
content_layout_principles:
readability:
line_length: "50-75 characters optimal"
line_height: "1.5-1.7 for body text"
paragraph_length: "3-5 sentences typical for web reading"
text_size: "16px minimum body text in 2026"
visual_hierarchy:
- Heading sizes communicate importance
- White space separates sections
- Color and weight emphasize key points
- Don't bold everything (loses meaning)
scannability:
- Subheadings every 200-400 words
- Bullet points for parallel items
- Bold for key terms
- Pull quotes for emphasis
- Images break up text
reading_patterns:
f_pattern: "Web users scan in F-pattern"
z_pattern: "Brief landing pages scan Z-pattern"
implication: "Important info on left and top"
4.3 Whitespace
whitespace_principles:
rationale:
- Reduces cognitive load
- Creates visual breathing room
- Emphasizes important elements
- Improves comprehension
application:
- Generous margins around sections
- Spacing between paragraphs
- Padding around CTAs
- Don't fill every pixel
4.4 Imagery and Visual Hierarchy
visual_design_principles:
image_purpose:
- Should communicate, not just decorate
- Choose imagery aligned with content
- Real photography > stock when possible
- Diagrams and infographics where they explain
color_purpose:
- Brand consistency
- Hierarchy emphasis
- Calls to action distinguished
- Don't use color alone for meaning (accessibility)
typography:
- Limit to 2-3 font families
- Establish clear hierarchy
- Sufficient contrast with background
- Web-safe fonts or properly served webfonts
5. Mobile Experience
In 2026, mobile is primary. Mobile-first indexing has been universal for years.
5.1 Mobile Design Principles
mobile_design_principles:
thumb_friendly:
rule: "Interactive elements within thumb reach"
target_size: "44x44 pixels minimum (Apple HIG)"
spacing: "Adequate space between tappable elements"
prioritized_content:
rule: "Most important content first"
rationale: "Mobile reading is more linear"
readable_text:
body_size: "16px minimum"
line_height: "1.5+"
contrast: "WCAG AA minimum"
fast_load:
rationale: "Mobile networks variable"
target: "LCP under 2.5s on 4G"
touch_interactions:
- No hover-dependent interactions
- Swipe patterns where natural (carousels)
- Pinch-zoom enabled (don't disable)
- Tap targets clearly defined
forms:
- Appropriate input types (email, tel, number)
- Auto-fill compatible
- Minimum field count
- Single column layout
- Easy to advance/return between fields
5.2 Mobile-Specific Patterns
mobile_specific_patterns:
click_to_call:
requirement: "Phone numbers tappable on mobile"
html: '<a href="tel:+15055123662">505-512-3662</a>'
click_to_email:
html: '<a href="mailto:joseph.w.anady@icloud.com">Email</a>'
click_to_directions:
pattern: "Address links to maps app"
html: '<a href="https://maps.google.com/?q=463+State+Highway+76,+Cassville,+MO+65625">Get Directions</a>'
bottom_navigation:
when: "Apps and app-like sites"
pattern: "Persistent bottom nav with key actions"
note: "Less common for content sites"
sticky_cta:
pattern: "CTA stays visible as user scrolls"
implementation: "position: fixed; bottom: 0;"
use_carefully: "Don't obscure content"
5.3 Responsive vs Adaptive vs Mobile-Specific
mobile_implementation_approaches:
responsive_design:
description: "Single codebase fluidly adapts"
pros: "Single source; consistent experience"
cons: "May compromise per-device optimization"
most_common: true
adaptive_design:
description: "Distinct layouts at breakpoints"
pros: "More targeted per device"
cons: "More complex maintenance"
mobile_specific_site:
description: "Separate m.example.com or similar"
pros: "Pure mobile optimization"
cons: "Maintenance burden; canonical complexity"
rare_in_2026: "Generally not recommended"
app_first:
description: "Native app primary, web secondary"
use_case: "Some businesses where app is primary product"
For Joseph's clients: responsive design is standard.
6. Engagement Patterns
6.1 Engagement Signals That Matter
engagement_signals:
measurable_in_ga4:
- Engagement rate (% sessions with engagement)
- Average engagement time per session
- Pages per session
- Returning visitor rate
- Conversions
observed_via_session_recording:
- Scroll patterns
- Click patterns
- Hesitation points
- Frustration signals (rage clicks)
inferred_from_search:
- Pogo-sticking (return to SERP from your page)
- Long-click vs short-click pattern
6.2 Patterns Improving Engagement
engagement_improvement_patterns:
content_quality:
- Answer the user's question directly
- Provide depth and substance
- Original insight beyond restating common info
- Evidence and examples
structure_for_skimmers:
- Clear headings communicate structure
- Bulleted lists for parallel items
- Bold key terms
- Visual breaks
- Summary boxes for key takeaways
multimedia:
- Images breaking up text
- Diagrams illustrating concepts
- Video embedded where helpful
- Interactive elements where useful
related_content:
- Internal links to related pages
- Suggested next reads
- Related articles section
- Breadcrumbs for context
reduce_friction:
- Fast loading
- No intrusive interstitials
- Clear navigation
- Mobile-optimized
- Accessibility maintained
6.3 Anti-Engagement Patterns
patterns_destroying_engagement:
intrusive_interstitials:
examples:
- Email signup popup immediately on page load
- Aggressive cookie banner blocking content
- Newsletter signup covering content
google_penalty: "Mobile interstitial penalty for excessive use"
excessive_ads:
pattern: "Ads above the fold dominating"
google_penalty: "Page Layout algorithm impacts heavy-ad pages"
autoplay_video_with_sound:
impact: "Users immediately leave"
rule: "Never autoplay with sound"
layout_shifts:
metric: "CLS (Cumulative Layout Shift) in Core Web Vitals"
impact: "Frustrating; tap wrong element; user gives up"
slow_loading:
metric: "LCP and other speed metrics"
impact: "Users abandon before content loads"
intrusive_chat_popups:
pattern: "Chat widget popping up immediately"
fix: "Allow user to initiate; or trigger after engagement"
endless_scrolls_without_value:
pattern: "Padding pages to seem comprehensive"
impact: "Users lose patience; leave"
unclear_navigation:
pattern: "Users can't figure out how to find what they need"
impact: "High bounce, low engagement"
7. Page Type-Specific UX
7.1 Homepage UX
homepage_ux:
primary_purposes:
- Communicate what the business is/does
- Establish trust quickly
- Direct visitors to next step
ineffective_homepage:
- Generic hero with vague claim
- No clear value proposition
- No clear next action
- Wall of features without context
effective_homepage:
- Specific value proposition
- Trust signal visible
- Clear paths to top user goals
- Social proof
- Strong primary CTA
7.2 Service/Product Page UX
service_product_page_ux:
user_questions_to_answer:
- What is this exactly?
- What problem does it solve?
- What does it cost?
- What's included?
- How long does it take?
- Why you vs competitors?
- Is it right for me?
- How do I get started?
effective_structure:
- Headline addressing primary intent
- Brief overview
- Detailed description
- Pricing visibility
- Process/timeline
- Social proof
- FAQ
- Clear CTA repeated
7.3 Article/Blog UX
article_blog_ux:
reading_experience:
- Comfortable line length (50-75 chars)
- Readable text size (18px+ for body)
- Sufficient line height (1.5-1.7)
- Subheadings every few paragraphs
- Pull quotes for emphasis
- Images breaking text
navigation_aids:
- Table of contents for long articles
- Reading progress indicator
- Sticky article header showing current section
- Related articles
- Author bio at end
engagement_features:
- Share buttons (where appropriate, not overwhelming)
- Comment functionality (where supported)
- Newsletter signup (in context, not interrupting)
- Related content suggestions
7.4 Contact Page UX
See framework-formoptimization.md for detailed form UX.
contact_page_essentials:
- Multiple contact methods visible
- Real address with map
- Real phone (click-to-call)
- Real email
- Form for asynchronous contact
- Response time commitment
- Hours of operation
- Photo of location or team
- Trust signals
8. Audit Mode
| # | Criterion | Pass/Fail |
|---|---|---|
| UX1 | IA reflects user mental models | |
| UX2 | Critical content within 3 clicks | |
| UX3 | Primary navigation clear and consistent | |
| UX4 | Breadcrumbs implemented with schema | |
| UX5 | Internal search functional (if needed) | |
| UX6 | Above-the-fold communicates page purpose | |
| UX7 | Content is scannable | |
| UX8 | Reading experience comfortable | |
| UX9 | Mobile experience optimized | |
| UX10 | Touch targets sized appropriately | |
| UX11 | Click-to-call on mobile | |
| UX12 | No intrusive interstitials | |
| UX13 | Forms minimal and accessible | |
| UX14 | Trust signals appropriately placed | |
| UX15 | Engagement patterns positive (heatmap evidence) | |
| UX16 | Page type-specific UX appropriate |
Score: 16. World-class UX for SEO: 14+/16.
9. Common Mistakes
- Internal-jargon navigation — confuses users
- Hidden navigation on desktop — reduces discoverability
- Content walls of text — destroys readability
- Mobile not actually optimized — responsive ≠ mobile-friendly
- Tiny touch targets — frustrating
- Aggressive popups — destroys engagement
- Slow load times — users gone before content appears
- Layout shifts — frustrating tap-wrong-thing experience
- Generic stock imagery — destroys authenticity
- No clear next step on any page — orphan UX
End of Framework Document
Companion documents:
framework-cro.md— Conversion-focused UXframework-pageexperience.md— Core Web Vitalsframework-accessibility.md— Accessibility overlapframework-internallinking.md— Cross-content navigationframework-formoptimization.md— Form-specific UX
Want this framework implemented on your site?
ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.
See Engine Optimization service ›