technical
Viewport-Meta-Tag setzen
MetricSpot prüft auf <meta name=viewport>. Ohne dieses Tag rendern Mobilbrowser mit 980 px Desktop-Breite und zoomen heraus — die Mobile-Usability-Prüfung schlägt fehl.
Was diese Prüfung macht
Sucht nach einem <meta name="viewport">-Tag im <head> und prüft, ob mindestens width=device-width und ein initial-scale gesetzt sind. Die Prüfung fällt durch, wenn das Tag komplett fehlt oder den Zoom sperrt (user-scalable=no, maximum-scale=1.0 — beides Verstöße gegen die Barrierefreiheit).
Warum es wichtig ist
Ohne Viewport-Tag gehen Mobilbrowser davon aus, dass die Seite Desktop ist, rendern sie mit 980 px Breite und zoomen heraus, um sie auf den Bildschirm zu bringen. Das Ergebnis ist unleserlich: 4-Pixel-Text, riesige Bilder, keine Responsive-Breakpoints, weil die Viewport-Mathematik nicht stimmt.
- Googles Mobile-First-Indexing. Seit 2021 nutzt Google primär die mobile Darstellung deiner Seite für das Ranking. Eine Seite, die die Viewport-Prüfung nicht besteht, gilt als nicht mobilfreundlich — ein Ranking-Nachteil in der mobilen Suche.
- Core Web Vitals. LCP, CLS und INP werden standardmäßig auf Mobilgeräten gemessen. Eine Seite ohne Viewport-Tag löst Desktop-Breiten-Rendering auf einem Telefon-Canvas aus, was CLS und LCP aufbläht.
- Nutzererfahrung. Mobiler Traffic liegt bei den meisten Sites über 60 %. Das Viewport-Tag ist das, was responsives Design überhaupt funktionieren lässt.
Wie du es behebst
Setze das in den <head>, vor allem CSS, das von der Viewport-Breite abhängt:
<meta name="viewport" content="width=device-width, initial-scale=1">
Das ist das kanonische Rezept — jedes Framework, jedes CMS und jedes moderne Starter-Template liefert es mit aus. Wenn deine Seite es nicht hat, ist das <head>-Template kaputt.
Übliche Framework-Defaults.
- Astro —
<ViewTransitions />setzt nichts Implizites. Füge das Meta-Tag in den<head>deines Basis-Layouts ein. - Next.js — App Router exportiert eine
viewport-Konstante ausapp/layout.tsx:
import type { Viewport } from "next";
export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
};
- WordPress — jedes moderne Theme gibt das Tag in
header.phpaus. Wenn deins das nicht tut, ist das Theme aus der Zeit vor 2014. - Vue / Nuxt / Svelte — im Starter-
index.htmlintegriert.
Brich die Barrierefreiheit nicht. Zwei Anti-Muster blockieren Pinch-to-Zoom und verstoßen gegen WCAG 1.4.4:
<!-- Schlecht — Barrierefreiheitsverstoß -->
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
Beides verhindert, dass sehschwache Nutzer den Text per Pinch zoomen. iOS 13+ ignoriert user-scalable=no ohnehin. Setze keins von beiden.
Native-App-Webviews. Wenn du die Seite in eine iOS-WKWebView oder Android-WebView mit eigenen Zoom-Controls einbettest, kannst du den Viewport auf das webview-spezifische HTML beschränken — aber die öffentliche Web-Version braucht trotzdem das Standard-Tag.
Selbst auditieren:
curl -s https://yourdomain.com/ | grep -o '<meta name="viewport"[^>]*>'
Erwartet wird width=device-width, initial-scale=1. Wenn grep nichts liefert, fehlt das Tag.
Häufig gestellte Fragen
Was ist der Unterschied zwischen initial-scale=1 und width=device-width?
width=device-width setzt die Viewport-Breite auf die CSS-Pixel-Breite des Geräts (375 beim iPhone, 360 bei den meisten Androids). initial-scale=1 setzt den Initial-Zoom auf 1.0. Beide werden gebraucht — setze sie zusammen.
Soll ich viewport-fit=cover für iPhone-Notches setzen?
Nur, wenn du env(safe-area-inset-*) im CSS verwendest, um Inhalt aus der Notch / Dynamic Island zu schieben. Sonst reicht der Standardwert.
Wirkt sich das Tag auf Desktop-Browser aus?
Desktop-Browser ignorieren das Viewport-Meta-Tag komplett — sie rendern immer mit der tatsächlichen Fensterbreite. Das Tag ist Mobile-only.
Quellen
Zuletzt aktualisiert 2026-05-11