Générateur de balise meta viewport pour site responsive
Générez une balise meta viewport responsive sans devoir retenir l’ordre exact des attributs ni leur ponctuation.
Lancer gratuitement
Choisissez device-width pour la déclaration standard adaptée aux mobiles, ou saisissez une largeur numérique positive pour définir volontairement un viewport fixe, puis réglez l’échelle initiale. Le résultat comprend une balise HTML complète prête à copier dans le head du document, sa valeur content et des paramètres normalisés pratiques pour les scripts, les modèles, les tests et les chaînes de build automatisées.
Choisissez délibérément la largeur du viewport
Une déclaration viewport indique au navigateur mobile comment le viewport de mise en page doit se rapporter à l’écran. Pour la plupart des sites responsive, device-width est le bon réglage : il suit la largeur de l’appareil en pixels CSS et permet aux media queries de réagir à l’espace disponible. Ce générateur accepte également une largeur numérique positive lorsqu’un viewport fixe et maîtrisé est réellement nécessaire, par exemple pour une ancienne interface intégrée, un scénario de navigateur reproductible ou un test de compatibilité. Saisissez le nombre sans suffixe px : 375 est valide, tandis que 375px ne constitue pas une largeur valable dans cette déclaration. Le zéro, les valeurs négatives, les entrées vides, les valeurs non finies et les mots arbitraires sont refusés au lieu d’être placés dans un balisage trompeur. La largeur renvoyée est normalisée : un texte numérique tel que 375 devient le fragment stable width=375. Cette validation ciblée rend le résultat fiable en automatisation, sans correction orthographique cachée ni supposition dépendant du navigateur.
Réglez l’échelle initiale et copiez la balise
L’échelle initiale détermine le niveau de zoom au premier chargement de la page. La valeur 1 est le choix habituel : un pixel CSS correspond à un pixel CSS du viewport avant que l’utilisateur n’effectue un zoom. Le champ vaut 1 par défaut, mais vous pouvez fournir un autre nombre positif et fini pour un besoin précis de test ou d’application. Le générateur valide ce réglage séparément et en conserve le sens numérique dans une forme textuelle stable. Il produit ensuite une balise complète telle que <meta name="viewport" content="width=device-width, initial-scale=1">. Placez-la dans le head du document, de préférence une seule fois, plutôt que d’ajouter plusieurs déclarations viewport dont l’interaction peut varier selon le navigateur. La réponse expose aussi la chaîne content et les champs normalisés width et initial_scale. Utilisez meta_tag pour écrire du HTML, content lorsqu’un framework attend seulement cet attribut, et les champs individuels pour contrôler une configuration en test. Aucune requête réseau, inspection de page ou détection du user agent ne modifie le résultat : une même entrée produit toujours une même sortie dans le navigateur et par API.
Comprenez ce que le générateur n’ajoute pas
Cette capacité ne génère volontairement que width et initial-scale. Elle n’ajoute ni maximum-scale, ni minimum-scale, ni user-scalable, viewport-fit, interactive-widget ou autre directive facultative, car ces réglages relèvent de décisions produit et d’accessibilité, et non de valeurs automatiques. Restreindre le zoom peut notamment compliquer la lecture pour les personnes qui ont besoin d’agrandir le contenu ; un petit générateur ne doit donc pas introduire silencieusement ce comportement. L’outil n’audite pas non plus une page existante, ne détecte pas les balises en double, ne teste pas les breakpoints responsive et ne prouve pas que le CSS s’adapte correctement. Il crée un balisage déterministe à partir des deux réglages fournis. Après son ajout, examinez la page sur des écrans étroits et larges, vérifiez la lisibilité du texte et l’absence de débordement des contrôles, puis testez le zoom dans de vrais navigateurs. Dans un projet à modèles, conservez la déclaration dans le composant head commun. L’utilisation interactive est gratuite dans le navigateur ; une requête API automatisée coûte $0.002. Le même solveur pur alimente les deux parcours, donc une balise testée manuellement conserve son format et ses règles de validation dans un script de build.
Cas d’usage
Démarrer une page responsive
Créez la déclaration standard device-width et initial-scale pour un nouveau document HTML ou un modèle de mise en page partagé.
Créer des scénarios déterministes
Générez un viewport numérique fixe pour des tests de navigateur exigeant une largeur explicite et reproductible.
Normaliser une configuration
Transformez les réglages d’un formulaire ou d’un script en balise stable et en champs normalisés pour la validation et les snapshots.
Questions fréquentes
Quelle largeur faut-il utiliser pour un site responsive ?
Utilisez device-width dans le cas responsive habituel. Cette valeur suit la largeur du viewport de l’appareil en pixels CSS.
Puis-je saisir une largeur fixe ?
Oui. Saisissez un nombre positif comme 375 sans suffixe d’unité. Le zéro, les négatifs et les valeurs non finies ou non numériques sont refusés.
Quelle échelle initiale dois-je choisir ?
La valeur 1 est la valeur conventionnelle par défaut. Un autre nombre positif et fini est accepté pour un besoin précis de votre projet.
Le résultat désactive-t-il le zoom ?
Non. Le générateur n’ajoute pas les directives user-scalable, maximum-scale ou minimum-scale.
Où faut-il placer la balise meta ?
Placez-la une seule fois dans le head HTML. Évitez plusieurs déclarations viewport concurrentes dans un même document.
Quel est le prix d’une requête API ?
Chaque requête API réussie coûte $0.002 ; l’exécution interactive sur cette page est gratuite dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/web/viewport-meta-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":"device-width"}'const res = await fetch("https://api.kit.forhosting.com/web/viewport-meta-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": "device-width"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/viewport-meta-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": "device-width"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/viewport-meta-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":"device-width"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":"device-width"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/viewport-meta-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"width": "device-width"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.viewport_meta_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |