Core Web Vitals perfetti per YouTube

Scopri come incorporare video di YouTube senza perdere PageSpeed

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-27

Core Web Vitals perfetti per YouTube

I video di YouTube sono un ottimo modo per migliorare la tua pagina. La user experience dei video aggiunti è semplicemente fantastica. 

Non importa quanto ci provi, i video di YouTube rallenteranno sempre la pagina se li incorpori usando il codice di incorporamento predefinito di YouTube.

In questo breve articolo ti mostrerò come velocizzare la tua pagina e incorporare video di YouTube senza perdere PageSpeed.

Ultima revisione a cura di Arjen Karel a febbraio 2026

youtube placeholder for pagespeed

Come incorporare un video di YouTube (il modo lento)

YouTube ha reso piuttosto semplice incorporare un video nella tua pagina. Per prima cosa vai alla pagina del video e clicca su condividi sotto il video

youtube share button

Quindi seleziona incorpora e copia il codice di incorporamento:

slow youtube embed code

Copia il codice e incollalo nell'HTML del tuo sito. Quando poi esegui un audit su Lighthouse noterai che tutte le metriche importanti come il First Contentful Paint, lo Speed Index, il Largest Contentful Paint e il Total Blocking Time sono aumentate di circa 1 o 1,5 secondi. Un incorporamento standard di YouTube carica tra 1,3 e 2,6 MB di JavaScript, CSS, font e script di tracciamento. Effettua oltre 20 richieste HTTP verso 8-10 domini diversi. Tutto questo avviene prima ancora che il visitatore prema play. Risolviamo il problema:

Incorporamento predefinito di YouTube

youtube embed slow lighthouse results

Incorporamento intelligente di YouTube

fast youtube embed lighthouse results

Correggi i Core Web Vitals di YouTube!

Correggeremo i Core Web Vitals creando un segnaposto per l'immagine. Durante il caricamento della pagina verrà caricato il segnaposto. Solo quando avremo effettivamente bisogno del video di YouTube cambieremo il segnaposto con il video reale. Questo è chiamato pattern facade: mostra prima un sostituto leggero, carica la risorsa pesante di terze parti solo all'interazione. La stessa tecnica funziona per Google Maps e i widget di chat.

Passaggio 1: Scarica l'immagine segnaposto

Scaricare l'immagine segnaposto è davvero semplice. Guarda l'url del video di YouTube. Per questo esempio useremo questo url: https://www.youtube.com/watch?v=Oxv6IRcuNaI

Come potresti notare c'è una variabile nell'url: 'Oxv6IRcuNaI'. Copia quella variabile e incollala nel percorso dell'immagine predefinita per qualsiasi video di YouTube https://i.ytimg.com/vi_webp/Oxv6IRcuNaI/maxresdefault.webp

Apri quell'url, fai clic con il tasto destro sull'immagine e seleziona 'salva immagine con nome'. Dopo aver scaricato l'immagine, ridimensionala in base alle tue esigenze.

Passaggio 2: Crea il segnaposto

Il passaggio successivo consiste nel creare il segnaposto. Userò un div posizionato in modo relativo, inserirò un'immagine con object-fit:cover e un iframe vuoto che popoleremo in seguito. Per la privacy, puoi utilizzare youtube-nocookie.com al posto di youtube.com nell'URL di incorporamento. Questo impedisce a YouTube di impostare cookie di tracciamento finché il video non viene effettivamente riprodotto.

<div id="ytplaceholder">
   <img class="ytcover"
        loading="lazy"
        width="560"
        height="315"
        src="https://i.ytimg.com/vi_webp/Oxv6IRcuNaI/maxresdefault.webp">
   <iframe
       id="ytiframe"
       width="560"
       height="315"
       data-src="https://www.youtube-nocookie.com/embed/Oxv6IRcuNaI">
   </iframe>
</div>

Fin qui tutto bene, ora aggiungiamo un po' di stile. Il padding nel segnaposto di YouTube è un piccolo trucco per garantire che il video si ridimensioni su tutti i dispositivi. L'immagine è posizionata in modo assoluto in alto e ha una proprietà object-fit:cover. Questo imita un'immagine di sfondo ma consente il lazy loading e le immagini responsive. Infine l'iframe stesso ha una posizione assoluta e copre l'intero segnaposto una volta visibile.

#ytplaceholder {
    position: relative;
    position: relative;
    overflow: hidden;
    padding-top: 56.25%;
}

#ytplaceholder img {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    object-fit: cover
}

#ytplaceholder iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
    opacity: 0;
    transition: opacity 2.4s ease 0s;
}

Ora arriva la magia: cambiamo l'immagine segnaposto con un video reale. Aggiungo un event listener al segnaposto di YouTube. Una volta che un visitatore passa il mouse sull'immagine, l'iframe di YouTube viene caricato e diventa visibile a causa della modifica dell'opacità.

<script>
// youtube placeholder
var ytplaceholder = document.getElementById ('ytplaceholder');

// change the video
var videolistner = function(e) {
   var ytiframe = document.getElementById('ytiframe');
   ytiframe.src = ytiframe.getAttribute('data-src');
   ytiframe.onload = ytiframe.style.opacity = 1;
   ytplaceholder.removeEventListener("mouseover", videolistner);
};

//listen to the mouseover event to change the video
ytplaceholder.addEventListener('mouseover', videolistner);

Mostra sempre il video di YouTube

Andiamo oltre e accodiamo il video di YouTube per sostituire sempre l'immagine segnaposto anche senza alcuna interazione. Non voglio farlo subito, aspettiamo finché il browser non è inattivo. Userò un setTimeout per semplicità ma anche il metodo requestIdleCallback() sarebbe un'ottima scelta. Nota che requestIdleCallback non è ancora supportato di default in Safari. Usa un fallback: const idle = window.requestIdleCallback || ((cb) => setTimeout(cb, 1));

<script>
var ytplaceholder = document.getElementById ('ytplaceholder');

var videolistner = function (e) {
   var ytiframe = document.getElementById ('ytiframe');
   ytiframe.src = ytiframe.getAttribute ('data-src');
   ytiframe.onload = ytiframe.style.opacity=1;
   ytplaceholder.removeEventListener ("mouseover", videolistner);
   };

ytplaceholder.addEventListener ('mouseover', videolistner);

// show the YouTube video anyway after 3 seconds
setTimeout(function(){
   videolistner();
},3000);
</script>

Ecco a voi, un punteggio PageSpeed perfetto con un video di YouTube incorporato in pochissime righe di codice.

Alternativa: la tecnica srcdoc

Se vuoi evitare completamente JavaScript, puoi usare l'attributo srcdoc sull'iframe. Questo incorpora una mini pagina HTML (solo la miniatura e un pulsante play) direttamente nel tag iframe. Quando il visitatore preme play, il browser lo sostituisce con il player effettivo di YouTube.

<iframe
   src="https://www.youtube-nocookie.com/embed/VIDEO_ID?autoplay=1"
   srcdoc="<style>*{padding:0;margin:0;overflow:hidden}
   html,body{height:100%}
   img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}
   span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;
   color:white;text-shadow:0 0 0.5em black}</style>
   <a href=https://www.youtube-nocookie.com/embed/VIDEO_ID?autoplay=1>
   <img src=https://i.ytimg.com/vi_webp/VIDEO_ID/maxresdefault.webp
   alt='Video title'><span>&#x25BA;</span></a>"
   width="560"
   height="315"
   loading="lazy"
   allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
   allowfullscreen>
</iframe>

L'approccio srcdoc non carica nessuna risorsa esterna finché il visitatore non interagisce. Il compromesso è che su alcuni browser mobile richiede due tocchi (uno per attivare il link srcdoc, uno per riprodurre il video).

Pronto per la produzione: lite-youtube-embed

Se preferisci una soluzione pronta all'uso, il web component lite-youtube-embed di Paul Irish fa tutto questo in un singolo custom element. È circa 224 volte più veloce dell'incorporamento predefinito di YouTube ed è la soluzione raccomandata da web.dev.

<lite-youtube videoid="Oxv6IRcuNaI"></lite-youtube>

Gestisce la miniatura, il pulsante play, il dimensionamento responsivo e l'accessibilità fin dal primo utilizzo. Usa youtube-nocookie.com di default.

Estendi questa tecnica

Ovviamente questo è solo un semplice esempio che funziona solo per un singolo video di YouTube con un id specifico. Sul tuo sito sarebbe una buona idea collegare l'event listener a un querySelector e collegare anche un IntersectionObserver per caricare automaticamente i video di YouTube prima che scorrano nella vista. Comunque tu voglia estenderlo: l'idea rimane la stessa!

Sui siti monitorati da CoreDash, le pagine che usano un pattern facade per YouTube hanno un LCP medio che è 800 ms più veloce delle pagine che caricano l'incorporamento direttamente. Se hai implementato il pattern facade, usa Real User Monitoring per verificare il miglioramento con i dati reali dei visitatori.

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

Performance degrades the moment you stop watching.

I set up the monitoring, the budgets, and the processes. That is the difference between a fix and a solution.

Let's talk
Core Web Vitals perfetti per YouTubeCore Web Vitals Core Web Vitals perfetti per YouTube