Validador de OGP y meta etiquetas

Pega tu HTML para validar las meta etiquetas de Open Graph (OGP) y Twitter Card. Detecta etiquetas faltantes y og:image inválidas, con vista previa de la tarjeta.

Examinar las meta etiquetas que deciden el aspecto de un enlace compartido

El título, la descripción y la imagen que aparecen al publicar un enlace en una red social los deciden las meta etiquetas de Open Graph y de Twitter Card escritas en el `` de la página. Esta herramienta las extrae del HTML que usted pega, señala las etiquetas ausentes y los valores defectuosos, y previsualiza el resultado en algo muy próximo a la tarjeta tal como aparecerá.

**El fallo más común con diferencia es escribir `og:image` como ruta relativa.** Los rastreadores recogen la imagen desde sus propios servidores, de modo que una ruta como `/img/ogp.png` no puede resolverse y **la tarjeta llega con la imagen ausente.** Escríbala siempre como URL absoluta que empiece por `https://`. **Lo otro que conviene saber es que estos servicios guardan en caché lo que rastrean.** Corregir una etiqueta puede dejar a la vista el contenido antiguo, y entonces hay que solicitar un nuevo rastreo mediante la herramienta de depuración de cada servicio. Advierta además que una Twitter Card recurre a las etiquetas `og:` allí donde no exista una `twitter:`, así que no hace falta escribir ambas.

Cómo se usa

  1. Pegue el código HTML Basta con el contenido de ``, o la página entera si le resulta más cómodo.
  2. Pruebe antes con los ejemplos Se ofrecen un ejemplo bueno y uno malo, de modo que puede ver en qué difieren los dictámenes antes de empezar.
  3. Lea los puntos señalados **Se indican las etiquetas ausentes y todo `og:image` que no sea una URL absoluta.**
  4. Compruebe el aspecto en la vista previa Puede ver cómo se pliega el título y dónde se corta la descripción antes de publicar nada.

Consejos para aprovecharla mejor

  • El tamaño recomendado para og:image es 1200×630px (relación de aspecto 1.91:1). Las imágenes demasiado pequeñas o con una relación incorrecta pueden recortarse de forma inesperada en las redes sociales.
  • Los rastreadores de Facebook, LINE y Slack leen og:title/og:description, mientras que X (Twitter) usa sus propias twitter:title/twitter:description. Configurar ambas asegura una vista previa correcta en todas las plataformas.
  • Si falta twitter:card, X intentará recurrir a og:title/og:description, pero la imagen puede no mostrarse correctamente, por lo que es mejor establecerlo explícitamente.
  • Define og:url con la URL canónica y absoluta (https://) de la página. Esto también ayuda a evitar confusiones de contenido duplicado causadas por URLs con parámetros de seguimiento.
  • Justo después de cambiar tus meta etiquetas, las redes sociales pueden seguir mostrando una vista previa desactualizada en caché. Usa la herramienta de recrawl de cada plataforma (por ejemplo, el Depurador de Facebook) para actualizar la caché.

Cuándo resulta útil

Revisar un artículo antes de publicarlo

**Si el enlace se ve roto una vez fuera, la caché hace que corregirlo no arregle las cosas.** Mirar antes es el camino más seguro.

Verificar lo que produce una plantilla

Pegue el `` que emitió su gestor de contenidos y confirme que las etiquetas previstas están ahí.

Revisar un cambio de imagen

**Que un nuevo `og:image` sea una URL absoluta es justo la clase de detalle que pasa inadvertido.**

Tomar ejemplo de otros sitios

Pegue el código de una página que se muestre bien y vea qué etiquetas se ha molestado en poner.

Términos de Open Graph

Og:title
El encabezado que aparece en la tarjeta. **Puede diferir de ``, lo que le permite redactarlo más breve para las redes.**</dd> <dt class="glossary-term" id="glossary-1">Og:description</dt> <dd class="glossary-definition">El texto descriptivo de la tarjeta. Se corta si es demasiado largo, así que ponga delante lo sustancial.</dd> <dt class="glossary-term" id="glossary-2">Og:image</dt> <dd class="glossary-definition">La imagen de la tarjeta. **Indíquela siempre como URL absoluta.** Alrededor de 1200 por 630 píxeles es un tamaño cómodo.</dd> <dt class="glossary-term" id="glossary-3">Og:type</dt> <dd class="glossary-definition">La clase de página. `article` es lo habitual para un texto y `website` para cualquier otra cosa.</dd> <dt class="glossary-term" id="glossary-4">Twitter:card</dt> <dd class="glossary-definition">La forma de la tarjeta. Poner `summary_large_image` muestra la imagen a todo ancho.</dd> <dt class="glossary-term" id="glossary-5">Og:url</dt> <dd class="glossary-definition">La URL canónica de la página. **Es donde se consolidan las veces que se comparte, así que cuide de no escribir una URL con 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>Preguntas frecuentes</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 qué no aparece mi og:image al compartir la página en redes sociales? </button> </h3> <div id="faq-0" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">La causa más común es una URL de imagen relativa (como <code>/img/a.png</code>). La mayoría de los rastreadores no pueden resolver URLs relativas, así que usa siempre una URL absoluta que empiece por <code>https://</code>. También puede fallar si tu servidor bloquea el User-Agent del rastreador, o si la imagen es demasiado pequeña.</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"> ¿Necesito tanto og:title como la etiqueta <title>? </button> </h3> <div id="faq-1" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">Sí, cumplen funciones distintas, así que se recomienda configurar ambas. <code><title></code> se usa para el título en los resultados de búsqueda y la pestaña del navegador, mientras que <code>og:title</code> se usa para el título de la tarjeta al compartirse en redes sociales. Muchos rastreadores recurren a <code><title></code> si falta og:title, pero el resultado puede no coincidir con lo que pretendías.</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"> ¿Qué valor debo elegir para twitter:card? </button> </h3> <div id="faq-2" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">Para un artículo o página de blog típico, se recomienda <code>summary_large_image</code>, ya que muestra una imagen grande. Si basta con una miniatura pequeña, usa <code>summary</code>. <code>app</code> y <code>player</code> están pensados para avisos de instalación de apps y para vídeo/audio incrustado respectivamente, y no son opciones habituales para una página web normal.</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"> Corregí mis meta etiquetas, pero la vista previa en redes sociales sigue sin actualizarse. ¿Por qué? </button> </h3> <div id="faq-3" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">Las redes sociales guardan en caché los resultados de su rastreo, por lo que puede persistir una vista previa desactualizada incluso después de corregir las etiquetas. Debes solicitar explícitamente un nuevo rastreo con la herramienta de cada plataforma, como el Depurador de Facebook/LINE o el Card Validator de X, para actualizar la caché.</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"> ¿Qué ocurre si una página no tiene ninguna etiqueta OGP? </button> </h3> <div id="faq-4" class="accordion-collapse collapse" data-bs-parent="#faq-accordion"> <div class="accordion-body">La mayoría de los rastreadores recurrirán a <code><title></code> y <code>meta description</code> para generar una vista previa, pero no se mostrará ninguna imagen, resultando en una vista previa sencilla de enlace y texto. Como esto afecta a la tasa de clics, es recomendable configurar al menos <code>og:title</code>, <code>og:description</code> y <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 qué no aparece mi og:image al compartir la página en redes sociales?","acceptedAnswer":{"@type":"Answer","text":"La causa más común es una URL de imagen relativa (como /img/a.png). La mayoría de los rastreadores no pueden resolver URLs relativas, así que usa siempre una URL absoluta que empiece por https://. También puede fallar si tu servidor bloquea el User-Agent del rastreador, o si la imagen es demasiado pequeña."}},{"@type":"Question","name":"¿Necesito tanto og:title como la etiqueta <title>?","acceptedAnswer":{"@type":"Answer","text":"Sí, cumplen funciones distintas, así que se recomienda configurar ambas. <title> se usa para el título en los resultados de búsqueda y la pestaña del navegador, mientras que og:title se usa para el título de la tarjeta al compartirse en redes sociales. Muchos rastreadores recurren a <title> si falta og:title, pero el resultado puede no coincidir con lo que pretendías."}},{"@type":"Question","name":"¿Qué valor debo elegir para twitter:card?","acceptedAnswer":{"@type":"Answer","text":"Para un artículo o página de blog típico, se recomienda summary_large_image, ya que muestra una imagen grande. Si basta con una miniatura pequeña, usa summary. app y player están pensados para avisos de instalación de apps y para vídeo/audio incrustado respectivamente, y no son opciones habituales para una página web normal."}},{"@type":"Question","name":"Corregí mis meta etiquetas, pero la vista previa en redes sociales sigue sin actualizarse. ¿Por qué?","acceptedAnswer":{"@type":"Answer","text":"Las redes sociales guardan en caché los resultados de su rastreo, por lo que puede persistir una vista previa desactualizada incluso después de corregir las etiquetas. Debes solicitar explícitamente un nuevo rastreo con la herramienta de cada plataforma, como el Depurador de Facebook/LINE o el Card Validator de X, para actualizar la caché."}},{"@type":"Question","name":"¿Qué ocurre si una página no tiene ninguna etiqueta OGP?","acceptedAnswer":{"@type":"Answer","text":"La mayoría de los rastreadores recurrirán a <title> y meta description para generar una vista previa, pero no se mostrará ninguna imagen, resultando en una vista previa sencilla de enlace y texto. Como esto afecta a la tasa de clics, es recomendable configurar al menos og:title, og:description y 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">A propósito — Por qué existe OGP — Facebook lo creó para que funcionara el botón "Me gusta"</h2> <p>El Open Graph Protocol (OGP) fue creado por Facebook en 2010 para ayudar a popularizar su botón "Me gusta". En aquella época, compartir una página web en Facebook apenas mostraba un enlace desnudo y un título, y las tasas de clics se resentían. La solución de Facebook fue permitir que la propia página declarara cómo debía verse al compartirse, añadiendo un nuevo espacio de nombres <code><meta property="og:xxx"></code> al HTML normal.</p> <p>Curiosamente, OGP está construido sobre <strong>RDFa</strong>, una especificación del W3C para incrustar datos estructurados en HTML. Al reutilizar un estándar ya existente, Facebook pudo lanzar la nueva función sin necesitar la colaboración de los fabricantes de navegadores ni de otras empresas, solo unas pocas meta etiquetas añadidas a las páginas existentes. Ese enfoque de "extender sin romper la compatibilidad hacia atrás" funcionó, y OGP se convirtió en un estándar de facto adoptado mucho más allá de Facebook, en plataformas como Slack, LINE y Discord.</p> <p>Twitter nunca adoptó OGP directamente; en su lugar creó su propio espacio de nombres, <strong>Twitter Cards</strong> (<code>twitter:xxx</code>). Esto fue, posiblemente, tanto una decisión competitiva como técnica: no querer adoptar sin más una especificación originada por su rival Facebook. Como resultado, la mayoría de los sitios todavía necesitan duplicar tanto las etiquetas og: como las twitter:, lo cual es una razón por la que herramientas como este validador siguen siendo útiles.</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> Leer curiosidades relacionadas </p> <ul class="related-trivia-list"> <li> <a href="https://toolbase.cc/es/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>A propósito — Por qué JSON-LD sustituyó a Microdata y RDFa</span> </a> </li> <li> <a href="https://toolbase.cc/es/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>A propósito — securityheaders.com y la historia de la defensa contra el clickjacking</span> </a> </li> </ul> </div> <div class="trivia-collection-link"> <a href="https://toolbase.cc/es/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 las 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">Las personas que vieron esta herramienta también vieron</p> <div class="row g-3"> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/robots_txt" class="text-decoration-none tool-card-link" title="Pega el contenido de tu robots.txt para verificar su sintaxis. Analiza las directivas User-agent, Disallow, Allow y Sitemap, y visualiza las reglas de acceso para los 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">Pega el contenido de tu robots.txt para verificar su sintaxis. Analiza las directivas User-agent, Disallow, Allow y Sitemap, y visualiza las reglas de acceso para los rastreadores.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/sitemap_validator" class="text-decoration-none tool-card-link" title="Pega tu sitemap.xml para validarlo según sitemaps.org: namespace de urlset, elemento loc obligatorio, formato de lastmod/priority y el límite de 50.000 URLs de 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">Pega tu sitemap.xml para validarlo según sitemaps.org: namespace de urlset, elemento loc obligatorio, formato de lastmod/priority y el límite de 50.000 URLs de Google.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/jsonld_validator" class="text-decoration-none tool-card-link" title="Pega HTML o JSON-LD en bruto para validar datos estructurados FAQPage, BreadcrumbList y Article. Detecta al instante propiedades obligatorias faltantes y errores comunes de los resultados enriquecidos de 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 datos estructurados JSON-LD</p> <p class="mb-0 text-muted small">Pega HTML o JSON-LD en bruto para validar datos estructurados FAQPage, BreadcrumbList y Article. Detecta al instante propiedades obligatorias faltantes y errores comunes de los resultados enriquecidos de Google.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/ads_txt" class="text-decoration-none tool-card-link" title="Pega el contenido de tu ads.txt para comprobar su sintaxis al instante. Valida línea por línea los campos DOMAIN, PUBLISHER_ID y RELATIONSHIP (DIRECT/RESELLER), ayudándote a configurar correctamente el archivo que protege contra la reventa no autorizada de inventario publicitario (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">Pega el contenido de tu ads.txt para comprobar su sintaxis al instante. Valida línea por línea los campos DOMAIN, PUBLISHER_ID y RELATIONSHIP (DIRECT/RESELLER), ayudándote a configurar correctamente el archivo que proteg...</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/hreflang_validator" class="text-decoration-none tool-card-link" title="Pega las etiquetas hreflang de tu <head> HTML para detectar automáticamente errores frecuentes de SEO multilingüe: falta de x-default, falta de autorreferencia, códigos de idioma inválidos y declaraciones 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 etiquetas Hreflang</p> <p class="mb-0 text-muted small">Pega las etiquetas hreflang de tu <head> HTML para detectar automáticamente errores frecuentes de SEO multilingüe: falta de x-default, falta de autorreferencia, códigos de idioma inválidos y declaraciones duplicadas.</p> </div> </div> </div> </div> </a> </div> <div class="col-6 col-md-4 col-lg-2"> <a href="https://toolbase.cc/es/dev/seo/manifest_validator" class="text-decoration-none tool-card-link" title="Pega tu manifest.json para comprobar si cumple los requisitos de instalabilidad de una PWA. Verifica campos obligatorios como name, start_url, display e icons, y señala la ausencia de iconos maskable en una 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">Pega tu manifest.json para comprobar si cumple los requisitos de instalabilidad de una PWA. Verifica campos obligatorios como name, start_url, display e icons, y señala la ausencia de iconos maskable en una 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">Los resultados de cálculo e información de este sitio son solo de referencia. No garantizamos su exactitud ni completitud, y no nos hacemos responsables de los daños que puedan derivarse de su uso.</p> <p class="text-center mb-3"> <a href="https://toolbase.cc/es/about" class="text-muted small me-3">¿Qué es Toolbase?</a> <a href="https://toolbase.cc/es/feedback?tool=dev.seo.ogp_validator" class="text-muted small me-3">Comentarios</a> <a href="https://toolbase.cc/es/terms" class="text-muted small me-3">Términos de servicio</a> <a href="https://toolbase.cc/es/privacy" class="text-muted small me-3">Política de privacidad</a> <a href="https://toolbase.cc/es/licenses" class="text-muted small me-3">Licencias de código abierto</a> <a href="#" onclick="showCookieSettings(); return false;" class="text-muted small">Configuración 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-body fw-semibold">Español</a> <span class="text-muted mx-1">|</span> <a href="https://toolbase.cc/pt/dev/seo/ogp_validator" hreflang="pt" class="text-muted">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/es/search-index.json" data-error-message="No se pudo cargar la lista de herramientas. Comprueba tu conexión e inténtalo de nuevo."> <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 herramientas..." 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">No se encontraron herramientas</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>