



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









「YouTubeの動画をサイトに貼り付けたいけれど、スマホで見るとはみ出してしまう」「iframeをコピペしたのに表示されない」「autoplayが効かない」——Web制作を始めたばかりのころ、こうした悩みにぶつかった経験は誰にでもあるはずです。
YouTubeの埋め込みは仕組みを理解すれば決して難しくありません。HTMLのiframeタグを使う基本構文から、レスポンシブ対応・自動再生・遅延読み込みによる速度改善・プライバシー強化モードまで、この記事で一気にカバーします。
コピペで動くコード例を豊富に掲載しているので、初心者でもすぐに実装できます。2026年時点の最新仕様に対応した完全ガイドとして、ぜひブックマークしておいてください。
まずはYouTubeが提供する埋め込みコードの取得手順を確認しましょう。手順はシンプルです。
コピーされるコードは次のような形式です。
<iframe width="560" height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>VIDEO_ID の部分には各動画固有の11文字のIDが入ります。これをHTMLファイルに貼り付けるだけで動画を表示できます。ただしこのままではwidth/heightが固定ピクセルになるため、スマートフォンで見るとはみ出してしまいます。レスポンシブ対応については後のセクションで詳しく解説します。
YouTubeが生成するiframeには複数の属性が含まれています。それぞれの意味を把握しておくと、カスタマイズの際に迷いません。
https://www.youtube.com/embed/VIDEO_ID の形式"0" が推奨。HTML5では非推奨属性だが後方互換として残っているautoplay・fullscreen などを列挙するallow 属性に autoplay が含まれていないと、URLパラメータで自動再生を指定しても動作しません。後述の自動再生設定と合わせて確認してください。
HTMLファイルへの埋め込みは、取得したiframeコードをそのまま貼るだけです。以下はHTMLページへの基本的な実装例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>YouTube埋め込みサンプル</title>
</head>
<body>
<h1>動画サンプル</h1>
<iframe width="560" height="315"
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>
</body>
</html>このコードで動画は表示されますが、幅が 560px 固定です。スマートフォンの画面幅より広くなるとはみ出すため、必ずレスポンシブ対応を行いましょう。
YouTubeのiframeをレスポンシブにする方法は大きく2つあります。旧来のpadding-top方式と、新しいaspect-ratioプロパティです。ブラウザのサポート状況や保守運用の方針に合わせて選択してください。
16:9のアスペクト比を保ちながらレスポンシブにする古典的な手法です。親要素に padding-top: 56.25%(9÷16×100)を設定し、iframeをabsolute配置することで比率を保ちます。IE11を含む古いブラウザでも動作します。
<div class="video-wrap">
<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-wrap {
position: relative;
width: 100%;
max-width: 800px; /* 最大幅を指定。お好みで変更 */
margin: 0 auto; /* 中央揃え */
padding-top: 56.25%; /* 16:9 = 9/16 × 100 */
}
.video-wrap iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}max-width を設定することで、広大なデスクトップ画面でも動画が巨大になりすぎるのを防げます。margin: 0 auto と組み合わせて中央寄せにするのが定番の運用です。
CSS の aspect-ratio プロパティを使うと、コードが大幅にシンプルになります。2021年以降のモダンブラウザ(Chrome・Firefox・Safari・Edge最新版)では問題なく使えます。IE11は非対応のため、IE対応が必要なプロジェクトでは方法①を選んでください。
<div class="video-wrap">
<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-wrap {
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.video-wrap iframe {
width: 100%;
aspect-ratio: 16 / 9;
border: none;
display: block;
}position: relative / absolute が不要になり、CSSの見通しが格段に良くなります。新規プロジェクトでIEを切り捨てられる場合は、こちらを採用するのがおすすめです。
YouTubeのsrc URLにパラメータを追加すると、動画の再生挙動を細かく制御できます。パラメータは ? で始め、複数指定するときは & でつなぎます。
playlist=VIDEO_ID の同時指定が必要(後述)start=30 で30秒から再生自動再生を有効にするには autoplay=1 と mute=1 の両方を指定し、allow 属性に autoplay が含まれていることを確認します。
<div class="video-wrap">
<iframe
src="https://www.youtube.com/embed/VIDEO_ID?autoplay=1&mute=1"
title="自動再生サンプル"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
</div>URLの & はHTMLの属性値内では & と書くのが正式ですが、現代のブラウザは & のままでも動作します。厳密なHTMLバリデーションが必要な場合は & を使ってください。
ループ再生には loop=1 に加え、playlist=VIDEO_ID で同じ動画IDを指定する必要があります。これはYouTube APIの仕様上の制限です。
<iframe
src="https://www.youtube.com/embed/VIDEO_ID?loop=1&playlist=VIDEO_ID&mute=1&autoplay=1"
title="ループ再生サンプル"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>ヒーローセクションの背景動画として活用するケースが多いです。その場合は controls=0 も合わせて指定し、コントロールバーを非表示にすることが多いです。
動画の特定シーンから再生させたい場合は start パラメータを使います。
<iframe
src="https://www.youtube.com/embed/VIDEO_ID?start=120"
title="2分から再生するサンプル"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>YouTube共有URLの &t=2m0s 形式とは異なり、埋め込みURLでは秒数のみの整数で指定します(start=120 で2分)。
YouTubeのプレイリスト全体を埋め込むには、srcに videoseries を使います。プレイリストIDは YouTube のURL中の list= 以降の文字列です。
<div class="video-wrap">
<iframe
src="https://www.youtube.com/embed/videoseries?list=PLAYLIST_ID"
title="プレイリストサンプル"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
</div>プレイリストを埋め込むと、iframeの右上にプレイリストのパネルが表示され、ユーザーが次の動画を選択できます。最初の動画から順番に自動で流す場合は autoplay=1&mute=1 を追加します。
YouTubeのiframeは読み込みコストが高く、ページ内に複数埋め込むとCore Web Vitalsのスコア(特にLCP・TBT)が大幅に低下します。速度改善のテクニックを2つ紹介します。
iframeに loading="lazy" を追加するだけで、ビューポート外のiframeの読み込みを遅延できます。実装コストがほぼゼロの割に効果が大きいため、常に指定することを推奨します。
<div class="video-wrap">
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
title="遅延読み込みサンプル"
frameborder="0"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
</div>さらに踏み込んだ最適化として、初期表示はサムネイル画像のみを表示し、クリック時にはじめてiframeを生成する手法があります。「Lite YouTube Embed」と呼ばれる手法で、Googleのエンジニアが提唱しました。JavaScriptで実装します。
<!-- サムネイルをクリックで動画を読み込む軽量実装 -->
<div class="lite-youtube" data-videoid="VIDEO_ID" style="max-width:800px;margin:0 auto;">
<img
src="https://i.ytimg.com/vi/VIDEO_ID/hqdefault.jpg"
alt="動画のサムネイル"
loading="lazy"
width="480"
height="360"
style="width:100%;aspect-ratio:16/9;object-fit:cover;cursor:pointer;"
onclick="this.parentElement.innerHTML='<iframe src=\'https://www.youtube.com/embed/VIDEO_ID?autoplay=1\' title=\'動画\' frameborder=\'0\' allow=\'autoplay;encrypted-media\' allowfullscreen style=\'width:100%;aspect-ratio:16/9;border:none;\'><\/iframe>'"
>
</div>サムネイル画像のURLは https://i.ytimg.com/vi/VIDEO_ID/hqdefault.jpg で取得できます。高解像度版(maxresdefault.jpg)が存在する場合はそちらを使うと綺麗です。この手法はiframeを最初から読み込まないため、PageSpeed Insightsのスコアが劇的に向上します。本格的な実装には lite-youtube-embed(npmパッケージ)の利用も検討してください。
YouTubeはプライバシーに配慮した埋め込みドメインとして www.youtube-nocookie.com を提供しています。このドメインを使うと、ユーザーが動画を再生するまでGoogleがクッキーを設定しないという仕様になります。GDPRや個人情報保護を重視するサイトで採用が増えています。
<div class="video-wrap">
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
title="プライバシー強化モードのサンプル"
frameborder="0"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
</div>通常の www.youtube.com と www.youtube-nocookie.com のドメイン部分を置き換えるだけで有効化できます。動画の機能・画質・表示には影響しません。欧州のユーザーを対象にしたサイトや、プライバシーポリシーを厳格に運用するコーポレートサイトでは積極的に採用を検討してください。
WordPressではYouTubeのURLを段落ブロックに貼り付けるだけで、自動的に動画が埋め込まれます。これはWordPressのoEmbed機能によるもので、内部的にiframeに変換されます。手軽なため、ブログ記事などでは最もよく使われる方法です。
WordPressのブロックエディター(Gutenberg)には「YouTubeブロック」も用意されています。URLを入力するだけで埋め込めます。ただし、URLパラメータによるカスタマイズや細かいCSS制御が必要な場合は、カスタムHTMLブロックに直接iframeを書いた方が自由度が高いです。
SWELLなどのテーマには動画をラップするCSSが組み込まれていることがあります。既存のレスポンシブスタイルと競合しないよう、デベロッパーツールで適用中のCSSを確認してから実装してください。
iframeに width="560" などのピクセル値がそのまま残っていることが原因です。前述のCSSを適用してレスポンシブ化すれば解消します。また、親要素に overflow: hidden を設定していて位置がズレる場合は、ラッパーのpositionを確認してください。
考えられる原因は複数あります。
ブラウザのデベロッパーツール(F12)のコンソールタブでエラーメッセージを確認することで原因を特定できます。
iframeはインライン要素として扱われるため、下部に謎の余白が生まれることがあります。display: block を指定することで解消します。
iframe {
display: block;
}YouTubeが提供する埋め込み機能(iframe)を使う限り、動画のオーナーが埋め込みを許可している動画に関しては問題ありません。YouTubeの利用規約でも、埋め込み機能はサービスの一部として提供されており、第三者サイトへの埋め込みは許容されています。ただし、動画をダウンロードして自サーバーにアップロードする行為は著作権侵害となります。また、他者の著作権で保護されたコンテンツが含まれる動画の埋め込みは、元の動画のライセンス状況に依存します。商業目的の使用については、必要に応じて動画オーナーへの確認を行ってください。
モダンブラウザはユーザー体験を守るため、音声付き動画の自動再生を原則としてブロックしています。自動再生を機能させるには autoplay=1 と mute=1 の両方を指定する必要があります。さらに、iframeの allow 属性に autoplay が含まれていることも確認してください。これらをすべて満たしても、ブラウザの設定によってはブロックされるケースもあります。ヒーロー背景動画などで確実に自動再生したい場合は、ミュートを前提とした設計にしてください。
iframeにwidth/heightのピクセル値を直書きするのをやめ、CSSで制御するのが基本です。aspect-ratio: 16 / 9 と width: 100% を組み合わせた新しい方法がシンプルでおすすめです。古いブラウザとの互換性が必要な場合は、ラッパーに padding-top: 56.25% を設定してiframeをabsolute配置する方法を使ってください。どちらの方法も本記事のコード例をそのままコピーして使えます。
YouTubeのiframeは1本あたり多くのリソースを読み込むため、複数埋め込むとページが重くなります。有効な対策は2つです。まず loading="lazy" 属性を全iframeに追加し、画面外の動画を遅延読み込みにします。さらに効果的なのが、サムネイル画像を表示してクリック時にiframeを生成する「軽量化テク」です。これにより初期ページ読み込み時にYouTubeのリソースをまったく読み込まずに済み、PageSpeed InsightsやCore Web Vitalsのスコアが大幅に改善します。
www.youtube-nocookie.com ドメインを使った埋め込みがプライバシー強化モードです。通常の www.youtube.com では、ページを読み込んだ時点でGoogleのトラッキングクッキーが設定される場合があります。プライバシー強化モードではユーザーが実際に動画を再生するまでクッキーを設定しないため、GDPRなどのプライバシー規制への対応が容易になります。動画の表示品質や機能に違いはなく、ドメイン名を変えるだけで有効化できます。
この記事では、HTMLでYouTube動画を埋め込む方法を基本から応用まで網羅的に解説しました。iframeのコードを取得してHTMLに貼る基本手順から、スマートフォンでも崩れないレスポンシブ対応、URLパラメータによる自動再生・ループ・開始時間の制御、ページ速度を守る遅延読み込みテク、プライバシー強化モードまで、実際のコードを使って説明しています。
各テクニックのポイントをまとめます。
aspect-ratio: 16 / 9(モダン)か padding-top: 56.25%(互換性重視)を使うautoplay=1 と mute=1 の両方が必須。ミュートなしは現代のブラウザでは動作しないloop=1&playlist=VIDEO_ID で同じIDを playlist にも指定するloading="lazy" は全iframeに必ず追加してページ速度を守るyoutube-nocookie.com を採用する基本の1行から始めて、必要に応じてレスポンシブ・パラメータ・速度最適化を重ねていくのがスムーズな実装の進め方です。各コード例はそのままコピーペーストで動作するよう設計していますので、ぜひ実際のプロジェクトで活用してください。

副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?
未経験でも心配することはありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!
WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。
公式サイト より
今すぐ
無料カウンセリング
を予約!