YouTube (или Ютуб — как его чаще называют) — это примерно 500 часов видео, загружаемых каждую минуту. И большинство сайтов просто берут код «Поделиться → Вставить» и вставляют его как есть. Работает — ну и ладно. Но один плеер тянет за собой около 500 КБ скриптов и ощутимо замедляет загрузку страницы — даже если пользователь никогда не нажмёт Play. В этой статье разберём, как вставить видео с YouTube на сайт четырьмя способами: от самого простого до самого щадящего для скорости загрузки.
Способ 1 — Как вставить видео с YouTube через iframe
Самый очевидный путь: открываете видео на YouTube, нажимаете «Поделиться», затем «Вставить» — и получаете готовый код. Копируете, вставляете на страницу.
<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" title="Название видео" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" frameborder="0" allowfullscreen>
</iframe> Замените VIDEO_ID на идентификатор вашего видео — это часть URL после ?v= или после последнего слеша в коротких ссылках youtu.be/ . Всё остальное YouTube подставляет сам. Работает — но у такого кода есть один очевидный недостаток: фиксированные размеры. На широком экране 560 пикселей выглядят скромно, а на узком — видео вылезает за край страницы. Об этом — в следующем разделе.
Способ 2 — Адаптивный embed
Проблема стандартного кода — фиксированные width="560" и height="315" . На узких экранах видео либо обрезается, либо выходит за пределы страницы. Решение — убрать фиксированные размеры и сделать iframe резиновым через CSS. Это базовый HTML-приём, который работает для любого встроенного видео:
<div class="video-wrapper">
<iframe src="https://www.youtube.com/embed/VIDEO_ID" title="Название видео" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen>
</iframe>
</div> .video-wrapper {
aspect-ratio: 16 / 9; /* держит пропорции видео на любой ширине */
width: 100%;
}
.video-wrapper iframe {
width: 100%;
height: 100%;
border: none;
} aspect-ratio: 16 / 9 — современный CSS-способ удержать пропорции без каких-либо костылей. Контейнер сам растянется на всю ширину родителя и сохранит нужное соотношение сторон. Поддерживается во всех актуальных браузерах. Это базовый минимум — используйте его как основу для всех остальных способов.
Способ 3 — Приватный режим
По умолчанию YouTube ставит куки при загрузке плеера — даже если пользователь просто прокрутил мимо, не нажав Play. Для европейских пользователей это может означать нарушение GDPR, а для остальных — лишние данные, которые Google собирает о посетителях вашего сайта. Исправить это просто: замените в ссылке youtube.com на youtube-nocookie.com :
<!-- Обычный режим — куки и трекинг с момента загрузки плеера -->
src="https://www.youtube.com/embed/VIDEO_ID"
<!-- Приватный режим — куки только если пользователь нажал Play -->
src="https://www.youtube-nocookie.com/embed/VIDEO_ID" Видео работает абсолютно так же. Одно слово в URL — и всё. Хорошая привычка использовать приватный режим по умолчанию, даже если юридических обязательств нет.
Параметры плеера
URL плеера можно расширить параметрами — они добавляются после знака ? и разделяются символом & . Вот самые полезные:
<!-- ? — первый параметр, & — каждый следующий -->
src="https://www.youtube-nocookie.com/embed/VIDEO_ID?autoplay=1&mute=1&start=30" - autoplay=1 — автовоспроизведение
- mute=1 — без звука
- start=30 — начать с 30-й секунды
- end=90 — остановить на 90-й секунде
- controls=0 — скрыть панель управления
- loop=1 — зациклить видео
- rel=0 — не показывать похожие видео в конце
Автовоспроизведение со звуком заблокировано в большинстве браузеров — это сделано специально, чтобы сайты не орали на пользователей с первой же секунды. Если нужен autoplay=1 — обязательно добавляйте mute=1, иначе видео просто не запустится.
Способ 4 — Фасад: страница грузится мгновенно
Все предыдущие способы имеют один общий недостаток: iframe загружается при открытии страницы, даже если пользователь никогда не нажмёт Play. YouTube несёт с собой около 500 КБ скриптов и несколько сетевых запросов — больше, чем многие сайты целиком. Особенно больно, если видео на странице несколько.
Решение — паттерн «фасад»: показываем превью-картинку вместо iframe. Пользователь нажимает — только тогда загружается настоящий плеер. Страница открывается мгновенно, а видео работает как обычно.
Вот живой пример — нажмите на превью:
Нажмите, чтобы воспроизвести В примере — классика интернета. Разумеется, замените dQw4w9WgXcQ на ID своего видео.
Разберём код по частям. Начнём с HTML:
<div class="yt-facade" data-id="VIDEO_ID">
<!-- Превью: YouTube отдаёт thumbnail по шаблону URL — загружать самому не нужно -->
<img class="yt-facade__thumb" src="https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg" alt="Название видео" loading="lazy" />
<!-- Тёмный градиент снизу — для красоты -->
<div class="yt-facade__gradient"></div>
<!-- Кнопка Play — aria-label делает её доступной для скринридеров -->
<button class="yt-facade__play" aria-label="Воспроизвести">
<svg class="yt-facade__icon" viewBox="0 0 68 48" xmlns="http://www.w3.org/2000/svg">
<path d="M66.5 7.7a8.5 8.5 0 0 0-6-6C56.1 0 34 0 34 0S11.9 0 7.5 1.7a8.5 8.5 0 0 0-6 6C0 12.1 0 24 0 24s0 11.9 1.5 16.3a8.5 8.5 0 0 0 6 6C11.9 48 34 48 34 48s22.1 0 26.5-1.7a8.5 8.5 0 0 0 6-6C68 35.9 68 24 68 24s0-11.9-1.5-16.3z" fill="#ff0000"/>
<path d="M27 34l18-10-18-10v20z" fill="#fff"/>
</svg>
</button>
<span class="yt-facade__hint">Нажмите, чтобы воспроизвести</span>
</div> CSS:
.yt-facade {
position: relative;
cursor: pointer;
border-radius: 14px;
overflow: hidden;
background: #0a0a0a;
aspect-ratio: 16 / 9;
width: 100%;
box-shadow: 0 8px 40px rgba(0,0,0,.45);
transition: box-shadow .3s, transform .3s;
}
.yt-facade:hover {
box-shadow: 0 16px 56px rgba(0,0,0,.6);
transform: translateY(-2px);
}
/* Превью — заполняет весь контейнер, на ховере приближается и темнеет */
.yt-facade__thumb {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
transition: transform .5s ease, filter .35s ease;
display: block;
}
.yt-facade:hover .yt-facade__thumb {
transform: scale(1.05);
filter: brightness(.55);
}
/* Тёмный градиент снизу — помогает кнопке читаться на светлых превью */
.yt-facade__gradient {
position: absolute;
inset: 0;
background: linear-gradient(to top, rgba(0,0,0,.6) 0%, transparent 50%);
pointer-events: none;
}
/* Кнопка Play — центрирована через flex */
.yt-facade__play {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: none;
border: none;
padding: 0;
cursor: pointer;
}
.yt-facade__icon {
width: 76px;
height: 54px;
filter: drop-shadow(0 3px 12px rgba(0,0,0,.6));
transition: transform .25s ease;
}
.yt-facade:hover .yt-facade__icon {
transform: scale(1.15);
}
/* Подсказка, появляется снизу при наведении */
.yt-facade__hint {
position: absolute;
bottom: 18px;
left: 20px;
color: rgba(255,255,255,.9);
font-size: 13px;
font-family: sans-serif;
opacity: 0;
transform: translateY(8px);
transition: opacity .3s, transform .3s;
pointer-events: none;
}
.yt-facade:hover .yt-facade__hint {
opacity: 1;
transform: translateY(0);
}
/* iframe заменяет всё содержимое после клика */
.yt-facade iframe {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: none;
} JavaScript:
document.querySelectorAll('.yt-facade').forEach(function(el) {
el.addEventListener('click', function() {
var id = el.dataset.id; // ID видео из data-атрибута
var iframe = document.createElement('iframe');
// autoplay=1 — видео стартует сразу после клика, не нужно нажимать Play повторно
// rel=0 — в конце не показываем «похожие видео» с чужих каналов
iframe.src = 'https://www.youtube-nocookie.com/embed/' + id
+ '?autoplay=1&rel=0';
iframe.title = 'YouTube видео';
iframe.allow = 'accelerometer; autoplay; clipboard-write; '
+ 'encrypted-media; gyroscope; picture-in-picture';
iframe.allowFullscreen = true;
el.innerHTML = ''; // убираем превью и кнопку
el.appendChild(iframe); // ставим на их место iframe
});
}); Всего ~18 строк без единой зависимости. Превью YouTube отдаёт сам по известному шаблону i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg — никаких отдельных загрузок. Плеер появляется только по клику, а autoplay=1 запускает видео сразу, чтобы пользователь не нажимал Play дважды.
Если не хочется писать CSS самому — есть готовый веб-компонент lite-youtube-embed от разработчика Google Chrome. Подключите один файл, используйте тег <lite-youtube videoid="VIDEO_ID"> — и получите оптимизированный фасад с хорошим дефолтным стилем.
Итого: как встроить YouTube видео на сайт
Четыре способа на любой случай:
- Базовый iframe — когда нужно быстро и требований нет.
- Адаптивный embed — обязательный минимум для любого адаптивного сайта.
- Приватный режим — хорошая привычка: одно слово в URL, работает так же.
- Параметры плеера — тонкая настройка поведения и внешнего вида плеера.
- Фасад — если важна скорость загрузки или видео на странице несколько.
Оптимальный вариант для большинства случаев — адаптивный embed в приватном режиме, плюс нужные параметры. Если же страница грузится медленно или видео несколько — фасад даст заметный прирост без какого-либо ущерба для пользователя.
Ведёте канал сразу на двух площадках? Посмотрите также статью про вставку видео с Rutube — подходы те же, но есть свои нюансы.