Best YouTube Widgets for Your Website 2026: Complete Guide
TL;DR - Quick Answer
25 min readComprehensive guide with practical insights you can apply today.
Best YouTube Widgets for Your Website
A "YouTube widget" means adding YouTube content to your own site: a single video, a whole channel feed, a playlist, or a subscribe button. Some options are free and native to YouTube, others are paid third-party services that add grids and galleries.
Create content, post everywhere
Create captions, images, and videos with AI. Schedule to 9 platforms in seconds.
Start your free trial
TL;DR
- Fastest real way to embed one video: on the video, click Share > Embed, copy the
<iframe>, paste it into your page's HTML. That code useshttps://www.youtube.com/embed/VIDEO_IDand works on any site. - Want privacy? In the Embed dialog, tick "Enable privacy-enhanced mode" so the iframe uses
www.youtube-nocookie.com, which holds tracking cookies until the viewer presses play. - Whole channel or playlist: embed the Uploads (or any) playlist with
https://www.youtube.com/embed?listType=playlist&list=PLAYLIST_ID. - Subscribe button: still officially supported by Google (docs last revised April 2026). Load
platform.jsand drop in ag-ytsubscribediv. - Grids, sliders, moderation: these are not native. You need a third-party widget (Elfsight, Smash Balloon for WordPress, Taggbox) or the YouTube Data API and your own layout.
Everything below is real, copy-ready code. Verify current third-party pricing on each vendor's own site before buying, since plans change often.
What Is a YouTube Widget?
A YouTube widget is an embeddable element that displays YouTube content on your website. Unlike single video embeds, widgets can:
- Show your entire channel feed
- Display specific playlists
- Update automatically with new uploads
- Match your website's design
- Include subscribe buttons
Common widget types:
- Channel feed (latest uploads)
- Playlist gallery
- Video carousel
- Video grid
- Single featured video with feed
Method 1: YouTube Native Embed (Free)
This is the method most people actually need, and it costs nothing.
Embed a Single Video
Open the video, click Share > Embed, and copy the code. It looks like this:
<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"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen>
</iframe>Replace VIDEO_ID with the 11-character ID from the watch URL (youtube.com/watch?v=VIDEO_ID).
Current Player Parameters That Still Work
Add these to the embed URL after a ?, joined with &. These are confirmed in Google's Embedded Player Parameters reference:
Example combining several:
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/VIDEO_ID?start=30&mute=1&rel=0"
title="YouTube video player" frameborder="0"
allow="autoplay; encrypted-media; picture-in-picture"
allowfullscreen>
</iframe>Privacy-Enhanced Mode (youtube-nocookie.com)
If you care about cookie consent (GDPR/ePrivacy), tick "Enable privacy-enhanced mode" in the Share > Embed dialog, or just swap the domain to www.youtube-nocookie.com. YouTube then holds tracking cookies until the visitor actually clicks play:
<iframe
width="560" height="315"
src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
title="YouTube video player" frameborder="0"
allow="encrypted-media; picture-in-picture"
allowfullscreen>
</iframe>This domain is still current and is Google's own recommended option for reducing pre-play tracking.
Embed a Channel Feed or Playlist
YouTube has no direct "channel grid" widget, but you can embed any playlist, including your auto-created Uploads playlist, so it updates as you post:
- Open the playlist and copy its ID from the URL (
&list=PLAYLIST_ID). - Use the current documented playlist embed format:
<iframe
width="560" height="315"
src="https://www.youtube.com/embed?listType=playlist&list=PLAYLIST_ID"
title="YouTube playlist" frameborder="0"
allowfullscreen>
</iframe>The older youtube.com/embed/videoseries?list=PLAYLIST_ID URL still works, but the listType=playlist form above is the one Google documents today.
Limitation: this shows a playlist player, not a visual grid. For grids and galleries you need Method 2 or 5.
Subscribe Button Widget
The YouTube Subscribe Button is still officially supported. Google's reference guide was last revised in April 2026. Load the script once, then drop in a div:
<div class="g-ytsubscribe" data-channelid="YOUR_CHANNEL_ID" data-layout="default" data-count="default"></div>
<script src="https://apis.google.com/js/platform.js"></script>Supported attributes: data-channelid or data-channel (the channel), data-layout (default or full), data-theme (default or dark), and data-count (default or hidden). Note that the old subscribe/unsubscribe JavaScript events and the data-ytonevent attribute have been deprecated, so you can no longer listen for a subscribe action in code.
What's the main limitation of YouTube's free native embed for displaying a channel?
Method 2: Elfsight YouTube Widget
Best for: Beautiful, customizable widgets without coding
Features
- Video grid, slider, and gallery layouts
- Auto-updates with new uploads
- Customizable colors and fonts
- Lightbox video playback
- Works on any website
Pricing
Elfsight runs a free tier with a monthly view cap plus tiered paid plans (roughly a few dollars a month up to a higher unlimited tier), with limits based on widget count and monthly views. Plans and caps change regularly, so check the current numbers on the Elfsight pricing page before you commit.
Setup
- Go to Elfsight.com
- Select YouTube widget
- Enter your channel URL
- Customize design
- Copy embed code
- Paste on your website
Method 3: Smash Balloon (WordPress)
Best for: WordPress users wanting deep customization
Features
- Multiple layout options
- Display videos, playlists, or live streams
- WooCommerce integration
- SEO-friendly
- Caching for speed
Pricing
Smash Balloon sells its YouTube Feed as an annual license (single-site and multi-site tiers), and also bundles all its social feed plugins in an All Access license. Pricing shifts with sales and renewals, so confirm the current figures on the Smash Balloon site. There is also a free "Feeds for YouTube" plugin in the WordPress directory with a limited feature set.
Setup
- Install Smash Balloon plugin
- Connect YouTube account
- Create feed with shortcode
- Add to pages/posts
[youtube-feed]
Method 4: Taggbox Widget
Best for: Combining multiple video sources
Features
- YouTube + other platforms
- Moderation tools
- Analytics dashboard
- Custom CSS support
- Live streaming support
Pricing
Taggbox (now marketed as Tagembed) offers a limited free tier and several paid monthly plans that scale by widget count, views, and features. Check current tiers on the Taggbox pricing page, since the plan names and prices change often.
Method 5: Custom YouTube API
Best for: Developers wanting full control
Basic Implementation
<div id="youtube-feed"></div>
<script>
const API_KEY = 'YOUR_API_KEY';
const CHANNEL_ID = 'YOUR_CHANNEL_ID';
fetch(`https://www.googleapis.com/youtube/v3/search?key=${API_KEY}&channelId=${CHANNEL_ID}&part=snippet&order=date&maxResults=6`)
.then(response => response.json())
.then(data => {
const container = document.getElementById('youtube-feed');
data.items.forEach(video => {
container.innerHTML += `
<div class="video-item">
<a href="https://youtube.com/watch?v=${video.id.videoId}">
<img src="${video.snippet.thumbnails.medium.url}" alt="${video.snippet.title}">
<h3>${video.snippet.title}</h3>
</a>
</div>
`;
});
});
</script>
<style>
#youtube-feed {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.video-item img {
width: 100%;
border-radius: 8px;
}
</style>Get YouTube API Key
- Go to Google Cloud Console
- Create new project
- Enable YouTube Data API v3
- Create credentials (API key)
- Restrict key to your domain
API quotas: Free tier allows 10,000 units/day. Each search costs 100 units = 100 searches/day max.
You're building a high-traffic website (100,000 visitors/month). Which YouTube widget approach is most reliable?
Platform-Specific Setup
WordPress
Options:
- Smash Balloon (plugin) - Best for WordPress
- Elfsight (HTML embed) - Works anywhere
- YouTube Showcase (free plugin) - Basic grids
Smash Balloon setup:
1. Install "Feeds for YouTube" plugin
2. Connect YouTube account
3. Use shortcode: [youtube-feed]
4. Customize in plugin settings
Wix
- Click Add โ Embed โ Custom Embed
- Select Embed a Widget
- Paste widget code from Elfsight/Taggbox
- Position and resize
Squarespace
- Add Code Block
- Paste widget embed code
- Style with custom CSS if needed
Shopify
- Go to Online Store โ Themes โ Edit Code
- Add widget code to relevant template
- Or use Shopify app (Elfsight YouTube Gallery)
Webflow
- Add Embed element
- Paste widget code
- Set responsive breakpoints
Widget Layouts Compared
Performance Optimization
Lazy Loading
Load widget only when visible:
<div id="youtube-widget" data-src="WIDGET_CODE"></div>
<script>
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.innerHTML = entry.target.dataset.src;
observer.unobserve(entry.target);
}
});
});
observer.observe(document.getElementById('youtube-widget'));
</script>Caching (Custom API)
Cache API responses to avoid quota limits:
// Check cache first
const cached = localStorage.getItem('youtube-feed');
if (cached && Date.now() - JSON.parse(cached).timestamp < 3600000) {
renderVideos(JSON.parse(cached).data);
} else {
fetchYouTubeData().then(data => {
localStorage.setItem('youtube-feed', JSON.stringify({
data: data,
timestamp: Date.now()
}));
renderVideos(data);
});
}Common Issues & Fixes
Widget Not Loading
Causes:
- JavaScript blocked
- Ad blocker interference
- Incorrect channel/playlist ID
Fixes:
- Test in incognito mode
- Verify IDs are correct
- Check browser console for errors
Videos Not Updating
Causes:
- Caching (browser or CDN)
- API quota exceeded
- Widget service delay
Fixes:
- Clear cache
- Check widget service status
- Wait 15-30 minutes for YouTube's API
Slow Page Load
Causes:
- Widget loading synchronously
- Too many videos displayed
- No lazy loading
Fixes:
- Add lazy loading
- Limit videos shown (6-12 max)
- Use async script loading
Your YouTube widget makes your page load 5 seconds slower. What's the best fix?
Widget Selection Checklist
- Budget: Free, one-time, or monthly?
- Platform: WordPress, Wix, custom HTML?
- Layout: Grid, carousel, list?
- Traffic: Low (<10K/mo) or high?
- Updates: Manual or automatic?
- Customization: Basic or advanced?
Quick Comparison
Frequently Asked Questions
What is the fastest way to embed a YouTube video on my website?
Open the video on YouTube, click Share, then Embed, and copy the iframe code it gives you. Paste that code into your page's HTML wherever you want the player. The code uses the https://www.youtube.com/embed/VIDEO_ID format and works on any site that lets you add HTML, including WordPress, Wix, Squarespace, Shopify, and Webflow. No plugin or API key is needed for a single video.
Does YouTube have an official channel widget?
There is no native "channel grid" widget. The old iGoogle-style channel gadget was retired years ago. What YouTube still offers natively is embedding a playlist, including your auto-created Uploads playlist, using https://www.youtube.com/embed?listType=playlist&list=PLAYLIST_ID, plus the Subscribe button. For a true visual grid or gallery of your latest uploads you need a third-party widget such as Elfsight or Smash Balloon, or you build one yourself with the YouTube Data API.
Is the YouTube Subscribe button still supported in 2026?
Yes. Google's Subscribe Button reference was last revised in April 2026 and the widget still works. Load https://apis.google.com/js/platform.js once, then add a div with class g-ytsubscribe and your data-channelid. The only removed feature is the old subscribe and unsubscribe JavaScript events (and the data-ytonevent attribute), so you can no longer detect a subscribe action in code, but the button itself renders and functions normally.
How do I embed a YouTube video without cookies for GDPR?
Use privacy-enhanced mode. In the Share > Embed dialog tick "Enable privacy-enhanced mode," or manually change the iframe domain from www.youtube.com to www.youtube-nocookie.com. That domain is still current and holds tracking cookies until the visitor actually clicks play, which reduces pre-play tracking for cookie-consent purposes. It does not make the embed fully cookie-free once the video plays, so most consent setups still gate the iframe behind a click-to-load placeholder.
Which YouTube embed parameters still work?
The commonly used player parameters are still supported: start (begin at N seconds), end (stop at N seconds), autoplay (needs mute=1 in modern browsers), mute, loop (pair with playlist=VIDEO_ID to loop a single video), controls, and rel. Note that since 2018, rel=0 no longer removes end-screen suggestions entirely; it only limits them to videos from the same channel. Add parameters to the embed URL after a question mark and join multiple with an ampersand.
Do I need the YouTube Data API to show my latest videos?
Only if you want a custom layout that auto-updates. The API v3 free quota is 10,000 units per day, and a search request costs 100 units, so you get about 100 fresh fetches per day unless you cache results. For most sites, caching responses or using a third-party widget service is more reliable than calling the API on every page load, because those services handle the quota and caching for you. If you just want a working player, native embeds need no API key at all.
Related Resources
YouTube Guides:
- Embed YouTube Playlist
- YouTube SEO Checklist
- Benefits of YouTube for Business
- Best Days to Post on YouTube
Social Media Widgets:
Website Tools:
Was this article helpful?
Let us know what you think!