Conte links internos e externos
Separe os links de uma página em internos e externos: de cinco links, três no seu domínio e dois fora dão uma divisão de 0,6 para 0,4. Links relativos contam como seus, um subdomínio conta como externo e cada link mostra o seu resultado. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Nome de domínio
- https://example.com
- Nome de domínio
- example.com
- Total de links
- 5
- Links internos
- 3
- Links externos
- 2
Este contador de links internos e externos classifica cada link informado com base no hostname do seu site e retorna totais, proporções e o resultado item a item. Ele aceita uma lista já extraída de uma página, incluindo referências relativas como /about ou #details e URLs absolutas. Use-o para avaliar a composição dos links, validar um fluxo de extração ou transformar uma lista bruta em métricas consistentes sem baixar a página nem rastrear o site.
Prepare o domínio do site e a lista de links
Comece com o hostname que define seu site e com as URLs dos links coletados em uma página. A lista pode combinar URLs absolutas, URLs relativas ao protocolo, caminhos a partir da raiz, referências relativas a caminhos, links compostos apenas por consulta e links de fragmento. As referências relativas são resolvidas com base na URL do site, portanto /services, team, ?
Cada item deve ser uma string não vazia que possa ser interpretada como referência de URL. A ferramenta não baixa HTML nem descobre links sozinha; assim, o cálculo permanece determinístico e você pode analisar listas vindas de crawler, exportação do navegador, CMS, suíte de testes ou planilha. Inclua todas as ocorrências para representar a frequência de links da página.
Se o mesmo destino aparecer três vezes, ele será contado três vezes. Uma lista vazia é rejeitada para não produzir uma proporção enganosa de zero para zero.
Entenda a classificação e as proporções
A comparação ignora maiúsculas e minúsculas, pois a análise normaliza os hostnames. Caminhos, consultas, fragmentos, credenciais e portas não mudam essa classificação. Um link para outro hostname é externo, inclusive um subdomínio como blog.example.com quando o site configurado é example.com.
Por exemplo, três links internos entre quatro fornecidos geram uma proporção interna de 0.75. As proporções são arredondadas para seis casas decimais, garantindo uma saída estável, e juntas somam um. O array links preserva a ordem de entrada e mostra a classificação de cada string original, facilitando a investigação de contagens inesperadas.
Use o resultado em uma análise de SEO
As contagens devem ser tratadas como sinal de diagnóstico, não como meta universal de posicionamento. Links internos ajudam visitantes e crawlers a encontrar páginas relacionadas, entender a hierarquia e distribuir autoridade pelo site. Links externos podem sustentar afirmações e levar a fontes primárias úteis.
Uma página com equilíbrio incomum merece análise, mas o equilíbrio correto depende da finalidade: um glossário, uma landing page de produto e um artigo de pesquisa naturalmente usam links de maneiras diferentes. Compare modelos semelhantes, acompanhe mudanças e confira as classificações item a item antes de concluir. Em automações, execute o contador depois da extração e armazene o resultado junto à URL da página e à data do rastreamento.
Você pode sinalizar páginas sem links internos, detectar modelos que de repente adicionam muitos destinos externos ou confirmar que uma migração manteve a navegação no hostname esperado. Como não há solicitação de rede nem dados variáveis, a mesma entrada sempre gera a mesma saída.
Casos de uso
Analise uma landing page
Meça o equilíbrio entre links internos e externos e confira exatamente como cada URL extraída foi classificada.
Valide a saída de um crawler
Adicione contagens determinísticas ao fluxo de extração e identifique destinos inesperados fora do domínio.
Confira uma migração de site
Encontre listas com links que ainda apontam para um hostname antigo após mudanças de domínio ou ambiente.
Perguntas frequentes
Quanto custa?
Você pode executar a ferramenta gratuitamente no navegador nesta página.
Links relativos são internos?
Sim. Referências a partir da raiz, relativas a caminhos, somente de consulta ou de fragmento são resolvidas com base no site e são internas.
Subdomínios são considerados internos?
Não. A classificação exige correspondência exata do hostname; blog.example.com é externo quando o hostname configurado é example.com.
A ferramenta baixa ou rastreia minha página?
Não. Ela apenas classifica as strings de URL que você fornece e não realiza solicitações de rede.
Como os links duplicados são contados?
Cada item da lista é contado. URLs repetidas continuam repetidas porque representam ocorrências separadas de links.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.internal_link_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Prepare o domínio do site e a lista de links
Você pode informar apenas o domínio, como example.com, ou uma URL absoluta do site com HTTP ou HTTPS. page=2 e #pricing são internos.
Entenda a classificação e as proporções
Um link é interno quando resulta em uma URL HTTP ou HTTPS cujo hostname corresponde exatamente ao hostname do site informado. Esquemas que não são da web, como mailto, tel e ftp, também são externos, pois não identificam uma página HTTP ou HTTPS no host configurado. O resultado inclui total_links, internal_links e external_links, seguidos por internal_ratio e external_ratio como valores entre zero e um.
Use o resultado em uma análise de SEO
O uso no navegador é gratuito; pela API, cada solicitação custa US$ 0,002.
Perguntas técnicas
O que acontece se a lista estiver vazia?
A solicitação falha com o erro invalid_input, pois é necessário pelo menos um link para calcular uma contagem e uma proporção úteis.