Accessibility

Minimum Font Boyutları ve Dokunma Hedefleri: Mobil Tipografi Erişilebilirliği

Updated Şubat 24, 2026
Mobil tipografi daha büyük boyutlara, geniş line-height'a ve dokunmaya dost bağlantı aralıklarına ihtiyaç duyar. Mobil metin için erişilebilirlik gereksinimleri.

Minimum Font Sizes and Touch Targets: Mobile Typography Accessibility

Mobile typography accessibility is one of the most underspecified areas in web development. WCAG was written primarily with desktop browser interactions in mind, and while the 2.5 additions addressed some mobile-specific concerns, a gap remains between the formal requirements and the practical realities of reading on small, touch-driven devices.

The result is a common pattern: a site passes WCAG AA automated checks but still fails real users on mobile — text that is technically readable in a controlled environment becomes inaccessible when thumbs are involved, outdoor lighting is a factor, and the device is being held at arm's length. This guide covers the practical standards and techniques for mobile typography that actually work.

Why 16px Is the Minimum Body Font Size

The "16px minimum" for mobile body text is not a WCAG requirement — WCAG 1.4.4 requires text to be resizable to 200% without loss of functionality, but does not mandate a specific minimum. The 16px figure comes from usability research and platform guidelines.

Apple's iOS Human Interface Guidelines specify a minimum text size of 11pt (approximately 14.67px in CSS terms at the 72dpi to 96dpi conversion) for body content, with a recommended minimum of 17pt for body text in most contexts. Google's Material Design 3 specifies 14sp (scale-independent pixels — Android's equivalent of rem) as the minimum for body text, with 16sp preferred.

The 16px practical minimum for web body text derives from research on reading distance and visual acuity. At typical mobile phone holding distances (25–35cm), 16px text is at the lower edge of comfortable readability for users with normal vision. Users with reduced visual acuity — not necessarily severe enough to use assistive technology — may find 14px or 15px text difficult at these distances.

More practically: iOS Safari defaults to zooming in when it detects input fields with font sizes below 16px. This automatic zoom behavior — triggered to make small inputs usable — is often a sign that the surrounding text is also too small. Preventing this zoom with user-scalable=no in the viewport meta tag is a significant accessibility violation (it prevents WCAG 1.4.4 compliance by removing the user's ability to zoom). The correct solution is to make inputs — and surrounding text — at least 16px.

<!-- Correct viewport meta tag — allows zoom -->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- Incorrect — disables user zoom, violates WCAG 1.4.4 -->
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
/* Minimum accessible font sizes for mobile */
body {
  font-size: 1rem; /* 16px at default — minimum for body text */
}

input, textarea, select {
  font-size: 1rem; /* Prevents iOS auto-zoom on focus */
}

.caption, .footnote {
  font-size: 0.875rem; /* 14px — minimum for non-critical supplementary text */
}

/* Never go below 12px for any rendered text */
.legal-text {
  font-size: 0.75rem; /* 12px absolute minimum */
}

The practical guidance is: use at least 16px (1rem) for all body text, at least 14px for supplementary content that users must read to understand the page, and avoid going below 12px for any text that is not truly decorative.

Touch targets are the interactive areas users tap on mobile devices. Typography intersects with touch target sizing in a specific way: text links within body copy are frequently the smallest touch targets on a page, because they span only the width and height of the linked text itself.

WCAG 2.5.5 (Target Size, Level AAA) requires touch targets to be at least 44×44 CSS pixels. WCAG 2.5.8, added in 2.2 at Level AA, has a slightly more nuanced requirement: touch targets must be at least 24×24 CSS pixels, with exceptions for inline text links, spacing around smaller targets, and other cases.

The inline text link exception in 2.5.8 is significant: links within a sentence are exempt from the 24×24 minimum because requiring 44px height for inline links would require increasing the line height of body text to an unusable degree. This exemption is practical, not aspirational. You should still aim to make text links as large as possible within layout constraints.

Strategies for more accessible text link tap targets:

/* Increase tap target with padding without affecting layout flow */
a {
  display: inline-block;
  padding: 0.25em 0;  /* Vertical padding increases tap target height */
}

/* For navigation links — full 44px target */
.nav-link {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: 0 1rem;
}

/* For button-style links — explicit minimum */
.cta-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  min-width: 44px;
  padding: 0.75rem 1.5rem;
}

/* Card-based links — make the entire card tappable */
.card {
  position: relative;
}

.card__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

For icon-only interactive elements — close buttons, share buttons, social media icons — the 44×44 minimum applies strictly. A 24×24 icon inside a 44×44 touch target is the standard pattern:

.icon-button {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding: 10px; /* (44 - 24) / 2 = 10px padding around 24px icon */
}

.icon-button svg {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}

Spacing between adjacent touch targets also matters. When two small interactive elements are close together — a "like" button next to a "share" button next to a "save" button — users frequently mis-tap the wrong one. Providing at least 8px of space between adjacent targets reduces error rates. WCAG 2.5.8 accounts for this with its spacing provision: targets smaller than 24×24px can be acceptable if they have sufficient spacing from other targets.

Line Height and Paragraph Spacing on Mobile

Line height (leading) has a more pronounced effect on readability on mobile than on desktop. The narrower line length of mobile screens — typically 40–60 characters rather than the 65–75 characters of a desktop column — means readers perform more frequent line returns. Inadequate line height makes each return more error-prone, causing readers to re-read the same line or skip a line.

On mobile, a line height of 1.5 to 1.8 is appropriate for body text. At the lower end of mobile text sizes, prefer the higher value:

/* Mobile-first line height */
body {
  font-size: 1rem;
  line-height: 1.6;
}

/* Increase for smaller text sizes */
.caption {
  font-size: 0.875rem;
  line-height: 1.7;
}

/* Tighter for large headings where visual gap is already large */
h1 {
  font-size: 2rem;
  line-height: 1.2;
}

h2 {
  font-size: 1.5rem;
  line-height: 1.3;
}

Paragraph spacing on mobile should be at least 1em (equal to the font size) and preferably 1.25–1.5em. Tighter paragraph spacing makes it harder for users to identify paragraph breaks, especially when reading on a small screen at arm's length.

p {
  margin-top: 0;
  margin-bottom: 1.25em;
}

/* Tighter spacing in compressed UI contexts */
.compact p {
  margin-bottom: 0.75em;
}

Word spacing deserves attention on mobile as well. The default word spacing is typically fine for desktop reading, but on narrower columns where word boundaries play a larger role in reading rhythm, a very slight increase can help:

/* Optional: slightly increased word spacing for mobile reading */
@media (max-width: 768px) {
  body {
    word-spacing: 0.02em;
  }
}

Responsive Typography for Small Screens

Mobile-first responsive typography is the practice of defining type sizes that work at small screen sizes and scale up appropriately for larger screens. The naive approach — using vw units for font sizes — scales linearly with viewport width and creates both too-small text on phones and too-large text on tablets if not carefully bounded.

The modern approach combines a base size in rem with clamp() for fluid scaling within controlled bounds:

/* Fluid type scale using clamp() */
/* clamp(minimum, preferred, maximum) */

body {
  /* Minimum 1rem (16px), preferred 1.1vw + 0.8rem, maximum 1.25rem (20px) */
  font-size: clamp(1rem, 1.1vw + 0.8rem, 1.25rem);
  line-height: 1.6;
}

h1 {
  /* Minimum 1.75rem, scales with viewport, maximum 3rem */
  font-size: clamp(1.75rem, 4vw + 1rem, 3rem);
  line-height: 1.15;
}

h2 {
  font-size: clamp(1.375rem, 3vw + 0.75rem, 2rem);
  line-height: 1.25;
}

h3 {
  font-size: clamp(1.125rem, 2vw + 0.75rem, 1.5rem);
  line-height: 1.35;
}

The clamp() function guarantees that font-size never falls below the minimum value regardless of viewport width — ensuring the 16px floor for body text on the smallest screens.

For paragraph width on mobile, the 70ch maximum that works on desktop is too wide for narrow screens — it would produce very short lines. The solution is to let the column fill the viewport width on small screens and only apply the max-width constraint at larger viewport sizes:

.article-body {
  padding: 0 1rem;
}

@media (min-width: 640px) {
  .article-body {
    max-width: 70ch;
    margin: 0 auto;
    padding: 0 2rem;
  }
}

Variable fonts offer mobile-specific advantages. The opsz (optical size) axis, where supported, allows the font to adjust its design for small rendering sizes — increasing x-height, opening apertures, and thickening strokes to maintain legibility at small sizes:

/* Using optical size axis for mobile */
@media (max-width: 480px) {
  body {
    font-variation-settings: 'opsz' 12, 'wght' 400;
  }
}

@media (min-width: 481px) {
  body {
    font-variation-settings: 'opsz' 16, 'wght' 400;
  }
}

Inter and Source Sans 3 both include optical size axes in their variable font versions, making them well-suited for responsive typography implementations.

Testing Mobile Typography Accessibility

Effective mobile typography testing requires real device testing — not just browser DevTools device emulation. Screen density, actual touch interactions, and ambient light conditions all affect real-world readability in ways that desktop browser simulation cannot capture.

Real device testing checklist:

Test body text readability at arm's length (35cm), in normal indoor lighting, on the target device's screen. If you have to squint, the text is too small. Test the same content outdoors in bright sunlight — screen glare dramatically reduces effective contrast.

Test all interactive text links by tapping with your thumb. Mis-taps on text links are a signal that the touch target is too small. Test with the hand you do not use for the device — it is typically less precise.

Test at 200% browser zoom. On mobile, this is triggered by double-tap or pinch zoom. Does the content reflow into a single column? Is any content cut off or does horizontal scrolling appear?

Browser DevTools simulation:

While not a replacement for real device testing, Chrome DevTools' device simulation mode is useful for quick iterations. Set a device with a realistic DPR (device pixel ratio) — the Pixel 7 (DPR 2.625) or iPhone 14 (DPR 3) rather than the generic "Mobile S" preset.

The Responsive Design Mode in Firefox DevTools includes a touch simulation toggle and allows testing at specific device sizes with the correct viewport constraints.

Automated testing:

The axe-core mobile rules include checks for meta viewport issues (the user-scalable=no problem), touch target size, and text scaling. Run these with a viewport configured for mobile dimensions:

// Playwright mobile test — test at iPhone viewport
import { devices } from '@playwright/test';

const iPhone = devices['iPhone 13'];

test('mobile typography accessibility', async ({ browser }) => {
  const context = await browser.newContext({
    ...iPhone,
  });
  const page = await context.newPage();
  await page.goto('https://example.com');

  // Run axe with mobile-relevant rules
  const { injectAxe, checkA11y } = await import('axe-playwright');
  await injectAxe(page);
  await checkA11y(page, null, {
    runOnly: {
      type: 'rule',
      values: ['meta-viewport', 'target-size', 'color-contrast'],
    },
  });
});

iOS VoiceOver and Android TalkBack:

Enable VoiceOver (triple-click Side Button on iPhone) or TalkBack (Settings → Accessibility → TalkBack on Android) and navigate your mobile site using gestures alone. The typographic decisions that affect desktop screen readers — heading hierarchy, language attributes, icon labels — apply equally to mobile screen readers, but the gesture-based navigation model makes some issues more or less salient.

Common mobile-specific findings in VoiceOver/TalkBack testing:

  • Text links announced without surrounding context make navigation difficult
  • Modal dialogs that do not trap focus force users to navigate through the entire page
  • Fixed headers with many links get announced every time a user navigates to the top of the content
  • Carousels and sliders without proper ARIA markup are announced as unlabeled regions

Mobile typography accessibility is ultimately about the intersection of visual design decisions, HTML semantics, and interaction design. Getting it right requires treating mobile as a first-class design context — not a scaled-down version of desktop — and testing with real devices and real users.

Typography Terms

Try These Tools

Fonts Mentioned

Related Articles