# Qué son los microdatos (microdata) en SEO

> Qué son los microdatos de HTML, cómo se escriben con itemscope, itemtype e itemprop, qué dice Google frente a JSON-LD y cómo revisarlos en tu tienda.

URL: https://clione.ai/es/glosario/microdatos/
Lang: es

Si abres el código fuente de una [ficha de producto](/es/glosario/ficha-de-producto/) y ves atributos como `itemprop="price"` repartidos por el HTML, eso son microdatos (_microdata_): **los [datos estructurados](/es/glosario/datos-estructurados/) escritos sobre las mismas etiquetas que lee el cliente**, en lugar de en un bloque aparte. Aquí no hablamos de los microdatos estadísticos, los ficheros con los registros individuales de una encuesta, que comparten nombre y buena parte de las búsquedas. Te importan por dos razones: Google sigue leyéndolos como datos estructurados, aunque recomiende otro formato,[^google-sd-intro] y si tu tienda ya los tiene, conviven con cualquier otro marcado que le añadas.

## Cómo funciona

El estándar HTML define los microdatos como un mecanismo que permite añadir a un documento **grupos anidados de pares nombre-valor, en paralelo al contenido que ya existe**.[^whatwg-microdata] No hay un bloque aparte: el dato está en la etiqueta que lo muestra. Lo hacen cinco atributos:[^whatwg-microdata]

| Atributo    | Qué hace                                                                                  |
| ----------- | ----------------------------------------------------------------------------------------- |
| `itemscope` | Crea un elemento: un grupo de pares nombre-valor                                          |
| `itemtype`  | Dice de qué tipo es el elemento, con una URL del vocabulario                              |
| `itemprop`  | Nombra la propiedad que aporta esa etiqueta                                               |
| `itemid`    | Da al elemento un identificador global, si el vocabulario lo admite                       |
| `itemref`   | Suma al elemento propiedades que están en otra parte de la página, citándolas por su `id` |

El valor de cada propiedad sale de la etiqueta según su clase. En un `meta` es su atributo `content`; en un `link`, su `href`; en un `time`, su `datetime`; en un `data`, su `value`; en el resto, **el texto que contiene la etiqueta**, que es lo que ve el visitante.[^whatwg-microdata] Esa última regla es la que define el formato: en la mayoría de los casos, lo que lee la máquina y lo que lee la persona son literalmente lo mismo.

Las palabras que se escriben en `itemtype` e `itemprop` son las de [Schema.org](/es/glosario/schema-org/). Su guía de inicio, que enseña el vocabulario precisamente con microdatos, lo resume en tres pasos: `itemscope` marca la parte de la página que habla de una cosa, `itemtype` dice qué cosa es (por ejemplo `https://schema.org/Movie`) e `itemprop` etiqueta cada una de sus propiedades. Un elemento puede llevar otros dentro, como el director de una película descrito a su vez como persona.[^schema-org-gs]

Google admite tres formatos de datos estructurados. Describe los microdatos como una especificación abierta de HTML para anidar datos estructurados dentro del contenido, con atributos en las etiquetas, y [RDFa](/es/glosario/rdfa/) como una extensión de HTML5 que funciona de forma parecida. Recomienda el tercero, [JSON-LD](/es/glosario/json-ld/), que va en una etiqueta `script` y **no se mezcla con el texto visible**.[^google-sd-intro] Recomendar uno no es descartar los otros: un marcado en microdatos bien hecho sirve igual para optar a los [resultados enriquecidos](/es/glosario/resultados-enriquecidos/), y la [Prueba de resultados enriquecidos](/es/glosario/prueba-de-resultados-enriquecidos/) lee JSON-LD, RDFa y microdatos por igual.[^rich-results-test] No hace falta reescribirlo solo por el formato.

## En una tienda

La oferta de una camisa marcada con microdatos. **Ejemplo ficticio**: la tienda, el producto, la imagen y el precio son inventados.

```html
<div itemscope itemtype="https://schema.org/Product">
  <h1 itemprop="name">Camisa de lino Calella, azul</h1>
  <img itemprop="image" src="/img/calella-azul.jpg" alt="Camisa de lino Calella en azul" />
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
    <span>29,90 €</span>
    <meta itemprop="price" content="29.90" />
    <meta itemprop="priceCurrency" content="EUR" />
    <link itemprop="availability" href="https://schema.org/InStock" />En stock
  </div>
</div>
```

Tres cosas que enseña el ejemplo. La primera: el nombre no se escribe dos veces, porque el texto del `h1` **es** el valor de `name`. La segunda: el producto lleva dentro un segundo elemento, la oferta, que es un [Offer](/es/glosario/schema-offer/) con su propio `itemscope`; así se anidan los tipos en este formato. La tercera es el precio. El cliente ve «29,90 €», pero Schema.org pide el precio con punto decimal y sin símbolo, y la moneda aparte, con su código ISO 4217,[^schema-org-offer] así que el valor para las máquinas va en etiquetas `meta`, y la disponibilidad, que en el vocabulario es una URL, en un `link`.[^whatwg-microdata]

Eso tiene un coste. En cuanto un dato no sale del texto visible, sino de un `meta`, puede dejar de coincidir con lo que muestra la página, igual que un bloque de JSON-LD olvidado. Y como los atributos viven dentro de la plantilla, **cambiar de tema o reescribir una plantilla puede borrar el marcado sin que nadie lo decida**: el HTML nuevo no tiene por qué llevar los mismos atributos.


Usar la etiqueta `meta` para marcar lo que la página no enseña. Schema.org la propone para la información que la página transmite pero no escribe como texto, como una valoración que se ve dibujada en estrellas, y en la misma guía pide marcar solo el contenido visible para quien visita la página, no el que está en bloques ocultos.[^schema-org-gs] Google lo dice igual: no se marca nada que el lector no pueda ver.[^google-sd-policies]


## Cómo comprobarlo

1. **Abre el código fuente de una ficha y busca `itemscope`.** Si aparece, la página lleva microdatos; el `itemtype` de al lado te dice de qué tipo es cada elemento.
2. **Busca también `application/ld+json`.** Si la página lleva los dos formatos, comprueba que describen el mismo producto con el mismo nombre, el mismo precio y la misma disponibilidad.
3. **Pasa la URL por la Prueba de resultados enriquecidos.** Lee los tres formatos, te dice qué resultados enriquecidos detecta y con qué errores, y también acepta un fragmento de código pegado.[^rich-results-test]
4. **Revisa cada `meta` y cada `link` con `itemprop`.** Son los valores que no salen del texto visible, y cada uno tiene que corresponder a algo que el cliente ve en la ficha.[^google-sd-policies]
5. **Repite la revisión después de cambiar de tema o de plantilla**, porque el marcado viaja con el HTML.

## Concepto cercano: JSON-LD

Los microdatos y JSON-LD escriben el mismo vocabulario; lo que cambia es dónde vive el dato. En microdatos está **dentro de las etiquetas visibles**, de modo que el texto de la página es el valor; en JSON-LD está en un bloque `script` aparte que no se mezcla con el texto que ve el usuario.[^google-sd-intro] Lo primero hace más difícil que los dos digan cosas distintas, porque son el mismo texto, y más fácil perder el marcado al tocar la plantilla. Lo segundo permite cambiar el marcado sin tocar la maqueta, y por eso Google lo recomienda,[^google-sd-intro] con el riesgo contrario: que el bloque se quede atrás cuando cambia la página.

Para seguir, la [ruta de lectura de datos estructurados](/es/aprender/datos-estructurados/) ordena el resto de términos, y la guía para [auditar los datos estructurados de una ficha](/es/guias/auditar-ficha-de-producto/) recorre una ficha propiedad por propiedad, en el formato que tenga.
