Générez des balises meta HTML avec titre et description
Ce générateur de balises meta HTML transforme le titre d’une page, sa description pour les moteurs de recherche et une liste facultative de mots-clés en code propre pour l’en-tête du document.
Lancer gratuitement
Il impose les limites courantes de 60 caractères pour le titre et de 160 pour la description avant toute production. Les caractères HTML sont échappés, les mots-clés en double sont supprimés et le bloc obtenu est prêt pour un modèle, une page statique, un système de gestion de contenu ou une publication automatisée.
Rédigez un titre précis et une description utile
Commencez par la page précise qui recevra le code. Le titre doit indiquer son sujet et, lorsque cela apporte une information utile, le site ou l’organisation qui en est responsable. Placez les termes essentiels au début, car les résultats de recherche et les onglets du navigateur disposent de peu d’espace. Le générateur accepte un titre non vide de 60 caractères au maximum. La description doit résumer ce que la personne découvrira en ouvrant la page, dans un langage concret plutôt que sous la forme d’une série d’expressions sans lien. Elle doit contenir du texte et ne pas dépasser 160 caractères. Ces deux limites comptent les caractères Unicode et non les octets de stockage : les lettres accentuées et les alphabets non latins sont donc traités comme des caractères visibles. Les espaces placés au début et à la fin sont retirés avant la validation et le comptage. Si une valeur dépasse sa limite, la requête renvoie une erreur de saisie sans produire de code partiel. Cette rigueur empêche un brouillon incorrect d’atteindre discrètement un modèle éditorial avec un texte susceptible d’être tronqué.
Ajoutez des mots-clés uniquement si nécessaire
Les mots-clés sont facultatifs et se transmettent sous forme de liste, à raison d’une expression par élément. Lorsqu’au moins un élément est présent, le générateur supprime les espaces extérieurs, refuse les entrées vides, élimine les doublons sans modifier l’ordre de leur première apparition, puis sépare les expressions restantes par des virgules. La comparaison des doublons ignore la casse : Café et café sont ainsi considérés comme le même mot-clé, mais l’orthographe de la première entrée est conservée. La limite de 50 éléments permet de garder une entrée et une sortie bornées dans le navigateur comme avec l’API. La balise de mots-clés n’est pas indispensable à un bloc complet de titre et de description, et de nombreux moteurs actuels ne l’emploient pas comme signal de classement. Elle peut néanmoins servir à un moteur interne, à un ancien gestionnaire de contenu, à un cahier des charges éditorial ou à un analyseur qui attend ce champ. Si votre projet n’en a pas besoin, omettez la liste : le résultat exclura également la balise et le champ structuré facultatif, au lieu de renvoyer des valeurs vides.
Insérez le bloc généré et contrôlez la page
La réponse fournit le code complet dans le champ html ainsi que les mêmes éléments dans le tableau tags, pour les outils de compilation qui préfèrent manipuler des lignes séparées. Placez le bloc dans l’en-tête du document, avec un seul élément title et une seule balise meta de description par page. Dans une application rendue côté serveur, ajoutez-le généralement aux métadonnées de la route ou au composant d’en-tête partagé ; un générateur de site statique peut l’insérer pendant la compilation. Le résultat échappe les esperluettes, chevrons, guillemets et apostrophes afin que le texte fourni ne puisse pas quitter son contexte HTML. L’outil ne consulte pas la page cible, ne rédige pas de texte commercial, ne mesure pas la largeur en pixels et n’ajoute aucune balise sociale Open Graph ou Twitter Card. Après publication, examinez le code source réellement servi plutôt que le seul éditeur visuel, vérifiez qu’aucun thème ou module n’a ajouté de balises concurrentes, puis testez l’URL définitive avec les outils pour webmasters du moteur concerné. Les moteurs peuvent réécrire l’extrait affiché : un code valide constitue donc une instruction claire, sans garantir une présentation identique.
Cas d’usage
Préparez une page produit
Transformez un texte produit approuvé en code échappé et contrôlé avant sa publication.
Validez les métadonnées éditoriales
Refusez les titres ou descriptions qui dépassent les règles de votre circuit de publication.
Automatisez un site statique
Produisez des éléments d’en-tête déterministes et des lignes structurées depuis les données des pages.
Questions fréquentes
Que se passe-t-il si le titre dépasse 60 caractères ?
La requête échoue avec une erreur de saisie et aucune balise meta n’est produite.
Que se passe-t-il si la description dépasse 160 caractères ?
La requête échoue avec une erreur de saisie qui indique la limite de la description.
Les mots-clés sont-ils obligatoires ?
Non. Si la liste est omise ou vide, la balise meta des mots-clés n’est pas incluse.
Le générateur échappe-t-il les caractères HTML ?
Oui. Tout texte susceptible de perturber la syntaxe HTML est échappé dans les éléments et les attributs.
Produit-il des balises Open Graph ou Twitter Card ?
Non. Il génère le titre, la description et les mots-clés facultatifs prévus par cette capacité.
Quel est le tarif de l’API ?
L’API coûte $0.002 par requête. La version pour navigateur est disponible gratuitement sur cette page.
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/meta-tags-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Fresh Coffee Delivered to Your Door","description":"Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."}'const res = await fetch("https://api.kit.forhosting.com/web/meta-tags-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"title": "Fresh Coffee Delivered to Your Door",
"description": "Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/meta-tags-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"title": "Fresh Coffee Delivered to Your Door",
"description": "Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/meta-tags-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"title":"Fresh Coffee Delivered to Your Door","description":"Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"title":"Fresh Coffee Delivered to Your Door","description":"Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/meta-tags-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
{
"title": "Fresh Coffee Delivered to Your Door",
"description": "Discover freshly roasted coffee delivered on your schedule, with flexible plans and beans selected for every brewing style."
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.meta_tags_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. |