YouTube Unbranded Embed Service
A minimal embedding service that removes YouTube native branding, logos, titles, and related video suggestions. Delivers a clean HTML5 player with custom theme colors.
Endpoints
1. Landing Documentation
GET /
Serves this minimal reference guide.
2. Video Embed Player
GET /embed/:id
Renders the clean unbranded player. The :id parameter accepts:
- Direct 11-char video ID (e.g.
dQw4w9WgXcQ) - Full watch URL (e.g.
https://www.youtube.com/watch?v=dQw4w9WgXcQ) - Shortened URL (e.g.
https://youtu.be/dQw4w9WgXcQ) - Shorts URL (e.g.
https://youtube.com/shorts/dQw4w9WgXcQ)
Also supports query parameter fallback: GET /embed?v=VIDEO_ID
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
color / theme |
string | #ef4444 |
Accent brand color for controls (hex or CSS color) |
controls |
string | all |
Controls preset (all, minimal, none / 0) or comma list |
autoplay |
boolean | 0 |
Automatically starts playback on load (auto-mutes if needed) |
muted / mute |
boolean | 0 |
Starts video muted |
loop |
boolean | 0 |
Replays video continuously |
speed |
number | 1 |
Initial playback speed (e.g. 0.5, 1.25, 1.5, 2) |
start / t |
number | 0 |
Playback start offset in seconds (e.g. 45 or 1m30s) |
radius |
string | 0px |
Container border radius (e.g. 12 or 12px) |
poster |
string | auto | Custom thumbnail image URL |
ratio |
string | 16 / 9 |
Container CSS aspect ratio |
bg |
string | #000000 |
Canvas background color |
Framing, CORS & Caching
The service sends only the necessary headers to allow embedding while maintaining simple edge caching:
Content-Security-Policy: frame-ancestors *Access-Control-Allow-Origin: *Access-Control-Allow-Methods: GET, HEAD, OPTIONSCross-Origin-Resource-Policy: cross-originX-Frame-Optionsis omittedCache-Control: public, max-age=0, s-maxage=31536000, must-revalidate(1 year CDN cache, 0s browser cache for instant busting)
Quick Embed Example
<iframe
src="/embed/LXb3EKWsInQ?color=%233b82f6&radius=8"
width="100%"
height="400"
style="border: none; aspect-ratio: 16 / 9;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>