Validador de OGP e meta tags

Cole seu HTML para validar as meta tags de Open Graph (OGP) e Twitter Card. Detecta tags ausentes e og:image inválidas, com pré-visualização do cartão de compartilhamento.

Examinar as meta tags que decidem o aspecto de um link compartilhado

O título, a descrição e a imagem que surgem ao publicar um link numa rede social são decididos pelas meta tags de Open Graph e de Twitter Card escritas no `` da página. Esta ferramenta as extrai do HTML que você cola, aponta as tags ausentes e os valores defeituosos, e pré-visualiza o resultado em algo bem próximo do cartão tal como aparecerá.

**A falha mais comum de longe é escrever `og:image` como caminho relativo.** Os rastreadores buscam a imagem a partir dos próprios servidores, de modo que um caminho como `/img/ogp.png` não pode ser resolvido e **o cartão chega com a imagem ausente.** Escreva-a sempre como URL absoluta começando por `https://`. **A outra coisa que convém saber é que esses serviços guardam em cache o que rastreiam.** Corrigir uma tag pode deixar à vista o conteúdo antigo, e aí é preciso pedir um novo rastreamento pela ferramenta de depuração de cada serviço. Note ainda que um Twitter Card recorre às tags `og:` onde não existir uma `twitter:`, então não é preciso escrever as duas.

Como se usa

  1. Cole o código HTML Basta o conteúdo de ``, ou a página inteira se lhe for mais cômodo.
  2. Experimente antes os exemplos São oferecidos um exemplo bom e um ruim, de modo que você pode ver em que diferem os veredictos antes de começar.
  3. Leia os pontos apontados **São indicadas as tags ausentes e todo `og:image` que não seja uma URL absoluta.**
  4. Confira o aspecto na pré-visualização Você pode ver como o título quebra e onde a descrição é cortada antes de publicar qualquer coisa.

Dicas para aproveitar melhor

  • O tamanho recomendado para og:image é 1200×630px (proporção 1.91:1). Imagens pequenas demais ou com proporção incorreta podem ser cortadas de forma inesperada pelas plataformas sociais.
  • Os crawlers do Facebook, LINE e Slack leem og:title/og:description, enquanto o X (Twitter) usa suas próprias twitter:title/twitter:description. Configurar ambos garante uma pré-visualização correta em todas as plataformas.
  • Se twitter:card estiver ausente, o X tentará recorrer a og:title/og:description, mas a imagem pode não ser exibida corretamente, por isso é melhor defini-lo explicitamente.
  • Defina og:url com a URL canônica e absoluta (https://) da página. Isso também ajuda a evitar confusões de conteúdo duplicado causadas por URLs com parâmetros de rastreamento.
  • Logo após alterar suas meta tags, as redes sociais ainda podem exibir uma pré-visualização antiga em cache. Use a ferramenta de recrawl de cada plataforma (por exemplo, o Depurador de Compartilhamento do Facebook) para atualizar o cache.

Quando é útil

Revisar um artigo antes de publicá-lo

**Se o link aparece quebrado depois de fora, o cache faz com que corrigi-lo não conserte as coisas.** Olhar antes é o caminho mais seguro.

Verificar o que uma modelo produz

Cole o `` que o seu gerenciador de conteúdo emitiu e confirme que as tags previstas estão lá.

Revisar uma troca de imagem

**Se um novo `og:image` é uma URL absoluta é justamente o tipo de detalhe que passa despercebido.**

Tomar exemplo de outros sites

Cole o código de uma página que se mostre bem e veja quais tags ela se deu ao trabalho de pôr.

Termos de Open Graph

Og:title
O cabeçalho que aparece no cartão. **Pode diferir de ``, o que lhe permite redigi-lo mais breve para as redes.**</dd> <dt class="glossary-term" id="glossary-1">Og:description</dt> <dd class="glossary-definition">O texto descritivo do cartão. É cortado se for longo demais, então ponha na frente o que há de substancial.</dd> <dt class="glossary-term" id="glossary-2">Og:image</dt> <dd class="glossary-definition">A imagem do cartão. **Indique-a sempre como URL absoluta.** Cerca de 1200 por 630 pixels é um tamanho cômodo.</dd> <dt class="glossary-term" id="glossary-3">Og:type</dt> <dd class="glossary-definition">A classe de página. `article` é o habitual para um texto e `website` para qualquer outra coisa.</dd> <dt class="glossary-term" id="glossary-4">Twitter:card</dt> <dd class="glossary-definition">A forma do cartão. Pôr `summary_large_image` mostra a imagem em toda a largura.</dd> <dt class="glossary-term" id="glossary-5">Og:url</dt> <dd class="glossary-definition">A URL canônica da página. **É onde se consolidam os compartilhamentos, então cuide de não escrever uma URL com parâmetros de consulta.**</dd> </dl> </div> </div> </div> <div class="row mt-4 section-faq"> <div class="col-md-12"> <div class="faq-card"> <h2 class="h4"><svg class="svg-icon-inline me-2" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-help-circle" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M12 16v.01" /> <path d="M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483" /> </svg>Perguntas frequentes</h2> <div class="accordion accordion-flush mt-3" id="faq-accordion"> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-0"> Por que meu og:image não aparece ao compartilhar a página nas redes sociais? </button> </h3> <div id="faq-0" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">A causa mais comum é uma URL de imagem relativa (como <code>/img/a.png</code>). A maioria dos crawlers não consegue resolver URLs relativas, então sempre use uma URL absoluta começando com <code>https://</code>. Também pode falhar se o servidor bloquear o User-Agent do crawler, ou se a imagem for pequena demais.</div> </div> </div> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-1"> Preciso configurar tanto og:title quanto a tag <title>? </button> </h3> <div id="faq-1" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">Sim, elas têm funções diferentes, então recomenda-se configurar ambas. A <code><title></code> é usada no título dos resultados de busca e na aba do navegador, enquanto <code>og:title</code> é usada no título do cartão ao compartilhar nas redes sociais. Muitos crawlers recorrem à <code><title></code> se og:title estiver ausente, mas o resultado pode não corresponder ao pretendido.</div> </div> </div> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-2"> Qual valor devo escolher para twitter:card? </button> </h3> <div id="faq-2" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">Para um artigo ou página de blog típica, recomenda-se <code>summary_large_image</code>, pois exibe uma imagem grande. Se uma miniatura pequena for suficiente, use <code>summary</code>. <code>app</code> e <code>player</code> destinam-se, respectivamente, a chamadas de instalação de app e a vídeo/áudio incorporado, e não são escolhas típicas para uma página comum.</div> </div> </div> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-3"> Corrigi minhas meta tags, mas a pré-visualização nas redes sociais ainda não atualizou. Por quê? </button> </h3> <div id="faq-3" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">As redes sociais armazenam em cache os resultados do rastreamento, então uma pré-visualização desatualizada pode persistir mesmo após a correção das tags. É preciso solicitar explicitamente um novo rastreamento com a ferramenta de cada plataforma — como o Depurador do Facebook/LINE ou o Card Validator do X — para atualizar o cache.</div> </div> </div> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-4"> O que acontece se uma página não tiver nenhuma tag OGP? </button> </h3> <div id="faq-4" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">A maioria dos crawlers recorrerá a <code><title></code> e <code>meta description</code> para gerar uma pré-visualização, mas nenhuma imagem será exibida, resultando em uma pré-visualização simples de link e texto. Como isso afeta a taxa de clique, é recomendável configurar ao menos <code>og:title</code>, <code>og:description</code> e <code>og:image</code>.</div> </div> </div> </div> </div> </div> </div> <script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Por que meu og:image não aparece ao compartilhar a página nas redes sociais?","acceptedAnswer":{"@type":"Answer","text":"A causa mais comum é uma URL de imagem relativa (como /img/a.png). A maioria dos crawlers não consegue resolver URLs relativas, então sempre use uma URL absoluta começando com https://. Também pode falhar se o servidor bloquear o User-Agent do crawler, ou se a imagem for pequena demais."}},{"@type":"Question","name":"Preciso configurar tanto og:title quanto a tag <title>?","acceptedAnswer":{"@type":"Answer","text":"Sim, elas têm funções diferentes, então recomenda-se configurar ambas. A <title> é usada no título dos resultados de busca e na aba do navegador, enquanto og:title é usada no título do cartão ao compartilhar nas redes sociais. Muitos crawlers recorrem à <title> se og:title estiver ausente, mas o resultado pode não corresponder ao pretendido."}},{"@type":"Question","name":"Qual valor devo escolher para twitter:card?","acceptedAnswer":{"@type":"Answer","text":"Para um artigo ou página de blog típica, recomenda-se summary_large_image, pois exibe uma imagem grande. Se uma miniatura pequena for suficiente, use summary. app e player destinam-se, respectivamente, a chamadas de instalação de app e a vídeo/áudio incorporado, e não são escolhas típicas para uma página comum."}},{"@type":"Question","name":"Corrigi minhas meta tags, mas a pré-visualização nas redes sociais ainda não atualizou. Por quê?","acceptedAnswer":{"@type":"Answer","text":"As redes sociais armazenam em cache os resultados do rastreamento, então uma pré-visualização desatualizada pode persistir mesmo após a correção das tags. É preciso solicitar explicitamente um novo rastreamento com a ferramenta de cada plataforma — como o Depurador do Facebook/LINE ou o Card Validator do X — para atualizar o cache."}},{"@type":"Question","name":"O que acontece se uma página não tiver nenhuma tag OGP?","acceptedAnswer":{"@type":"Answer","text":"A maioria dos crawlers recorrerá a <title> e meta description para gerar uma pré-visualização, mas nenhuma imagem será exibida, resultando em uma pré-visualização simples de link e texto. Como isso afeta a taxa de clique, é recomendável configurar ao menos og:title, og:description e og:image."}}]}</script> <div class="row mt-4 section-article"> <div class="col-md-12"> <div class="article-card"> <img src="https://toolbase.cc/img/toolkun.png" alt="Tool-kun" style="float:right;width:56px;margin:0 0 .5rem 1.25rem;opacity:.9"> <h2 class="h4">Curiosidade — Por que o OGP existe — o Facebook o criou para fazer o botão "Curtir" funcionar</h2> <p>O Open Graph Protocol (OGP) foi criado pelo Facebook em 2010 para ajudar a popularizar seu botão "Curtir". Na época, compartilhar uma página no Facebook resultava em pouco mais que um link e um título nus, e as taxas de clique sofriam. A solução do Facebook foi permitir que a própria página declarasse como deveria aparecer ao ser compartilhada, adicionando um novo namespace <code><meta property="og:xxx"></code> ao HTML comum.</p> <p>Curiosamente, o OGP é construído sobre o <strong>RDFa</strong>, uma especificação do W3C para incorporar dados estruturados em HTML. Ao reutilizar um padrão já existente, o Facebook conseguiu lançar o novo recurso sem precisar da cooperação de fabricantes de navegadores ou de outras empresas — bastavam algumas meta tags extras nas páginas já existentes. Essa abordagem de "estender sem quebrar a compatibilidade retroativa" funcionou, e o OGP tornou-se um padrão de fato adotado bem além do Facebook, em plataformas como Slack, LINE e Discord.</p> <p>O Twitter nunca adotou o OGP diretamente; em vez disso, criou seu próprio namespace separado, o <strong>Twitter Cards</strong> (<code>twitter:xxx</code>). Isso foi, possivelmente, tanto uma escolha competitiva quanto técnica — não querendo simplesmente adotar uma especificação originada pelo rival Facebook. Como resultado, a maioria dos sites ainda precisa duplicar as tags og: e twitter:, o que é uma das razões pelas quais ferramentas como este validador continuam úteis.</p> <div class="related-trivia"> <p class="related-trivia-label"> <svg class="svg-icon-inline" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-books" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M5 5a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1l0 -14" /> <path d="M9 5a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1l0 -14" /> <path d="M5 8h4" /> <path d="M9 16h4" /> <path d="M13.803 4.56l2.184 -.53c.562 -.135 1.133 .19 1.282 .732l3.695 13.418a1.02 1.02 0 0 1 -.634 1.219l-.133 .041l-2.184 .53c-.562 .135 -1.133 -.19 -1.282 -.732l-3.695 -13.418a1.02 1.02 0 0 1 .634 -1.219l.133 -.041" /> <path d="M14 9l4 -1" /> <path d="M16 16l3.923 -.98" /> </svg> Ler curiosidades relacionadas </p> <ul class="related-trivia-list"> <li> <a href="https://toolbase.cc/pt/dev/seo/jsonld_validator"> <svg class="svg-icon-inline" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-chevron-right" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M9 6l6 6l-6 6" /> </svg> <span>Curiosidade — Por que o JSON-LD substituiu o Microdata e o RDFa</span> </a> </li> <li> <a href="https://toolbase.cc/pt/dev/server/security_headers_checker"> <svg class="svg-icon-inline" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-chevron-right" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M9 6l6 6l-6 6" /> </svg> <span>Curiosidade — securityheaders.com e a história da defesa contra clickjacking</span> </a> </li> </ul> </div> <div class="trivia-collection-link"> <a href="https://toolbase.cc/pt/trivia"> <svg class="svg-icon-inline" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-library" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M7 5.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666" /> <path d="M4.012 7.26a2.005 2.005 0 0 0 -1.012 1.737v10c0 1.1 .9 2 2 2h10c.75 0 1.158 -.385 1.5 -1" /> <path d="M11 7h5" /> <path d="M11 10h6" /> <path d="M11 13h3" /> </svg> Ver todas as curiosidades </a> </div> </div> </div> </div> </div> <div class="container"> <div class="row mt-4 section-related"> <div class="col-md-12"> <p class="related-tools-label">Pessoas que viram esta ferramenta também viram</p> <div class="row g-3"> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/robots_txt" class="text-decoration-none tool-card-link" title="Cole o conteúdo do seu robots.txt para verificar a sintaxe. Analisa as diretivas User-agent, Disallow, Allow e Sitemap e visualiza as regras de acesso para rastreadores."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-robot" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6 6a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2l0 -4" /> <path d="M12 2v2" /> <path d="M9 12v9" /> <path d="M15 12v9" /> <path d="M5 16l4 -2" /> <path d="M15 14l4 2" /> <path d="M9 18h6" /> <path d="M10 8v.01" /> <path d="M14 8v.01" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de robots.txt</p> <p class="mb-0 text-muted small">Cole o conteúdo do seu robots.txt para verificar a sintaxe. Analisa as diretivas User-agent, Disallow, Allow e Sitemap e visualiza as regras de acesso para rastreadores.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/sitemap_validator" class="text-decoration-none tool-card-link" title="Cole seu sitemap.xml para validá-lo conforme sitemaps.org: namespace do urlset, elemento loc obrigatório, formato de lastmod/priority e o limite de 50 mil URLs do Google."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-sitemap" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 17a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -2" /> <path d="M15 17a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -2" /> <path d="M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -2" /> <path d="M6 15v-1a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v1" /> <path d="M12 9l0 3" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de Sitemap.xml</p> <p class="mb-0 text-muted small">Cole seu sitemap.xml para validá-lo conforme sitemaps.org: namespace do urlset, elemento loc obrigatório, formato de lastmod/priority e o limite de 50 mil URLs do Google.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/jsonld_validator" class="text-decoration-none tool-card-link" title="Cole HTML ou JSON-LD bruto para validar dados estruturados FAQPage, BreadcrumbList e Article. Veja instantaneamente propriedades obrigatórias ausentes e erros comuns dos resultados avançados do Google."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-schema" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M5 2h5v4h-5l0 -4" /> <path d="M15 10h5v4h-5l0 -4" /> <path d="M5 18h5v4h-5l0 -4" /> <path d="M5 10h5v4h-5l0 -4" /> <path d="M10 12h5" /> <path d="M7.5 6v4" /> <path d="M7.5 14v4" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de dados estruturados JSON-LD</p> <p class="mb-0 text-muted small">Cole HTML ou JSON-LD bruto para validar dados estruturados FAQPage, BreadcrumbList e Article. Veja instantaneamente propriedades obrigatórias ausentes e erros comuns dos resultados avançados do Google.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/ads_txt" class="text-decoration-none tool-card-link" title="Cole o conteúdo do seu ads.txt para verificar a sintaxe instantaneamente. Valida linha por linha os campos DOMAIN, PUBLISHER_ID e RELATIONSHIP (DIRECT/RESELLER), ajudando você a configurar corretamente o arquivo que protege contra a revenda não autorizada de inventário publicitário (domain spoofing)."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-ad-2" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M11.933 5h-6.933v16h13v-8" /> <path d="M14 17h-5" /> <path d="M9 13h5v-4h-5v4" /> <path d="M15 5v-2" /> <path d="M18 6l2 -2" /> <path d="M19 9h2" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de ads.txt</p> <p class="mb-0 text-muted small">Cole o conteúdo do seu ads.txt para verificar a sintaxe instantaneamente. Valida linha por linha os campos DOMAIN, PUBLISHER_ID e RELATIONSHIP (DIRECT/RESELLER), ajudando você a configurar corretamente o arquivo que prot...</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/hreflang_validator" class="text-decoration-none tool-card-link" title="Cole as tags hreflang do seu <head> HTML para detectar automaticamente erros comuns de SEO multilíngue: falta de x-default, falta de autorreferência, códigos de idioma inválidos e declarações duplicadas."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-world-www" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19.5 7a9 9 0 0 0 -7.5 -4a8.991 8.991 0 0 0 -7.484 4" /> <path d="M11.5 3a16.989 16.989 0 0 0 -1.826 4" /> <path d="M12.5 3a16.989 16.989 0 0 1 1.828 4" /> <path d="M19.5 17a9 9 0 0 1 -7.5 4a8.991 8.991 0 0 1 -7.484 -4" /> <path d="M11.5 21a16.989 16.989 0 0 1 -1.826 -4" /> <path d="M12.5 21a16.989 16.989 0 0 0 1.828 -4" /> <path d="M2 10l1 4l1.5 -4l1.5 4l1 -4" /> <path d="M17 10l1 4l1.5 -4l1.5 4l1 -4" /> <path d="M9.5 10l1 4l1.5 -4l1.5 4l1 -4" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de tags Hreflang</p> <p class="mb-0 text-muted small">Cole as tags hreflang do seu <head> HTML para detectar automaticamente erros comuns de SEO multilíngue: falta de x-default, falta de autorreferência, códigos de idioma inválidos e declarações duplicadas.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/pt/dev/seo/manifest_validator" class="text-decoration-none tool-card-link" title="Cole seu manifest.json para verificar se ele atende aos requisitos de instalação de PWA. Verifica campos obrigatórios como name, start_url, display e icons, e sinaliza ícones maskable ausentes em uma lista clara."> <div class="card h-100 border shadow-sm tool-card"> <div class="card-body p-3"> <div class="d-flex align-items-start gap-2"> <span class="tool-card-icon flex-shrink-0" style="color:#6f42c1"> <svg class="tool-card-icon-svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-app-window" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10" /> <path d="M6 8h.01" /> <path d="M9 8h.01" /> </svg> </span> <div class="flex-grow-1 min-w-0"> <p class="mb-1 fw-semibold text-dark" style="font-size:.9rem">Validador de Web App Manifest (manifest.json)</p> <p class="mb-0 text-muted small">Cole seu manifest.json para verificar se ele atende aos requisitos de instalação de PWA. Verifica campos obrigatórios como name, start_url, display e icons, e sinaliza ícones maskable ausentes em uma lista clara.</p> </div> </div> </div> </div> </a> </div> </div> </div> </div> </div> </main> <footer> <div class="container mt-4"> <div class="row"> <div class="col-12"> <div class="d-flex align-items-center gap-3 my-3"> <hr class="flex-grow-1 m-0"> <img src="https://toolbase.cc/img/toolkun-up.png" alt="" style="height:40px; opacity:.75;"> <hr class="flex-grow-1 m-0"> </div> <p class="text-center text-secondary small mt-3 mb-3">Os resultados de cálculo e as informações deste site são fornecidos apenas para fins de referência. Não garantimos a precisão ou integridade e não nos responsabilizamos por quaisquer danos decorrentes do seu uso.</p> <p class="text-center mb-3"> <a href="https://toolbase.cc/pt/about" class="text-muted small me-3">O que é o Toolbase?</a> <a href="https://toolbase.cc/pt/feedback?tool=dev.seo.ogp_validator" class="text-muted small me-3">Feedback</a> <a href="https://toolbase.cc/pt/terms" class="text-muted small me-3">Termos de serviço</a> <a href="https://toolbase.cc/pt/privacy" class="text-muted small me-3">Política de Privacidade</a> <a href="https://toolbase.cc/pt/licenses" class="text-muted small me-3">Licenças de código aberto</a> <a href="#" onclick="showCookieSettings(); return false;" class="text-muted small">Configurações de cookies</a> </p> <p class="text-center mb-3" style="font-size:.75rem;"> <a href="https://toolbase.cc/dev/seo/ogp_validator" hreflang="ja" class="text-muted">日本語</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/en/dev/seo/ogp_validator" hreflang="en" class="text-muted">English</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/zh/dev/seo/ogp_validator" hreflang="zh" class="text-muted">简体中文</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/zh-Hant/dev/seo/ogp_validator" hreflang="zh-Hant" class="text-muted">繁體中文</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/es/dev/seo/ogp_validator" hreflang="es" class="text-muted">Español</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/pt/dev/seo/ogp_validator" hreflang="pt" class="text-body fw-semibold">Português</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/de/dev/seo/ogp_validator" hreflang="de" class="text-muted">Deutsch</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/fr/dev/seo/ogp_validator" hreflang="fr" class="text-muted">Français</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/it/dev/seo/ogp_validator" hreflang="it" class="text-muted">Italiano</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/ko/dev/seo/ogp_validator" hreflang="ko" class="text-muted">한국어</a> </p> <p class="text-center"> <a href="https://codebase.co.jp" target="_blank" class="text-muted" style="font-size:.75rem; opacity:.6;">Codebase Inc.</a> </p> </div> </div> </div> </footer> <div class="modal fade" id="toolSearchModal" tabindex="-1" aria-hidden="true" data-endpoint="https://toolbase.cc/pt/search-index.json" data-error-message="Não foi possível carregar a lista de ferramentas. Verifique sua conexão e tente novamente."> <div class="modal-dialog modal-dialog-scrollable modal-dialog-centered"> <div class="modal-content"> <div class="modal-header border-bottom-0"> <div class="input-group"> <span class="input-group-text bg-white border-end-0"><svg class="svg-icon-inline text-muted" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-search" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" /> <path d="M21 21l-6 -6" /> </svg></span> <input type="text" id="toolSearchInput" class="form-control border-start-0" placeholder="Buscar ferramentas..." autocomplete="off"> </div> <button type="button" class="btn-close ms-2" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body p-0"> <ul id="toolSearchResults" class="list-group list-group-flush"></ul> <p id="toolSearchEmpty" class="text-muted text-center py-4 px-3 d-none mb-0">Nenhuma ferramenta encontrada</p> </div> </div> </div> </div> <div id="toastContainer" class="toast-container position-fixed bottom-0 end-0 p-3" style="z-index: 1090"></div> <link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/app-DJY5gZmy.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/bootstrap.bundle.min-CYJJg-x7.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/rolldown-runtime-DAXXjFlN.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/favorites-CHkhC6V5.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/toast-wr68XIKP.js" /><script type="module" src="https://toolbase.cc/build/assets/app-DJY5gZmy.js"></script> <link rel="preload" as="style" href="https://toolbase.cc/build/assets/index-CU7vBhfN.css" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/index-BQgUPmBB2.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/vue.esm-bundler-CZulxOyf.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/rolldown-runtime-DAXXjFlN.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/_plugin-vue_export-helper-BDNMzG2s.js" /><link rel="modulepreload" as="script" href="https://toolbase.cc/build/assets/csrf-DLdgo79t.js" /><link rel="stylesheet" href="https://toolbase.cc/build/assets/index-CU7vBhfN.css" /><script type="module" src="https://toolbase.cc/build/assets/index-BQgUPmBB2.js"></script></body> </html>