Guide : Viewport Meta Tag

Ce que le viewport meta balise fait, pourquoi il rend responsive design fonctionner on mobile, le correct configuration, le attribut référence, et Erreurs fréquentes.

Première publication : 2 juil. 2026 · Dernière mise à jour : 3 août 2026 · Avancé

«The viewport meta tag — <meta name="viewport" content="width=device-width, initial-scale=1"> — hints to the browser to size the layout viewport to the device's width in CSS pixels instead of a legacy ~980px fallback some mobile browsers use. Without it, phones can render the page at that wider fallback and shrink it, producing tiny text, horizontal scroll, and responsive breakpoints that may not apply as intended. It's not a ranking factor itself, but its presence is one of the things Google documents as indicating mobile-friendliness, and its absence is a classic mobile usability failure. Never force user-scalable=no or a restrictive maximum-scale — it fails the W3C's accessibility conformance rule for zoom and can lock out low-vision users, though browsers can override it (iOS 10+ ignores it by default). Test it with Lighthouse or PageSpeed Insights: Search Console's Mobile Usability report and the Mobile-Friendly Test were retired December 1, 2023.» _(Traduction)_ (Résumé en français du champ tldr : le texte source est conservé pour relecture francophone.)

«> TL;DR — The viewport meta tag —

<meta name="viewport" content="width=device-width, initial-scale=1"> — hints the browser to size the layout viewport to the device’s width in CSS pixels instead of a legacy ~980px fallback some mobile browsers use, which is what lets responsive CSS media queries evaluate against the device’s real width on mobile. Missing or misconfigured, it’s a classic mobile usability failure (tiny text, horizontal scroll). It is not a ranking factor — Google documents its presence as one thing its mobile-friendliness evaluation checks for, and no more than that. Never force user-scalable=no / restrictive maximum-scale: it fails the W3C’s ACT accessibility rule for zoom, though browser overrides exist (iOS 10+ ignores it by default). Google and Bing recommend the identical tag. Test with Lighthouse / PageSpeed Insights — Search Console’s Mobile Usability report and the Mobile-Friendly Test were retired December 1, 2023. » (Traduction) (Résumé en français de la section vingt et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Preuve à l’appui de cette affirmation The viewport meta tag lets authors control viewport width and scaling so responsive layouts render at device width. Portée : Browser viewport behavior. Niveau de confiance : élevé · Vérifié : MDN: Viewport meta tag Preuve à l’appui de cette affirmation Pages should not disable browser zoom because users must be able to enlarge content for accessibility. Portée : WCAG resize-text requirement and viewport guidance. Niveau de confiance : élevé · Vérifié : W3C WAI: Understanding Resize Text

Le problème il solves: le ~980px virtual viewport

À comprendre le balise vous ont à comprendre ce que c’est overriding. Quand mobile navigateurs étaient nouveau, le lack de a viewport balise meant some de les voudrait fall back à a fixed layout width de roughly 980px et rendre à que size — a deliberate accommodation donc desktop-sized, pre-responsive sites ne ferait pas complètement break on early smartphones. Le navigateur alors scaled le résultat bas à le physical screen. MDN’s propre framing: “Si le site n’est pas designed à fonctionner bien on petit viewports et ce balise est omitted, some mobile navigateurs rendre le site en utilisant a fixed initial containing bloquer width, typically 980px.” — c’est a navigateur-spécifique fallback, pas a universal spec constant.

Le consequence, dans Google’s propre words: “Sans a viewport meta balise, mobile devices rendre pages à typical desktop screen widths et alors scale lune pages bas, making les difficult à lire.” Vous obtenir unreadable texte, forced pinch-zooming, et horizontal scrolling — le textbook symptoms de une page flagged “not mobile-friendly.”

Paramètre le balise “lets vous contrôler le width et scaling de le viewport donc que c’est sized correctement on tout devices.”

Layout viewport vs. visual viewport (sous the hood)

Deux “viewports” sont dans play, et c’est worth keeping les straight:

  • Le layout viewport est le area lune page lays out dans et que fixed-position elements attach à. width=device-width sets ce à le device’s screen width dans CSS pixels.
  • Le visual viewport est ce que le utilisateur est currently looking à — qui changements quand ils pinch-zoom. Zooming changements le visual viewport sans modification le layout viewport.

Le raison ce matters pour le SEO et CSS: votre responsive media requêtes (@media (max-width: 600px) et friends) sont evaluated contre le layout viewport. Si le layout viewport est stuck à a legacy ~980px fallback parce que il y a aucun viewport balise, a phone peut match votre desktop breakpoints au lieu de votre narrow ones. MDN puts il plainly: “Sans il, votre responsive design avec breakpoints et media requêtes peut pas fonctionner as prévu on mobile navigateurs.” Le balise est ce que rend device-width le layout viewport donc votre prévu breakpoints evaluate correctement.

Preuve à l’appui de cette affirmation Without an appropriate viewport hint, narrow responsive breakpoints may not match as intended against the wider virtual layout viewport; it is too absolute to say CSS media queries never fire. Portée : production HTML and HTTP responses Niveau de confiance : élevé · Vérifié : Responsive web design

The correct tag, and où it goes

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- ...the rest of your head... -->
</head>

Put il élevé dans le <head>, near charset, avant contenu-dependent balises. Ce est le valeur Google, Bing, et Lighthouse tout recommend — verbatim, c’est le corriger Lighthouse itself suggests. ne pas overthink le valeur: width=device-width, initial-scale=1 est le réponse pour essentially chaque responsive site.

Attribute référence

Le content attribut est a comma-separated liste de directives. MDN est le canonical attribut-par-attribut référence; ici’s ce que chaque un fait:

«| Directive | What it does | Notes | | --- | --- | --- | | width | Controls the (minimum) pixel width of the viewport | A whole number 1–10000, or the special value device-width (the screen width in CSS pixels). Use device-width. | | initial-scale | The zoom ratio between device width and viewport on load | A number 0.0–10.0. Use 1. | | minimum-scale | The minimum zoom level allowed | Must be ≤ maximum-scale. iOS 10+ ignores it by default. | | maximum-scale | The maximum zoom-in allowed | Must be ≥ minimum-scale. iOS 10+ ignores it by default. Don’t restrict it. | | user-scalable | Whether the user can zoom (yes/no, default yes) | iOS 10+ ignores it by default. Setting no is an accessibility anti-pattern — leave it. | | interactive-widget | How interactive UI (e.g. virtual keyboards) affect the viewport | Values: resizes-visual (default), resizes-content, overlays-content. Newer; most SEO content omits it. | | viewport-fit | How the viewport handles display cutouts (notches) | Values: auto (default), contain (fits inside the largest rectangle that avoids the cutout), cover (fills the display — pair with CSS env() safe-area-inset variables so content doesn’t land under the cutout). | » (Traduction) (Résumé en français de la section trente-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

viewport-fit et interactive-widget sont les deux navigateur-layout edge cas — display-cutout et virtual-keyboard handling, respectively — pas SEO directives; la plupart SEO-focused guides skip les entirely.

A petit mais réel gotcha depuis Lighthouse’s propre docs: paramètre initial-scale ci-dessous 1 peut trigger a legacy double-tap-à-zoom behavior que ajoute interaction delay — un autre raison à stick avec initial-scale=1 plutôt que getting clever.

Jamais disable zoom: user-scalable=no is an anti-pattern

Vous’ll encore trouver user-scalable=no (or maximum-scale=1) copy-pasted dans old theme boilerplate, généralement depuis a developer qui n’a pas vouloir pinch-zoom “messing up” leur layout. c’est incorrect on deux counts:

«1. It fails the web’s own accessibility conformance test for zoom, and it works against WCAG’s intent. The W3C’s ACT rule “Meta viewport allows for zoom” (rule b4f0c3) applies to any viewport tag that sets user-scalable or maximum-scale, and its expectation is explicit: the tag must not set user-scalable=no, and maximum-scale must not be set below 2. (The rule carries stated assumptions — it doesn’t apply if the page has no visible content, offers another way to resize text, or never needs to reflow past a 320×256 CSS-pixel area — but a typical responsive page doesn’t meet those exceptions.) Per MDN: “Disabling zooming capabilities by setting user-scalable to a value of no prevents people experiencing low vision conditions from being able to read and understand page content. Additionally, WCAG requires a minimum of 2× scaling; however, the best practice is to enable a 5× zoom.” Blocking zoom locks out the exact users who need it most. 2. It’s also browser-specific, not universal. iOS Safari 10 and later ignore user-scalable=no and restrictive maximum-scale by default — that’s an iOS override, not a change to the ACT rule or to WCAG’s intent. So on a large share of mobile traffic the setting accomplishes nothing, while on browsers that do still honor it (older Android WebViews, some in-app browsers) it actively fails the accessibility test above. Zero upside, real downside — and don’t treat “iOS ignores it” as proof the markup is accessible everywhere.

Preuve à l’appui de cette affirmation `user-scalable=no` and `maximum-scale` below 2 fail the cited ACT rule's expectation under its assumptions, and disabling zoom harms low-vision users; an automated ACT failure is not by itself a complete universal WCAG conformance determination. Portée : production HTML and HTTP responses Niveau de confiance : élevé · Vérifié : Viewport meta tag

» (Traduction) (Résumé en français de la section quarante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Le règle est simple: ne pas touch zoom. width=device-width, initial-scale=1 et rien sinon.

Est il a facteur de classement?

Être precise ici, parce que a lot de SEO contenu overstates il. Ici’s exactly ce que Google documents, et où le line à industry inference sits.

«What Google documents: the viewport tag is not a direct ranking factor. Google’s own supported-meta-tags doc says plainly that “presence of this tag indicates to Google that the page is mobile friendly” — that’s the whole documented claim: presence signals mobile-friendliness. Google doesn’t document the tag as scored, as a rendering guarantee, or as proof a page’s responsive design is actually good.

Preuve à l’appui de cette affirmation Google documents that viewport-meta presence indicates a page is mobile friendly, but that statement does not establish that the tag itself is a ranking factor, a display guarantee or sufficient evidence of responsive quality. Portée : production HTML and HTTP responses Niveau de confiance : élevé · Vérifié : Meta tags and attributes that Google supports

» (Traduction) (Résumé en français de la section quarante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Où practitioners connecter le dots (industry inference, pas a Google citation): a manquant or misconfigured viewport balise est a courant root causer de le mobile-usability échecs (tiny texte, horizontal scroll, unusable tap targets) que SEOs généralement comprendre à degrade mobile page experience. Que connection est reasonable et widely held dans le industry, mais c’est a practitioner inference à propos de pourquoi le balise matters — pas quelque chose Google’s docs state as a classement chain.

Donc le honest framing: le balise itself n’est pas scored, et corriger il parce que une page sans il renders badly on phones — pas parce que Google documents il as a classement lever, direct or indirect. Garder ce séparé depuis indexation mobile-premier aussi: c’est a distinct Recherche Google concept à propos de qui version de votre page Google primarily utilise pour indexation et classement; le viewport balise est à propos de comment que mobile HTML renders dans a navigateur, complet arrêter.

Preuve à l’appui de cette affirmation Mobile-first indexing means Google primarily uses the mobile content for indexing and ranking; it is a separate Google Search concept from the browser's viewport rendering contract. Portée : production HTML and HTTP responses Niveau de confiance : élevé · Vérifié : Mobile-first indexing best practices

Comment tester it — the tooling modifié in 2023

Ce est où la plupart older guides sont stale. On December 1, 2023, Google retired Search Console’s Ergonomie mobile rapport, le Mobile-Friendly Tester outil, et le Mobile-Friendly Tester API (announced April 2023, confirmed complet que December). Google’s reasoning était que autre outils avait matured — “nombreux autre robust resources pour evaluating ergonomie mobile ont emerged, notamment Lighthouse depuis Chrome.” Donc si a tutorial indique vous à ouvrir Search Console → Ergonomie mobile à vérifier votre viewport, que rapport ne … plus exists.

Couche ces vérifications plutôt que relying on un outil: confirmer le balise exists dans le raw servi HTML (pas simplement après JavaScript exécute), confirmer votre responsive breakpoints en réalité appliquer à phone widths, tester zooming à 200% sans le layout breaking (le resize behavior WCAG’s intent est construit autour), et spot-vérifier dans plus que un navigateur — an iOS Safari-seulement vérifier peut hide a zoom-restriction bug que Android or dans-app navigateurs encore enforce.

Votre current toolkit:

  • Lighthouse (dans Chrome DevTools). Le pertinent audit historically lire “Fait pas ont a <meta name="viewport"> balise avec width or initial-scale” — il fails unless le <head> a a meta name="viewport" whose content inclut width=. As de Lighthouse 13 c’est folded dans le “Optimize viewport pour mobile” insight.
  • PageSpeed Insights — exécute Lighthouse plus champ Core Web Vitals données.
  • Chrome DevTools device toolbar — emulate phone dimensions et eyeball il.
  • Bing’s Mobile Friendliness Tester Outil — Bing vérifications viewport et zoom-contrôle configuration aussi, et recommends le même balise Google fait.
  • View source / real-device vérifier — parfois le fastest tester est à simplement regarder à le <head> on votre phone.

Erreurs fréquentes

  • Aucun balise à tout (“viewport not set”) — lune page renders à le legacy desktop-ish width et shrinks.
  • A hardcoded pixel width comme width=1024 au lieu de device-width — a balise exists, mais il encore ne fait pas match lune page à le device. Lighthouse et réel mobile-friendliness les deux vouloir a usable width= valeur, pas simplement quelconque balise.
  • initial-scale ci-dessous 1 — peut trigger le legacy double-tap-zoom delay.
  • user-scalable=no / restrictive maximum-scale — copy-pasted depuis old boilerplate; accessibility anti-modèle, ignored on iOS anyway.

Pour où ce sits dans le broader mobile fonctionner — configuration, contenu parity, speed — voir le mobile SEO hub, le mobile SEO liste de contrôle, et mobile-premier indexation. Pour le balise itself as partie de le wider sur la page balise family, le meta balises cluster est le map.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.