Common Responsive Web Design Mistakes to Avoid
Fix responsive layouts that overflow, become hard to read, or break under zoom. Learn what to check across viewport widths, keyboard navigation, and touch.
Responsive web design mistakes usually come from treating screen size as a device label instead of adapting content to the space and the person using it. Start with a viewport that matches the device, let content shrink and reflow, choose breakpoints when the layout needs them, and check the result with zoom, enlarged text, keyboard navigation, and touch input.
This guide covers common causes of layouts that are difficult to read, navigate, or use at particular widths. There is no universal breakpoint set: the right layout depends on the content.
1. Omitting or restricting the viewport
Without a suitable viewport declaration, a mobile browser may lay out the page against a wider virtual viewport and scale it down. The page can technically fit while text and controls become tiny. Use the standard baseline in the document head:
<meta name="viewport" content="width=device-width, initial-scale=1">
Do not disable user zoom with user-scalable=no or a restrictive maximum scale. People may need zoom to read or interact with a page. web.dev’s responsive design guidance explains the viewport setup and cautions against blocking zoom.
2. Using fixed widths that cause horizontal overflow
A fixed-width content column, table, image, or code sample can extend beyond a narrow viewport. This forces horizontal scrolling and can hide content or controls. Prefer fluid sizing, and inspect the page at widths between familiar device presets.
*, *::before, *::after {
box-sizing: border-box;
}
.page {
width: min(100% - 2rem, 72rem);
margin-inline: auto;
}
img, video, canvas, svg {
max-width: 100%;
}
pre, table {
max-width: 100%;
overflow-x: auto;
}
Use scrolling for content such as a genuinely wide data table when preserving its columns is useful, but keep that scrolling region contained. Do not let a wide child silently expand the entire page. For images, declare intrinsic dimensions so the browser can reserve space before the file loads:
<img src="chart.webp" width="1200" height="800" alt="Quarterly results by region">
The CSS maximum width lets the image scale down while the width and height attributes preserve its aspect ratio and reduce layout shifts. See web.dev’s responsive design basics.
3. Choosing breakpoints for device names
A breakpoint should solve a content problem: a line of text is too long, a navigation row no longer fits, or cards need another column. A breakpoint does not need to correspond to a named phone or tablet. Test continuously across widths because awkward wraps and collisions often occur between device presets.
A narrow-first layout is a practical starting point. Keep a readable single-column flow, then add columns when the content has enough room:
.cards {
display: grid;
grid-template-columns: 1fr;
gap: 1rem;
}
@media (min-width: 42rem) {
.cards {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 68rem) {
.cards {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
The example values are starting points, not universal recommendations. Adjust them when the actual content begins to feel cramped or excessively sparse. MDN describes narrow-to-wide progression as a common responsive approach in its responsive design guide.
4. Checking only viewport width, not zoom and enlarged text
A layout that works at default text size can clip content when users enlarge text or zoom. Use relative text sizing so content can grow and the layout can reflow:
html {
font-size: 100%;
}
body {
font-size: 1rem;
line-height: 1.5;
}
h1 {
font-size: clamp(1.75rem, 1.2rem + 2vw, 3rem);
}
Test at 200% text enlargement and check that text, controls, and content remain available without clipping or unnecessary horizontal scrolling. W3C WAI’s reflow guidance uses 320 CSS pixels as a relevant example for article-style content: a reader should be able to follow it with vertical scrolling rather than two-dimensional scrolling. These are accessibility checks for the contexts described by WAI, not a claim that every type of content has identical requirements.
- W3C WAI tips for designing discuss adapting to zoom and enlarged text.
- W3C WAI’s Reflow explanation describes the 320 CSS-pixel example and its context.
5. Rearranging visual order without checking reading order
CSS Grid and Flexbox can move items visually while leaving their source order unchanged. If those orders conflict, someone navigating by keyboard or assistive technology may encounter content in an unexpected sequence. Keep the DOM order meaningful, and tab through each major layout state to verify that focus follows a sensible reading path.
<section class="feature">
<h2>Feature title</h2>
<p>Description appears before the related action in source order.</p>
<a href="/details">Read details</a>
</section>
Use layout CSS to place related content without relying on large positive or negative order changes that make the visual sequence disagree with the keyboard sequence. See web.dev’s accessible responsive design guidance.
6. Making touch controls hard to activate
A page can fit a small screen and still be frustrating if links or buttons are too small or too close together. Check controls on touch-capable layouts, including navigation menus and icon-only actions. web.dev gives 48px as a good tap-target size in its accessible responsive design guidance; treat that as guidance, not a universal legal threshold.
.icon-button {
min-width: 48px;
min-height: 48px;
padding: 0.5rem;
}
7. A practical responsive review
- Confirm the page has a viewport declaration using the device width and does not block zoom.
- Resize the browser continuously from narrow to wide; look for overflow, cramped controls, and awkward text wraps between common presets.
- Inspect images and other wide content. Ensure images fit their containers and declare dimensions.
- Enlarge text and zoom. Check that content remains visible and can reflow.
- Use keyboard navigation at each meaningful layout state. Confirm focus order follows a sensible reading sequence.
- Check touch targets on touch-capable layouts.
- Use Lighthouse as an automated aid for viewport-tag and overflow audits, then manually review the issues it cannot assess in context.
For a quick browser check, inspect the document width against the viewport in the console:
const hasHorizontalOverflow = document.documentElement.scrollWidth > window.innerWidth;
console.log({
viewportWidth: window.innerWidth,
documentWidth: document.documentElement.scrollWidth,
hasHorizontalOverflow
});
This can identify page-level overflow, but it does not explain which element caused it or whether a contained scrolling region is intentional. Inspect likely wide children and test actual interaction as well.
8. Troubleshooting responsive layout problems
| Symptom | Likely cause | What to check or change |
|---|---|---|
| Everything looks tiny on a phone | Missing or unsuitable viewport declaration | Add the device-width viewport meta tag; confirm zoom is not restricted. |
| The whole page scrolls sideways | Fixed-width child, oversized image, or unwrapped content | Find elements wider than the viewport; use flexible sizing, constrain images, and contain scrolling for wide tables or code. |
| One viewport preset looks fine but nearby widths break | Breakpoints chosen around device names | Resize continuously and move the breakpoint to where the content starts needing a different layout. |
| Text or controls disappear when enlarged | Fixed dimensions, clipping, or inflexible text sizing | Allow containers to grow, use relative text units, and test zoom and enlarged text. |
| Keyboard focus jumps around after a layout change | Visual order differs from document order | Review source order and tab sequence; restructure markup or simplify visual reordering. |
| Buttons fit but are difficult to tap | Targets are too small or crowded | Increase target area and spacing; test the actual touch layout. |
| Images cause content to jump while loading | Space was not reserved for image dimensions | Provide width and height attributes and ensure responsive CSS preserves aspect ratio. |
9. Performance and reliability notes
Responsive fixes should avoid forcing every image to its largest display size on every viewport. Flexible image sizing prevents overflow, while appropriate image dimensions and reserved space help avoid layout shifts during loading. Test across intermediate widths and zoom levels after each meaningful layout change: a single screenshot at one size cannot establish that a page reflows correctly, preserves keyboard order, or remains usable with touch.
Automated checks such as Lighthouse can flag some viewport and overflow issues, but they are only one part of review. Keyboard order, meaningful content sequence, and touch usability need contextual inspection.
10. Or skip the browser setup
You can inspect a rendered page with ScreenshotNeo, a website screenshot API and MCP server. Its API accepts a URL and returns an image or PDF; see the API documentation. For example, save a screenshot of a page to a file:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer())));
ScreenshotNeo removes cookie banners, popups, and chat widgets before the shot. Bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.
Sign up free for 1,000 screenshots a month, with no card required.
11. FAQ
Is there a standard breakpoint set every website should use?
No. Choose breakpoints when the content needs a layout change, and verify behavior at widths around them.
Does passing an automated audit mean a page is fully responsive?
No. Automated audits can catch some implementation issues, but they do not replace checks for reading order, keyboard use, zoom, and touch interaction.
Should every wide table be squeezed to fit a phone?
Not necessarily. Preserve useful data structure when needed, and keep any horizontal scrolling contained to the table rather than the whole page.


