---
title: "Viewport blocks zoom (ui/viewport-zoom-lock)"
description: "maximumScale ≤ 1 or userScalable: false stops low-vision users from pinch-zooming (WCAG 1.4.4)."
url: http://localhost:4173/rules/ui/viewport-zoom-lock
updated: 2026-11-11
---

# Viewport blocks zoom

> `ui/viewport-zoom-lock` is a vetd rule. It flags: Viewport blocks zoom. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `ui/viewport-zoom-lock` |
| Severity | error |
| Group | Interface craft: accessibility, motion and mobile |
| Tags | accessibility |

## Why it matters

maximumScale ≤ 1 or userScalable: false stops low-vision users from pinch-zooming (WCAG 1.4.4).

## How to fix it

Remove maximumScale and userScalable from the viewport export or meta tag.

## Credit

Based on work by:

- [W3C Web Accessibility Initiative](https://www.w3.org/WAI/): WCAG 1.4.4 requires text to be resizable up to 200 percent, which zoom-locked viewports prevent.
- [Vercel](https://vercel.com): The Web Interface Guidelines list user-scalable=no and maximum-scale=1 as anti-patterns.

## References

- [Understanding Success Criterion 1.4.4: Resize Text](https://www.w3.org/WAI/WCAG22/Understanding/resize-text.html), W3C
- [<meta name="viewport"> HTML attribute value](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/viewport), MDN Web Docs
- [generateViewport](https://nextjs.org/docs/app/api-reference/functions/generate-viewport), Next.js
- [Web Interface Guidelines](https://github.com/vercel-labs/web-interface-guidelines), Vercel (vercel-labs)

## See it

Demos in the vetd Lab:

- [Allow zoom, mind safe areas](http://localhost:4173/lab/web-guidelines/zoom-and-safe-areas)

## Related rules

- [`ui/input-font-size`](http://localhost:4173/rules/ui/input-font-size.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "ui/viewport-zoom-lock" }`. CLI: `npx vetd explain ui/viewport-zoom-lock`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`next/json-ld-xss`](http://localhost:4173/rules/next/json-ld-xss.md) · Next: [`ui/input-font-size`](http://localhost:4173/rules/ui/input-font-size.md)
