Fitts’s Law: Optimizing Click Targets for Better UX

TL;DR: Fitts’s Law predicts how long it takes to reach a target based on distance and size. Bigger targets closer to the starting position = faster, easier interactions. Apply this by making important buttons large, positioning CTAs near expected cursor locations, utilizing screen edges, and ensuring touch targets meet minimum sizes. This guide shows you how to implement Fitts’s Law for measurably better UX.


The Button You Almost Missed

You’re filling out a form. Fifteen fields. Ten minutes invested. You reach the bottom, find the Submit button.

It’s 40 pixels wide. Tiny.

Your mouse overshoots. You click. Nothing happens—you missed by 3 pixels. You try again. Miss again. Third time, you finally hit it.

Frustrating, right?

That’s Fitts’s Law in action. Or rather, that’s what happens when designers ignore it.

What is Fitts’s Law?

Fitts’s Law describes the relationship between target distance, target size, and movement time. Psychologist Paul Fitts developed it in 1954 while studying human motor systems.

The formula:

MT = a + b × log₂(2D/W)

Where:
MT = Movement Time
a = start/stop time (constant)
b = inherent speed of the device
D = Distance to target
W = Width of target

Don’t worry about memorizing math. Here’s what matters:

Movement time increases with distance and decreases with size.

Want faster interactions? Make targets bigger and closer.

That’s it. Simple principle, profound implications.

Why This Matters for Web Design

Every click requires movement time. Mouse from point A to point B. Finger from resting position to button.

Fitts’s Law predicts exactly how long that takes and what makes it easier or harder.

Small buttons far from the cursor? Slow, error-prone interactions.

Large buttons near expected cursor position? Fast, accurate clicks.

The difference between these two scenarios:

  • 0.8 seconds vs 1.6 seconds per interaction
  • 95% accuracy vs 78% accuracy
  • User satisfaction vs frustration

Multiply that across thousands of users and millions of interactions. Small design decisions have massive cumulative impact.

The Mathematics Made Simple

Let’s break down the formula components:

Distance (D): How Far Users Must Move

<!-- Bad: CTA far from natural reading flow -->
<div class="content">
  <h1>Amazing Product</h1>
  <p>Long description here... [user's attention is here]</p>
</div>

<div class="footer">
  <button style="margin-top: 800px;">Buy Now</button>
  <!-- User must travel 800px from content to button -->
</div>

<!-- Good: CTA near content -->
<div class="content">
  <h1>Amazing Product</h1>
  <p>Long description here... [user's attention is here]</p>
  <button style="margin-top: 20px;">Buy Now</button>
  <!-- Only 20px travel distance -->
</div>

The second example requires 40x less distance. According to Fitts’s Law, it’s roughly 5.4x faster to reach.

Width (W): How Big the Target Is

/* Bad: Tiny button */
.tiny-button {
  width: 60px;
  height: 28px;
  font-size: 12px;
  padding: 4px 8px;
}
/* Index of Difficulty: High - Small target requires precision */

/* Good: Generous button */
.large-button {
  width: 200px;
  height: 48px;
  font-size: 16px;
  padding: 14px 32px;
}
/* Index of Difficulty: Low - Large target forgives aiming errors */

The large button is 3.3x wider and 1.7x taller. Users can click it roughly 2x faster with far fewer errors.

Index of Difficulty (ID)

The log₂(2D/W) part calculates “Index of Difficulty”—how hard it is to hit the target.

Low ID (easy):

  • Large target
  • Short distance
  • Fast, accurate clicks

High ID (hard):

  • Small target
  • Long distance
  • Slow, error-prone clicks

Your job as a designer: Minimize ID for important interactions.

Real-World Applications

1. Button Sizing: The 44×44 Minimum

Apple’s Human Interface Guidelines specify 44×44 pixels as the minimum tap target for touch interfaces. This isn’t arbitrary—it’s based on average fingertip size and Fitts’s Law calculations.

/* Mobile touch targets - MINIMUM sizes */
.touch-target {
  min-width: 44px;
  min-height: 44px;
}

/* Better: Comfortable sizing */
.touch-target-comfortable {
  min-width: 48px;
  min-height: 48px;
  padding: 12px 24px; /* Increases effective target area */
}

/* Best: Primary actions even larger */
.touch-target-primary {
  min-width: 64px;
  min-height: 56px;
  padding: 16px 32px;
}

Real example: iOS keyboard keys are 44px minimum height. Android Material Design recommends 48×48dp. Both based on Fitts’s Law ergonomics.

2. Click Target Spacing: The 8px Rule

Targets need breathing room. Adjacent clickable elements create ambiguity and increase error rates.

<!-- Bad: Cramped buttons -->
<div class="button-group-cramped">
  <button style="margin-right: 2px;">Cancel</button>
  <button style="margin-left: 2px;">Delete</button>
  <!-- 2px gap - users frequently misclick -->
</div>

<!-- Good: Adequate spacing -->
<div class="button-group-spaced">
  <button style="margin-right: 8px;">Cancel</button>
  <button style="margin-left: 8px;">Delete</button>
  <!-- 8px gap - clear distinction between targets -->
</div>

<!-- Best: Larger spacing for dangerous actions -->
<div class="button-group-safe">
  <button style="margin-right: 16px;">Cancel</button>
  <button style="margin-left: 16px;" class="destructive">Delete</button>
  <!-- 16px gap prevents accidental deletion -->
</div>

Google Material Design specifies 8dp minimum spacing between touch targets. This buffer zone reduces misclicks by roughly 40%.

3. Navigation Placement: Corners and Edges Win

Screen edges and corners are infinitely large targets. Users can throw their cursor to a corner without worrying about overshooting.

/* Good: Logo in top-left corner */
.logo {
  position: absolute;
  top: 0;
  left: 0;
  padding: 16px;
  /* Cursor can slam into corner - impossible to overshoot */
}

/* Bad: Logo floated with margin */
.logo-bad {
  position: absolute;
  top: 20px;
  left: 20px;
  /* Requires precision - users can overshoot */
}

Why edges matter:

  • Top-left corner: Logo, home link
  • Top-right corner: User menu, shopping cart
  • Bottom-right corner: Chat widget, scroll-to-top
  • Screen edges: Dock items (macOS), Start button (Windows)

Operating systems put critical UI elements at edges for this exact reason. Web designers should too.

4. Mega Menus vs Dropdowns

Traditional dropdown menus violate Fitts’s Law by requiring precise mouse movements through narrow corridors.

<!-- Bad: Requires precise diagonal movement -->
<nav class="dropdown-narrow">
  <a href="#">Products</a>
  <ul class="dropdown" style="width: 180px;">
    <li><a href="#">Item 1</a></li>
    <li><a href="#">Item 2</a></li>
    <li><a href="#">Item 3</a></li>
  </ul>
  <!-- Moving cursor from "Products" to "Item 3" requires 
       maintaining mouse within narrow 180px column -->
</nav>

<!-- Good: Mega menu with large target areas -->
<nav class="mega-menu">
  <a href="#">Products</a>
  <div class="mega-panel" style="width: 100%; padding: 40px;">
    <div class="column">
      <h3>Category 1</h3>
      <a href="#" style="display: block; padding: 12px 0;">Item 1</a>
      <a href="#" style="display: block; padding: 12px 0;">Item 2</a>
      <a href="#" style="display: block; padding: 12px 0;">Item 3</a>
    </div>
    <!-- Large areas, generous padding, low Index of Difficulty -->
  </div>
</nav>

Amazon’s mega menus exemplify this. Hover over “All”, and you get a massive panel with large, well-spaced links. Fast, easy, error-free navigation.

5. Form Field Sizing

Labels and inputs should form large, cohesive click targets.

<!-- Bad: Only checkbox is clickable -->
<div class="form-field-bad">
  <input type="checkbox" id="terms" style="width: 16px; height: 16px;">
  <label for="terms">I agree to terms</label>
  <!-- Effective click target: 16×16px (256 pixels²) -->
</div>

<!-- Good: Entire label is clickable -->
<div class="form-field-good">
  <label for="terms2" style="display: flex; align-items: center; padding: 12px; cursor: pointer;">
    <input type="checkbox" id="terms2" style="width: 20px; height: 20px; margin-right: 12px;">
    <span>I agree to terms</span>
  </label>
  <!-- Effective click target: ~300×44px (13,200 pixels²) -->
  <!-- 51x larger target area -->
</div>

The second example offers a 51x larger click target. Users can click anywhere on the label text, not just the tiny checkbox.

Implementation tip:

/* Make labels fully clickable */
label {
  display: flex;
  align-items: center;
  padding: 12px;
  cursor: pointer;
  user-select: none;
}

label:hover {
  background: #f5f5f5;
  /* Visual feedback for entire clickable area */
}

input[type="checkbox"],
input[type="radio"] {
  width: 20px;
  height: 20px;
  margin-right: 12px;
  cursor: pointer;
}

6. Mobile Thumb Zones

On mobile devices, Fitts’s Law combines with ergonomics. Some screen areas are easier to reach than others.

┌─────────────────┐
│                 │ ← Hard to reach (top)
│                 │
│  Easy to reach  │ ← Natural thumb zone (middle-bottom)
│     (green)     │
│                 │
└─────────────────┘

Thumb zone heatmap:

  • Easy zone (green): Bottom third, slightly right-biased (for right-handed users)
  • Moderate zone (yellow): Middle third
  • Hard zone (red): Top third, far corners
<!-- Good: Primary action in thumb zone -->
<div class="mobile-layout">
  <header>
    <!-- Navigation, logo - less frequently accessed -->
  </header>
  
  <main>
    <!-- Content - scrollable -->
  </main>
  
  <footer style="position: fixed; bottom: 0; width: 100%;">
    <button class="cta-primary" style="width: 90%; margin: 16px 5%;">
      Add to Cart
    </button>
    <!-- Primary CTA in easy reach zone -->
  </footer>
</div>

<!-- Bad: Primary action at top -->
<div class="mobile-layout-bad">
  <header>
    <button style="position: absolute; top: 16px; right: 16px; width: 60px;">
      Buy
    </button>
    <!-- Users must stretch thumb to top-right corner -->
  </header>
</div>

Instagram, TikTok, and Twitter place primary interaction buttons (like, comment, share) in the bottom third. They understand thumb zone physics.

Advanced Techniques

1. Expanding Click Areas with Padding

The visual button doesn’t need to match the click target exactly. Invisible padding expands the effective target area.

/* Visual button: 120×40px */
/* Actual click target: 152×56px */
.button-expanded {
  display: inline-block;
  padding: 8px 16px; /* Increases click area beyond visual boundary */
  background: #0066cc;
  color: white;
  text-decoration: none;
  border-radius: 4px;
  
  /* Expanded clickable area using pseudo-element */
  position: relative;
}

.button-expanded::before {
  content: '';
  position: absolute;
  top: -8px;
  right: -16px;
  bottom: -8px;
  left: -16px;
  /* Invisible 16px buffer zone around button */
}

This technique is particularly useful for small icons or text links that can’t visually be larger but need easier click targets.

2. Cursor Prediction and Anticipation

Smart interfaces predict where the cursor is likely to move next and subtly expand those targets.

// Predictive target expansion (simplified concept)
let lastCursorPosition = { x: 0, y: 0 };

document.addEventListener('mousemove', (e) => {
  const dx = e.clientX - lastCursorPosition.x;
  const dy = e.clientY - lastCursorPosition.y;
  
  // Predict cursor trajectory
  const trajectory = Math.atan2(dy, dx);
  
  // Find buttons along predicted path
  const buttons = document.querySelectorAll('button');
  buttons.forEach(button => {
    const rect = button.getBoundingClientRect();
    const buttonAngle = Math.atan2(
      rect.top - e.clientY,
      rect.left - e.clientX
    );
    
    // If button is in cursor path, slightly expand it
    if (Math.abs(trajectory - buttonAngle) < 0.5) {
      button.style.transform = 'scale(1.05)';
    } else {
      button.style.transform = 'scale(1)';
    }
  });
  
  lastCursorPosition = { x: e.clientX, y: e.clientY };
});

Subtle, but users subconsciously feel the interface is “helping” them.

3. Gestural Slop: Forgiveness Zones

On touch devices, users rarely tap perfectly centered on targets. Build in forgiveness.

/* Visual button */
.touch-button {
  width: 120px;
  height: 44px;
  background: #0066cc;
  border-radius: 4px;
}

/* Actual touch target (invisible expansion) */
.touch-button::before {
  content: '';
  position: absolute;
  top: -8px;
  right: -8px;
  bottom: -8px;
  left: -8px;
  /* 8px forgiveness zone on all sides */
}

iOS and Android both implement gestural slop—taps slightly outside visual boundaries still register. Your web interface should too.

4. Context-Aware Sizing

Buttons should scale based on their importance and frequency of use.

/* Primary action - largest */
.cta-primary {
  width: 240px;
  height: 56px;
  font-size: 18px;
  padding: 16px 32px;
}

/* Secondary action - medium */
.cta-secondary {
  width: 160px;
  height: 44px;
  font-size: 16px;
  padding: 12px 24px;
}

/* Tertiary action - smallest (but still 44px min) */
.cta-tertiary {
  width: 120px;
  height: 44px;
  font-size: 14px;
  padding: 12px 16px;
}

Users naturally move toward larger targets first. Use size to guide attention and action hierarchy.

Common Mistakes

Mistake 1: Icon Buttons Without Padding

<!-- Bad: 24×24px icon with no padding -->
<button class="icon-only-bad">
  <svg width="24" height="24">...</svg>
</button>

<!-- Good: 24×24px icon with generous padding -->
<button class="icon-only-good" style="width: 48px; height: 48px; padding: 12px;">
  <svg width="24" height="24">...</svg>
</button>

The icon itself is 24×24px in both cases, but the second button provides a 48×48px click target—4x larger area.

Mistake 2: Dense Table Actions

<!-- Bad: Tiny action buttons in table rows -->
<table>
  <tr>
    <td>Item Name</td>
    <td>
      <button style="width: 30px; height: 24px;">Edit</button>
      <button style="width: 30px; height: 24px;">Delete</button>
    </td>
  </tr>
</table>

<!-- Good: Adequate sizing and spacing -->
<table>
  <tr>
    <td>Item Name</td>
    <td>
      <button style="width: 80px; height: 40px; margin-right: 8px;">Edit</button>
      <button style="width: 80px; height: 40px;">Delete</button>
    </td>
  </tr>
</table>

Users frequently misclick tiny table actions. Make them at least 40px tall with clear spacing.

Mistake 3: Floating Action Buttons in Wrong Zones

/* Bad: FAB in hard-to-reach top-right */
.fab-bad {
  position: fixed;
  top: 20px;
  right: 20px;
  width: 56px;
  height: 56px;
  /* Mobile users must stretch to reach */
}

/* Good: FAB in easy thumb zone */
.fab-good {
  position: fixed;
  bottom: 80px; /* Above navigation bar */
  right: 20px;
  width: 56px;
  height: 56px;
  /* Natural thumb position */
}

Google Material Design specifies bottom-right for FABs. That’s Fitts’s Law meeting ergonomics.

Mistake 4: Assuming Mouse Precision

Desktop users have more precision than mobile users, but not infinite precision.

/* Bad: Assuming pixel-perfect mouse control */
.dropdown-item {
  height: 28px;
  padding: 4px 8px;
  /* Requires steady hand to avoid adjacent items */
}

/* Good: Generous targets even on desktop */
.dropdown-item {
  height: 40px;
  padding: 10px 16px;
  /* Easy to target, hard to misclick */
}

Make all clickable elements at least 32px tall on desktop, 44px on mobile.

Mobile vs Desktop: Different Application

Fitts’s Law applies universally, but implementation differs by device.

Desktop Considerations

Advantages:

  • Cursor precision
  • Larger screens = longer distances acceptable
  • Hover states provide feedback

Optimization strategies:

/* Desktop: Hover expansion */
.button-desktop {
  width: 140px;
  height: 44px;
  transition: all 0.2s;
}

.button-desktop:hover {
  width: 160px;
  height: 48px;
  /* Expands as cursor approaches - effectively larger target */
}

Cursor trails: Users can see cursor position and adjust trajectory mid-movement.

Mobile Considerations

Challenges:

  • Finger imprecision (average fingertip: 40-50px)
  • No hover state
  • No visible cursor
  • Hand/thumb occlusion

Optimization strategies:

/* Mobile: Minimum 44×44px, preferably 48×48px */
.button-mobile {
  min-width: 48px;
  min-height: 48px;
  padding: 12px 24px;
  /* Accounts for finger imprecision */
}

/* Mobile: Larger vertical spacing */
.button-group-mobile button {
  margin-bottom: 16px;
  /* Prevents accidental taps on adjacent buttons */
}

Thumb zones: Position primary actions in natural thumb reach areas (bottom third of screen).

Testing Fitts’s Law Implementation

Method 1: Click/Tap Heatmaps

// Track click positions relative to button centers
document.querySelectorAll('button').forEach(button => {
  button.addEventListener('click', (e) => {
    const rect = button.getBoundingClientRect();
    const centerX = rect.left + rect.width / 2;
    const centerY = rect.top + rect.height / 2;
    
    const offsetX = e.clientX - centerX;
    const offsetY = e.clientY - centerY;
    
    analytics.track('click_accuracy', {
      button: button.id,
      offset_x: offsetX,
      offset_y: offsetY,
      target_size: rect.width * rect.height
    });
  });
});

If clicks cluster near edges or outside the button, your target is too small.

Method 2: Task Completion Time

// Measure time from page load to CTA click
const pageLoadTime = performance.now();

document.querySelector('.cta-primary').addEventListener('click', () => {
  const completionTime = performance.now() - pageLoadTime;
  
  analytics.track('cta_completion_time', {
    duration_ms: completionTime,
    button_size: /* button dimensions */,
    button_distance: /* calculated distance from entry point */
  });
});

Longer times indicate high Index of Difficulty.

Method 3: Error Rate Tracking

// Track misclicks (clicks near but not on target)
document.addEventListener('click', (e) => {
  const clickedElement = e.target;
  
  // Check if click was near a button but missed
  const buttons = document.querySelectorAll('button');
  buttons.forEach(button => {
    const rect = button.getBoundingClientRect();
    const distance = Math.sqrt(
      Math.pow(e.clientX - (rect.left + rect.width/2), 2) +
      Math.pow(e.clientY - (rect.top + rect.height/2), 2)
    );
    
    // Clicked within 20px of button but not on it
    if (distance < 20 && clickedElement !== button) {
      analytics.track('near_miss', {
        button: button.id,
        miss_distance: distance
      });
    }
  });
});

High near-miss rates mean buttons are too small or poorly positioned.

Design System Implementation

Build Fitts’s Law principles into your design system from the start.

/* Base button sizes following Fitts's Law */
:root {
  --button-height-small: 36px;
  --button-height-medium: 44px;
  --button-height-large: 56px;
  
  --button-padding-small: 8px 16px;
  --button-padding-medium: 12px 24px;
  --button-padding-large: 16px 32px;
  
  --touch-target-minimum: 44px;
  --spacing-interactive: 8px; /* Minimum spacing between clickable elements */
}

/* Button hierarchy */
.btn {
  height: var(--button-height-medium);
  padding: var(--button-padding-medium);
  min-width: var(--touch-target-minimum);
  border-radius: 4px;
  cursor: pointer;
  font-size: 16px;
  font-weight: 500;
}

.btn-primary {
  height: var(--button-height-large);
  padding: var(--button-padding-large);
  font-size: 18px;
  /* Primary actions get largest targets */
}

.btn-small {
  height: var(--button-height-small);
  padding: var(--button-padding-small);
  font-size: 14px;
  /* Still meets 36px minimum */
}

/* Interactive element spacing */
.btn + .btn {
  margin-left: var(--spacing-interactive);
}

Document these standards and enforce them across your product.

Accessibility Intersection

Fitts’s Law and accessibility share common goals: making interfaces easier to use.

WCAG 2.5.5 (Target Size): Minimum 44×44 CSS pixels for touch targets. This directly comes from Fitts’s Law research.

Benefits for different users:

  • Motor impairments: Larger targets easier to hit with assistive devices
  • Vision impairments: Bigger buttons easier to see
  • Cognitive impairments: Clear, large targets reduce confusion
  • Everyone: Faster, less frustrating interactions

Optimizing for Fitts’s Law automatically improves accessibility. It’s good design that helps everyone.

The Physics of Interaction

Fitts’s Law isn’t just UX theory—it’s physics applied to human-computer interaction.

Your users have:

  • Finite motor precision (hand-eye coordination limits)
  • Reaction time delays (neural processing ~200ms)
  • Physical constraints (fingertip size, mouse resolution)

These aren’t design preferences. They’re biological facts.

Designing against them creates inherent friction. Designing with them creates intuitive experiences that feel “right” even if users can’t articulate why.

Future: Adaptive Interfaces

AI-driven interfaces will soon adjust target sizes based on:

  • User’s historical accuracy
  • Current device type
  • Time of day (motor control degrades with fatigue)
  • Movement patterns

Imagine buttons that grow slightly larger for users with lower accuracy rates. Or interfaces that detect shaky cursor movement and expand targets accordingly.

The principle remains constant. The implementation becomes personalized.

Practical Checklist

Audit your interface against these Fitts’s Law standards:

Button Sizing:

  • [ ] All interactive elements minimum 44×44px (mobile)
  • [ ] All interactive elements minimum 32×32px (desktop)
  • [ ] Primary CTAs 48×48px or larger
  • [ ] Icon buttons have adequate padding (48×48px total)

Spacing:

  • [ ] Minimum 8px between adjacent interactive elements
  • [ ] High-stakes actions (delete, purchase) have 16px+ spacing
  • [ ] Form elements have adequate vertical rhythm (12px+ between fields)

Positioning:

  • [ ] Primary CTAs positioned near content they relate to
  • [ ] Mobile CTAs in natural thumb zones (bottom 40% of screen)
  • [ ] Navigation in predictable locations (top-left logo, top-right menu)
  • [ ] Screen edges utilized for high-frequency actions

Click Target Expansion:

  • [ ] Labels fully clickable for checkboxes/radios
  • [ ] Padding extends click area beyond visual boundaries
  • [ ] Table row actions have generous sizing
  • [ ] Dropdown items minimum 40px tall

Testing:

  • [ ] Heatmaps show centered click distributions
  • [ ] Error tracking reveals few near-misses
  • [ ] Task completion times meet benchmarks
  • [ ] Mobile users can one-hand navigate comfortably

Conclusion: Respect the Physics

Fitts’s Law isn’t optional. It’s not a design preference or aesthetic choice.

It’s physics. It’s neuroscience. It’s the fundamental relationship between distance, size, and movement time.

Every pixel you make a button smaller increases interaction difficulty. Every pixel farther from expected cursor position adds friction.

The best interfaces feel effortless because they respect these physical constraints.

Key takeaways:

  • Larger targets = faster, more accurate interactions
  • Closer targets = less travel time, less effort
  • Screen edges and corners = infinite targets
  • 44×44px minimum for mobile, 32×32px for desktop
  • Primary actions deserve largest targets
  • Spacing between targets prevents errors
  • Test with real users and real data

Start today: Find your most important button and make it 20% larger. Measure the impact. You’ll see conversion lift, reduced error rates, and faster task completion.

Your users might not know Fitts’s Law. But their fingers and cursor movements follow it religiously.

Design accordingly.


Frequently Asked Questions

Q: Can buttons be too large?

Yes, but it’s rare in web design. Oversized buttons waste screen space and can look unprofessional. The sweet spot: 44-64px height for primary actions, 32-48px for secondary actions.

Q: How do I apply Fitts’s Law to text links?

Increase line-height and add padding. Convert inline links to block-level with adequate padding when possible. Minimum 44px click target height even for text links.

Q: Does Fitts’s Law apply to keyboard navigation?

Not directly—there’s no distance/size relationship with keyboard. But related principles apply: logical tab order, clear focus states, and minimal keystrokes to important actions.

Q: What about stylus input (tablets, drawing tablets)?

Stylus offers more precision than fingers but less than mice. Target sizes between mobile (44px) and desktop (32px) minimums work well—approximately 36-40px.

Q: Should I make destructive actions (delete, cancel) harder to reach?

Yes. Combine distance AND confirmation dialogs for destructive actions. Don’t rely on Fitts’s Law alone to prevent mistakes.

Q: How does Fitts’s Law interact with responsive design?

Button sizes should scale with viewport. Use relative units (rem, em) for sizing so buttons grow proportionally on larger screens while maintaining minimums on small screens.

Q: Can I A/B test Fitts’s Law optimizations?

Absolutely. Test button sizes, positions, and spacing. Measure completion time, error rate, and conversion. The data will validate the theory.


Further Reading

Original Research:

  • Fitts, P. M. (1954). “The information capacity of the human motor system”
  • MacKenzie, I. S. (1992). “Fitts’ law as a research and design tool in HCI”

Design Guidelines:

  • Apple Human Interface Guidelines: Touch Targets
  • Google Material Design: Touch Targets
  • Microsoft Fluent Design: Input and Interactions

Tools:

  • Figma plugins for testing target sizes
  • Chrome DevTools: Simulate touch targets
  • Accessibility checkers (WAVE, axe DevTools)