Si has notado que tu WordPress va lento y tienes videos de YouTube embebidos, ya encontraste al culpable. Cada iframe de YouTube descarga automáticamente entre 500KB y 1.2MB solo para mostrar la miniatura, sin que el usuario haga clic en play.
Multiplica eso por 3 o 4 videos en una página y tienes 4MB extra de descarga que están destrozando tu Core Web Vitals.

El problema real con los embeds de YouTube
Cuando embebes video con el código estándar de YouTube:
<iframe src="https://www.youtube.com/embed/VIDEO_ID" ...></iframe>
WordPress descarga inmediatamente:
- La miniatura del video (varios tamaños)
- JavaScript de YouTube
- CSS de YouTube
- Recursos de tracking
- Fuentes de Google
Resultado: 500KB-1.2MB por video que impacta directamente en tu LCP (Largest Contentful Paint).
La solución: Lazy load real para YouTube
Método 1: Plugin Lite YouTube Embeds (Recomendado)
- Instala el plugin: Busca «Lite YouTube Embeds» en tu WordPress
- Actívalo: No necesita configuración
- Usa el shortcode:
[lite-youtube videoid="TU_VIDEO_ID"]

Ahorro: De 1.2MB a 2KB por video. Carga solo cuando el usuario hace clic.
Método 2: Código manual (sin plugin)
Si prefieres no usar plugins, añade este código a tu functions.php:
function youtube_lazy_load($video_id, $title = 'Video') {
return '<div class="youtube-player" data-id="' . $video_id . '">
<img src="https://img.youtube.com/vi/' . $video_id . '/maxresdefault.jpg" alt="' . $title . '">
<div class="play-button"></div>
</div>';
}
Añade este CSS a tu tema:
css
.youtube-player {
position: relative;
cursor: pointer;
max-width: 100%;
}
.youtube-player img {
width: 100%;
height: auto;
}
.play-button {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 68px;
height: 48px;
background: rgba(255,0,0,0.8);
border-radius: 14px;
}
.play-button:before {
content: '';
position: absolute;
left: 26px;
top: 14px;
width: 0;
height: 0;
border-left: 16px solid white;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
}
Y este JavaScript:
document.addEventListener('click', function(e) {
if (e.target.closest('.youtube-player')) {
const player = e.target.closest('.youtube-player');
const videoId = player.dataset.id;
const iframe = document.createElement('iframe');
iframe.src = `https://www.youtube.com/embed/${videoId}?autoplay=1`;
iframe.width = '100%';
iframe.height = '315';
iframe.allow = 'autoplay; encrypted-media';
player.parentNode.replaceChild(iframe, player);
}
});
Método 3: Para Elementor
Si usas Elementor:
- No uses el widget de Video de Elementor para YouTube
- Instala el plugin «Lazy Load for Videos«
- O usa el widget HTML con el código manual de arriba
Configuración avanzada
Preload solo del primer video
Si tienes un video principal que los usuarios ven inmediatamente, puedes hacer preload solo de ese:
<link rel="preload" href="https://img.youtube.com/vi/TU_VIDEO_ID/maxresdefault.jpg" as="image">
Lazy load con Intersection Observer
Para una implementación más avanzada:
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const player = entry.target;
const videoId = player.dataset.id;
// Cargar video solo cuando es visible
}
});
});
document.querySelectorAll('.youtube-player').forEach(player => {
observer.observe(player);
});
Testing: Verifica que funciona
Antes vs. Después
- Abre DevTools (F12)
- Ve a Network
- Recarga la página
- Busca peticiones a youtube.com
Antes: Verás múltiples peticiones a YouTube (JS, CSS, imágenes)
Después: Solo verás la petición de la miniatura (cuando hagas clic)
Herramientas para medir el impacto
- GTmetrix: Compara el peso total antes/después
- PageSpeed Insights: Revisa mejora en LCP
- WebPageTest: Analiza el waterfall de recursos
Mejora típica: LCP reduce 1-3 segundos, peso total reduce 60-80% por página.
Errores comunes que debes evitar
❌ Error 1: Usar lazy loading genérico
Los plugins de lazy loading genéricos no funcionan bien con iframes de YouTube porque el iframe ya está cargado.
❌ Error 2: Mantener el iframe oculto
Esto sigue descargando todos los recursos de YouTube.
❌ Error 3: No optimizar la miniatura
La miniatura de YouTube puede pesar 200-400KB. Usa maxresdefault.jpg solo si necesitas alta calidad.
❌ Error 4: Lazy load en above-the-fold
Si el video está en la parte superior visible, no uses lazy loading o penalizarás el LCP.
Plugins recomendados (probados)
Gratuitos:
- Lite YouTube Embeds: El más ligero y efectivo
- Lazy Load for Videos: Funciona con múltiples plataformas
- WP YouTube Lyte: Específico para YouTube
Premium:
- Perfmatters: Incluye lazy loading avanzado para videos
- WP Rocket: Lazy loading automático (configuración necesaria)
Monitoreo continuo
Configura alertas automáticas
- Google Search Console: Monitorea Core Web Vitals
- GTmetrix: Configura alertas si el LCP supera 2.5s
- Uptime Robot: Verifica que los videos siguen funcionando
Métricas clave a seguir
- LCP: Debe mejorar 1-3 segundos
- Peso total: Reducción de 60-80% por página con videos
- Time to Interactive: Mejora notable
- Cumulative Layout Shift: Debe mantenerse bajo
Próximo paso: optimización total de medios
El lazy loading de YouTube es solo el principio. Si este cambio mejora tu velocidad notablemente, imagina el impacto de optimizar:
- Imágenes con lazy loading inteligente
- PDFs embebidos pesados
- Galerías de fotos optimizadas
- Videos alojados en tu servidor
🎁 Espero que este artículo te ayude a mejorar la carga de tu Wordpress, pero para asegurarme que tu proyecto va a cargar como un cohete he preparado una Checklist de WPO para Wordpress para que puedas aplicar y solucionar a aquellos problemas que afectan a tu web.

