Comptez les liens internes et externes
Répartissez les liens d'une page entre internes et externes : sur cinq liens, trois sur votre domaine et deux ailleurs donnent 0,6 contre 0,4. Les liens relatifs comptent comme les vôtres, un sous-domaine compte comme externe et chaque lien affiche son verdict. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Nom de domaine
- https://example.com
- Nom de domaine
- example.com
- Total des liens
- 5
- Liens internes
- 3
- Liens externes
- 2
Ce compteur de liens internes et externes classe chaque lien fourni selon le nom d'hôte de votre site, puis renvoie les totaux, les proportions et le résultat détaillé. Il accepte une liste déjà extraite d'une page, notamment les références relatives comme /about ou #details, ainsi que les URL absolues. Utilisez-le pour examiner la composition des liens, valider une chaîne d'extraction ou convertir une liste brute en mesures cohérentes sans télécharger la page ni explorer le site.
Préparez le domaine du site et la liste des liens
Commencez par le nom d'hôte qui définit votre site et par les URL des liens recueillis sur une page. La liste peut combiner des URL absolues, des URL relatives au protocole, des chemins depuis la racine, des références relatives à un chemin, des liens limités à une requête et des fragments. Les références relatives sont résolues à partir de l'URL du site fournie : /services, team, ?
Chaque élément doit être une chaîne non vide pouvant être interprétée comme référence URL. L'outil ne télécharge pas le HTML et ne découvre aucun lien lui-même ; le calcul reste ainsi déterministe et vous pouvez analyser des listes issues d'un robot, d'un export de navigateur, d'un CMS, de tests ou d'un tableur. Conservez chaque occurrence pour représenter la fréquence des liens.
Une destination présente trois fois est comptée trois fois. Une liste vide est refusée plutôt que de produire une proportion trompeuse de zéro à zéro.
Comprenez le classement et les proportions
La comparaison ignore la casse, car l'analyse normalise les noms d'hôte. Les chemins, requêtes, fragments, identifiants et ports ne modifient pas ce classement. Tout lien vers un autre nom d'hôte est externe, y compris un sous-domaine tel que blog.example.com si le site configuré est example.com.
Par exemple, trois liens internes sur quatre donnent une proportion interne de 0.75. Les proportions sont arrondies à six décimales pour garantir une sortie stable et leur somme vaut un. Le tableau links conserve l'ordre d'entrée et affiche le classement de chaque chaîne d'origine, ce qui facilite l'analyse de tout décompte inattendu.
Exploitez le résultat dans un audit SEO
Considérez ces décomptes comme un indicateur de diagnostic, et non comme une cible universelle de classement. Les liens internes aident les visiteurs et les robots à atteindre des pages connexes, à comprendre la hiérarchie et à répartir l'autorité dans le site. Les liens externes peuvent étayer des affirmations et orienter vers des sources primaires utiles.
Une page présentant un équilibre inhabituel mérite un examen, mais le bon équilibre dépend de sa fonction : un glossaire, une page produit et un article de recherche créent naturellement des liens différents. Comparez des modèles semblables, suivez leur évolution et examinez chaque classement avant de conclure. Dans une automatisation, lancez le compteur après l'extraction et conservez le résultat avec l'URL et la date d'exploration.
Vous pouvez signaler les pages sans lien interne, repérer un modèle qui ajoute soudain de nombreuses destinations externes ou vérifier qu'une migration maintient la navigation sur l'hôte prévu. Sans requête réseau ni donnée variable, une même entrée produit toujours la même sortie.
Cas d’usage
Examinez une page de destination
Mesurez l'équilibre des liens internes et externes et contrôlez précisément le classement de chaque URL extraite.
Validez la sortie d'un robot
Ajoutez des décomptes déterministes à votre extraction et repérez les destinations inattendues hors domaine.
Contrôlez une migration de site
Trouvez les listes dont les liens pointent encore vers un ancien hôte après un changement de domaine ou d'environnement.
Questions fréquentes
Quel est le tarif ?
Vous pouvez l'utiliser gratuitement dans votre navigateur sur cette page.
Les liens relatifs sont-ils internes ?
Oui. Les références depuis la racine, relatives à un chemin, limitées à une requête ou à un fragment sont résolues par rapport au site et sont internes.
Les sous-domaines sont-ils internes ?
Non. Le nom d'hôte doit correspondre exactement : blog.example.com est externe si l'hôte configuré est example.com.
L'outil télécharge-t-il ou explore-t-il ma page ?
Non. Il classe uniquement les chaînes URL que vous fournissez et n'effectue aucune requête réseau.
Comment les liens en double sont-ils comptés ?
Chaque élément est compté. Les URL répétées le restent, car elles représentent des occurrences de liens distinctes.
Outils associés
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/seo/internal-link-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}'const res = await fetch("https://api.kit.forhosting.com/seo/internal-link-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/internal-link-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/internal-link-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/internal-link-count", 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
{
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.internal_link_count",
"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.
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. |
Notes techniques
Préparez le domaine du site et la liste des liens
Vous pouvez saisir le domaine seul, par exemple example.com, ou une URL absolue du site en HTTP ou HTTPS. page=2 et #pricing sont donc internes.
Comprenez le classement et les proportions
Un lien est interne lorsqu'il se résout en URL HTTP ou HTTPS dont le nom d'hôte correspond exactement à celui du site fourni. Les schémas non web comme mailto, tel et ftp sont également externes, puisqu'ils ne désignent pas une page HTTP ou HTTPS sur l'hôte configuré. Le résultat contient total_links, internal_links et external_links, puis internal_ratio et external_ratio sous forme de valeurs comprises entre zéro et un.
Exploitez le résultat dans un audit SEO
L'utilisation dans le navigateur est gratuite ; l'API coûte $0.002 par requête.
Questions techniques
Que se passe-t-il si la liste est vide ?
La requête échoue avec l'erreur invalid_input, car il faut au moins un lien pour calculer un décompte et une proportion utiles.