Core Web Vitals
La mesure des Core Web Vitals ouvre votre page dans un vrai navigateur et relève les trois indicateurs que Google observe : le temps d’affichage du contenu principal (LCP), la réactivité aux interactions (INP) et la stabilité visuelle pendant le chargement (CLS). Vous obtenez des chiffres concrets, plutôt qu’une simple impression de lenteur.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Les trois indicateurs, en clair
Le LCP mesure le temps que met le contenu principal à s’afficher ; l’INP, la vitesse avec laquelle la page réagit à vos clics et à votre saisie ; le CLS, la stabilité de la mise en page, c’est-à-dire l’absence de blocs qui sautent pendant le chargement. Ensemble, ces trois valeurs résument l’expérience réelle d’un visiteur, bien mieux qu’un unique score global. Vous voyez lequel des trois pose problème, et donc par où commencer.
Une mesure dans un navigateur réel
Les indicateurs sont relevés en ouvrant réellement votre page, styles appliqués et scripts exécutés, comme le ferait un visiteur. Ce n’est pas une estimation tirée du code source : c’est le comportement observé au chargement. La mesure s’effectue sur nos serveurs, pas dans votre navigateur ; l’adresse que vous soumettez y est ouverte le temps du relevé, puis écartée. Vous recevez des valeurs chiffrées, prêtes à comparer d’une version à l’autre de la page.
Ce que ces chiffres changent pour votre visibilité
Google tient compte de ces indicateurs dans son classement, en particulier sur mobile, où une page lente perd des visiteurs avant même de s’afficher. Pour un artisan ou un micro-entrepreneur dont le site vitrine est la première vitrine, quelques secondes de trop se paient en clients partis voir ailleurs. Mesurer les Core Web Vitals, c’est mettre un chiffre sur ce ressenti et savoir si une optimisation a vraiment servi.
Version bêta et délai de mesure
Cette capacité est proposée en version bêta : elle fonctionne et renvoie ses résultats, mais nous continuons de l’affiner. La mesure attend le chargement de la page dans la limite de 30 secondes ; une page très lourde peut atteindre ce délai et n’être évaluée qu’en l’état à cet instant. Sur un site protégé contre l’automatisation, l’accès peut être restreint : le résultat reflète alors ce que la page a réellement servi lors de la visite.
Cas d’usage
Diagnostic d’un site vitrine lent
Camille Moreau mesure les Core Web Vitals de sa page d’accueil sur mobile pour comprendre pourquoi ses visiteurs repartent avant l’affichage.
Contrôle avant livraison
Studio Lumen SAS relève les trois indicateurs d’un site avant de le livrer au client, pour garantir un chargement propre et stable.
Avant et après optimisation
Un développeur compare les valeurs de LCP et de CLS d’une même page avant et après ses corrections, afin de vérifier le gain réel.
Suivi d’une page importante
Julien Lefèvre contrôle régulièrement la page de son offre principale, celle qui reçoit le plus de trafic, pour qu’elle reste rapide.
Questions fréquentes
Que signifient LCP, INP et CLS ?
Le LCP est le temps d’affichage du contenu principal, l’INP la réactivité de la page à vos interactions, et le CLS la stabilité de la mise en page pendant le chargement. Trois angles complémentaires d’une même expérience.
L’INP a-t-il remplacé le FID ?
Oui. Depuis 2024, l’INP (Interaction to Next Paint) a pris la place du FID parmi les Core Web Vitals : il mesure la réactivité sur l’ensemble des interactions, et non plus sur la seule première.
Est-ce la même mesure que celle de Google ?
Il s’agit d’une mesure en laboratoire, réalisée lors d’une visite dans un navigateur. Elle éclaire les mêmes indicateurs que Google, mais ne remplace pas les données de terrain collectées auprès des visiteurs réels sur la durée.
Combien coûte une mesure ?
Le tarif est de $0.040 par requête et $0.001 par URL, en dollars US, sans abonnement. Vous ne réglez que les mesures demandées.
L’adresse testée est-elle conservée ?
Non. La page est ouverte le temps du relevé, ses indicateurs vous sont renvoyés, puis l’URL et le résultat sont écartés de nos serveurs.
Puis-je m’y fier alors que c’est en bêta ?
Les valeurs sont fiables pour comparer et diagnostiquer. La mention bêta signale que nous affinons encore la capacité ; nous préférons vous le dire clairement plutôt que de le masquer. Une facture s’obtient auprès de [email protected], où une vraie personne répond en espagnol ou en anglais.
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/vitals \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/vitals", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/vitals",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/vitals", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/vitals", 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
{
"url": "https://ejemplo.com"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.vitals",
"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. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |