YouTube-embed-checker
Inleiding
De Toollect YouTube-embedchecker beantwoordt een vraag die elke keer opkomt wanneer iemand video aan een website toevoegt: wordt deze video hier, op mijn pagina, echt afgespeeld? Plak een link en de tool controleert de video tegen twee openbare, sleutelloze YouTube-oppervlakken – het oEmbed-eindpunt en de ingebedde player – en vertelt je dan of de video inbedbaar, afspeelbaar, verwijderd of beperkt is. Geen account, geen API-sleutel en geen upload.
De valkuil die hij wegneemt is bekend. Je kopieert een embedcode, zet hem op je pagina en ontdekt later dat de video een grijze player, een "Video niet beschikbaar"-melding of een "Bekijk op YouTube"-aanwijzing toont omdat de eigenaar inbedden heeft uitgeschakeld. Tegen de tijd dat de embed live is, is dat een supportvraag. Eerst controleren verandert dezelfde taak in een stap van twee seconden.
De controle draait volledig in jouw browser. De URL wordt lokaal geparsed, de inbedstatus wordt gelezen van YouTube's openbare oEmbed-eindpunt en er laadt een live embed op de pagina, gepauzeerd op het eerste frame – nooit automatisch afgespeeld, nooit gedempt voor jou. Er wordt niets geüpload, opgeslagen of bijgehouden. Het resultaat verschijnt naast de titel, het kanaal en de duur van de video, die het embed zelf teruggeeft – geen aparte pagina, geen scraper, geen dienst van derden.
Hoe het werkt
De tool splitst de vraag "kan dit worden ingebed en afgespeeld" op in drie onafhankelijke controles. Elk gebruikt een openbaar, sleutelloos oppervlak van YouTube, en alle drie draaien lokaal in jouw browser.
- Video-ID-extractie – de URL wordt geparsed met hetzelfde patroon dat YouTube zelf gebruikt, waarmee watch-links, youtu.be, Shorts, embed- en live-URL's plus een kale ID van 11 tekens worden herkend.
- Inbedcontrole – de tool vraagt het oEmbed-eindpunt van YouTube op voor de video. Een inbedbare video geeft een klein JSON-object terug; een video waarvan de eigenaar inbedden verbiedt, geeft een fout terug. Dit is hetzelfde eindpunt dat diensten gebruiken om automatisch kaarten te genereren.
- Playercheck – de tool laadt de ingebedde player, gepauzeerd op het eerste frame, en luistert naar zijn status. Als de video is verwijderd of beperkt, vuurt de player een foutcode af; als hij schoon laadt, komen titel, kanaal en duur terug van de player zelf, en bevestigt het indrukken van play het afspelen live in hetzelfde frame.
Geen van deze stappen vereist de officiële YouTube Data API. Het player-JavaScript laadt op aanvraag, verbruikt geen quotum en draait volledig in jouw browser – jouw geplakte link bereikt nooit een server die door deze site wordt beheerd.
De twee openbare oppervlakken in detail
Het oEmbed-eindpunt is een openbare, sleutelloze API van YouTube. Eén enkele aanvraag zoals https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ&format=json geeft je de titel van de video, de kanaalnaam en de URL van de thumbnail – of een duidelijke weigering als de video niet kan worden ingebed. Omdat het een lichtgewicht statuscontrole is, antwoordt het in één enkele round trip.
Het playeroppervlak is hetzelfde dat je gebruikt wanneer je een iframe plakt: YouTube laadt een kleine IFrame-player op de pagina, en de statuscodes van de player vertellen de rest van het verhaal. Een player die zijn eerste frame bereikt zonder foutcode is het bewijs dat de embed de video heeft geaccepteerd, terwijl een player die een fout afvuurt de reden noemt – niet gevonden, verwijderd of beperkt voor inbedding. Het voorbeeld blijft gepauzeerd op dat eerste frame, precies zoals een normale embed: niets speelt automatisch en het volume is wat jij hebt ingesteld.
Gebruikssituaties
Naast het voor de hand liggende – "is deze link veilig om te plakken?" – past de tool in echte workflows.
Web- en app-ontwikkeling
Ontwikkelaars die YouTube-video's inbedden in dashboards, landingspagina's of apps zien vaak een dag na de lancering kapotte embeds. Een pre-flight-controle toevoegen tijdens contentimport – sitemapgeneratie, CMS-import of video-aanbeveling – vangt niet-inbedbare en verwijderde video's op voordat ze gebruikers bereiken. Dezelfde oEmbed-controle is bovendien makkelijk te hergebruiken als one-liner in een buildscript.
Contentproductie en marketing
Redacteuren die promotiepagina's, nieuwsbrieven of knowledge base-artikelen samenstellen, willen veel video's linken zonder elke embed te bewaken. Een snelle reeks controles van de tool, één URL per keer, markeert de video's die als kapotte placeholders zouden renderen, zodat de lijst schoon wordt gepubliceerd.
Onderzoek en archieftriage
Journalisten, archivarissen en onderzoekers die de beschikbaarheid van een video in de tijd volgen, kunnen de controle opnieuw uitvoeren en het resultaat archiveren. Het patroon "was inbedbaar, nu fout 100" is een vroeg signaal dat de video is verwijderd – op zichzelf al een nuttig feit.
Resultaten en foutcodes
Elk resultaat dat de tool toont is het antwoord van de player zelf, vertaald. Het resultaat dat je leest en de foutcode eronder komen uit dezelfde bron, dus de twee lagen spreken elkaar nooit tegen.
De resultaten:
| Resultaat | Wat het betekent | Typische oorzaak |
|---|---|---|
| Afspeelbaar | De embed is geaccepteerd en heeft zijn eerste frame bereikt | Een gezonde, inbedbare upload |
| Niet inbedbaar | De eigenaar verbiedt inbedden | Fout 101 of 150 van de player |
| Video niet gevonden | De player kan de video niet laden | Verwijderd of privé gemaakt, fout 100 |
| Video niet beschikbaar | De player heeft de aanvraag geweigerd | Een verouderde of verkeerde link, of een algemene playerfout |
| Time-out | Geen reactie van de player binnen het wachtvenster | Een geblokkeerd script of een netwerkprobleem |
De foutcodes:
| Code | Betekenis | Wat het je vertelt |
|---|---|---|
| 100 | Video niet gevonden | De video is verwijderd of privé gemaakt, of de ID is geldig maar de player kan hem niet laden |
| 101 | Inbedden niet toegestaan | De eigenaar heeft inbedden voor deze video uitgeschakeld |
| 150 | Inbedden niet toegestaan | Dezelfde beperking, op sommige oppervlakken gemeld als 150 |
| 2 | Ongeldige aanvraag | De video is niet beschikbaar voor de player, meestal een verouderde of verkeerde videolink |
| 5 | Player maken mislukt | Een algemene HTML5-playerfout, soms een teken van een afspeelfout buiten de embed |
Codes 101 en 150 leiden naar hetzelfde resultaat, Niet inbedbaar – "de eigenaar staat inbedden niet toe". Een 100 betekent dat de video niet meer openbaar beschikbaar is en leidt naar Video niet gevonden. Codes 2 en 5 leiden allebei naar Video niet beschikbaar. En een player die stil blijft na het wachtvenster leidt naar Time-out – het resultaat dat je ziet wanneer een script of een netwerkregel de player zelf blokkeert. Dit zijn de antwoorden die je het vaakst tegenkomt bij het controleren van een embedgalerij.
Wat het kan detecteren en wat niet
Eerlijk zijn over de grenzen is een deel van wat deze tool nuttig maakt. De tabel toont wat de embed-pipeline onthult en waar hij over zwijgt.
| Vraag | Kan de tool dit detecteren? |
|---|---|
| Inbedbaar (eigenaar stond inbedden toe) | Ja, via de oEmbed-controle |
| Speelt na inbedding echt af | Ja – druk op play in het voorbeeld en de tool bevestigt het afspelen |
| Video verwijderd of privé gemaakt | Ja, fout 100 |
| Leeftijdsbeperkte video's | Meestal – de player probeert het opnieuw met een toestemmingsstap in sommige regio's |
| Regionale (land)beperkingen | Alleen de regio waar jij bent, en alleen voor het player-API-oppervlak |
| Landen waar de video beschikbaar is | Nee |
| Weergaven, likes, reacties | Nee |
| Tags, licentie, uploaddatum | Nee |
| Beschikbaarheid van ondertitels | Nee |
| Standaard audio-/videotaal | Nee |
Elke vraag die het kernresultaat beslist – de inbedcontrole, het afspeelbewijs, het verwijderd-of-privé-signaal – wordt volledig beantwoord zonder sleutel. De verrijkingslaag – weergaveaantallen, regiolijsten, tags, ondertitels, uploaddata – is een ander verhaal, behandeld in "Vergeleken met de officiële API".
Gebruik
De workflow is een interactieve twee-velden-opstelling:
- Plak een YouTube-link – uit de adresbalk, het deelmenu of het embedblad van de video.
- Druk op Enter of klik op de knop Controleren.
- Lees het resultaat – een badge beschrijft de uitkomst als Afspeelbaar, Niet inbedbaar, Video niet gevonden, Video niet beschikbaar of Time-out.
- Lees de details – het playerpaneel vermeldt titel, kanaal, duur en ID van de video onder de badge; de drie controle-regels eronder leggen uit hoe elke check is verlopen.
Plakken alleen start de controle niet; die draait pas wanneer je op Controleren of Enter drukt. Dat houdt de tool voorspelbaar – het bewerken van het veld gooit nooit zomaar een resultaat weg dat je bekijkt. Als de invoer geen geldige YouTube-URL is, verschijnt er een fout en wordt het veld leeggemaakt.
Ondersteunde linkformaten
De invoer accepteert dezelfde formaten die YouTube zelf gebruikt – plak een van deze:
| Formaat | Voorbeeld |
|---|---|
| Standaard watch | youtube.com/watch?v=VIDEO_ID |
| Korte link | youtu.be/VIDEO_ID |
| Shorts | youtube.com/shorts/VIDEO_ID |
| Ingebed | youtube.com/embed/VIDEO_ID |
| Live | youtube.com/live/VIDEO_ID |
| Legacy videopad | youtube.com/v/VIDEO_ID |
| Kale ID | VIDEO_ID (11 tekens) |
Extra parameters zoals afspeellijsten en tijdstempels worden automatisch genegeerd.
Stap voor stap
Doorloop één video van link tot resultaat.
Stap 1 – Haal een link op. Open een willekeurige YouTube-video en kopieer de URL, bijvoorbeeld https://www.youtube.com/watch?v=dQw4w9WgXcQ.
Stap 2 – Plak en controleer. Klik op het invoerveld, plak (Ctrl+V of Cmd+V) en druk op Enter. De badge schakelt naar Bezig met controleren….
Stap 3 – Lees de badge. Binnen ongeveer twee seconden verschijnt een resultaat. Bij een gewone inbedbare upload staat er Afspeelbaar, gesteund door de controle-regels.
Stap 4 – Vergelijk met een beperkte video. Plak nu een link naar een muziekvideo die het label aan inbedding onttrekt – de meeste clips van grote labels zijn geblokkeerd. Het resultaat luidt Niet inbedbaar en de foutregel toont 101. Dit is precies de fout die zich herhaalt als een lege grijze box wanneer je de embedcode handmatig plakt.
Stap 5 – Bekijk het bewijs. De controle-regels komen overeen met de badge: de embedregel toont Geblokkeerd en de afspeelregel toont geen bevestiging omdat de player faalde voordat je op play kon drukken. Die combinatie – embed geweigerd, geen afspelen – is precies het "geen embedpaneel"-signaal dat je op YouTube's eigen pagina voor zo'n video zou zien.
Dat is de volledige kringloop: plakken, controleren, badge lezen – en als het resultaat niet klopt met een echte embed, gebruik dan de controle-regels om te begrijpen waarom.
Tips
- Plak een kale video-ID. De invoer accepteert een ID van 11 tekens op zichzelf, zonder URL – handig wanneer je werkt vanuit een API-antwoord, een database-export of een verkorte link die alleen de ID prijsgeeft.
- Controleer opnieuw met Enter. Het bewerken van de link in het veld wist nooit het huidige resultaat; druk op Enter wanneer je de URL hebt die je echt wilt.
- Automatiseer de embedpoort. Als je pagina's uit feeds genereert, kun je dezelfde oEmbed-controle die de tool gebruikt met curl opvragen (
https://www.youtube.com/oembed?url=…&format=json) en een niet-200-status behandelen als "wijs deze video af" in je pipeline. - Test regio-gevoelige content vanuit de doelregio. Als je publiek in een specifiek land zit, voer de controle dan uit verbonden met dat netwerk; de player weerspiegelt de regio waaraan hij wordt geleverd.
- Behandel
fout 100als een veranderingssignaal. Een video die prima controleerde en plotseling 100 meldt, is hoogstwaarschijnlijk verwijderd of privé gemaakt. Als je een register van ingebedde video's bijhoudt, controleer ze dan periodiek opnieuw – de statuswissel is de moeite waard om te weten voordat een bezoeker op de grijze player stuit.
Bed de video zelf in
Een Afspeelbaar-resultaat is het groene licht om exact de embed te gebruiken die de tool heeft gecontroleerd:
<div style="aspect-ratio: 16 / 9;">
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
width="100%"
height="100%"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy"
></iframe>
</div>
- Geef de voorkeur aan het
nocookie-domein.youtube-nocookie.comlevert dezelfde player zonder de niet-essentiële cookies van YouTube – de privacyvriendelijke standaardkeuze voor de meeste sites. loading="lazy"zit al in het snippet. Het stelt de embed uit totdat de video in beeld scrollt; verwijder het voor een hero boven de vouw waarvan het laden ertoe doet.- Let op je Content-Security-Policy. Als je site een CSP uitlevert, voeg dan
frame-src https://www.youtube-nocookie.comtoe (ofhttps://www.youtube.comals je het gewone domein houdt), anders wordt de embed geblokkeerd voordat hij laadt.
Alternatieven
Hoe komen ontwikkelaars er normaal achter dat een embed kapot is? De tabel vult de opties aan.
| Methode | Wat het je vertelt | Sleutel nodig | Afspeelbewijs |
|---|---|---|---|
| Embed plakken, pagina verversen | De kapotte placeholder, achteraf | Nee | Indirect zodra de pagina draait |
| oEmbed-one-liner | Alleen de inbedstatus, geen foutcode | Nee | Nee |
| Officiële Data API | Alles, met op quotum gebaseerde kosten en serversleutel | Ja | Nee |
| Deze tool | Resultaat + foutcode + live embed dat je kunt afspelen | Geen | Ja – druk op play in het voorbeeld |
De officiële Data API is het meest compleet, maar vereist een sleutel, draait server-side om blootstelling te voorkomen en kost quotum per aanvraag. Een eenvoudige inbedcontrole met alleen code geeft je de playermeldingen of het afspeelbewijs niet. Een rauw iframe plakken vertelt je pas na de uitrol wat deze tool onmiddellijk vóór publicatie toont.
Vergeleken met de officiële API
De onderstaande tabel vergelijkt de twee eerlijke wegen voor dezelfde vraag: de officiële YouTube Data API (een server, een sleutel, een quotum) versus deze tool (alleen de browser, geen sleutel, geen server). De vergelijking is waarom "geen sleutel" een functie is en geen beperking – de ruil zit op de kolommen die voor embeds tellen.
| Mogelijkheid | Officiële Data API | Deze tool |
|---|---|---|
| Inbedbaarheidstatus | via status.embeddable |
oEmbed + playercode |
| Afspeelbewijs | Indirect (alleen metadata) | Direct – druk op play in het voorbeeld |
| Betekenis van foutcodes | Rauwe code, zonder uitleg | Vertaald naar een resultaat |
| Regio-/landenlijst | contentDetails.regionRestriction |
Alleen de regio waar jij bent |
| Weergaven, likes, reacties | statistics |
Niet beschikbaar |
| Tags | snippet.tags |
Niet beschikbaar |
| Licentie | status.license |
Niet beschikbaar |
| Leeftijdsbeperking | contentDetails.contentRating |
Impliciet via de player, niet exact |
| Uploaddatum | snippet.publishedAt |
Niet beschikbaar |
| Benodigde gegevens | API-sleutel + serverproxy | Geen – 100% browser |
De twee oppervlakken overlappen precies op de metriek die een embed beslist: wordt het afgespeeld in een pagina? De officiële API wint op alles wat telt voor analyse – metadata, statistieken, regiolijsten. De tool wint op het definitieve antwoord: een live embed dat in de browser laadt, gepauzeerd op het eerste frame, waar je op play kunt drukken en zelf kunt kijken.
Problemen oplossen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Het antwoord blijft op "Bezig met controleren…" | De player- of oEmbed-aanroep is geblokkeerd (adblocker, lokaal netwerk) | Sta het playerscript toe voor youtube.com of probeer de controle opnieuw |
| De embed blijft op het eerste frame staan | Dat is bewust – het voorbeeld speelt nooit automatisch en laadt de stream niet vooraf | Druk op play; een gepauzeerde embed met een beschikbaar geluidsicoon is een gezonde embed |
| Het resultaat zegt "Niet inbedbaar" maar de videopagina speelt prima | De eigenaar staat embeds niet toe; afspelen op de site verschilt van inbedden | Bevestig het: open Delen ▸ Inbedden op de videopagina – daar verschijnt de weigering ook |
| Het resultaat zegt "Video niet gevonden" | Video verwijderd, privé vermeld of regionaal op de witte lijst | Controleer eerst of de video in je eigen browser afspeelt |
| Invoer wordt niet geaccepteerd | De URL is helemaal geen YouTube-formaat | Gebruik een link van de watchpagina of het deelmenu |
Privacy en gegevensverwerking
De tool volgt hetzelfde privacymodel als de andere Toollect-tools: alles draait lokaal.
- Er wordt niets geüpload. De URL wordt in jouw browser geparsed. Geen enkele aanvraag die hem bevat, wordt naar een server gestuurd die jij niet beheert.
- Geen account, geen tracking. Er is geen login, geen analytics en geen geschiedenis van de video's die je controleert.
- Alleen playerverkeer. De enige netwerkaanvragen zijn die van de player zelf – dezelfde aanvragen die elke website doet wanneer hij een video inbedt. Er wordt niets opgeslagen, vastgelegd of bewaard.
- Geen video wordt vooraf opgehaald. Het voorbeeld pauzeert op het eerste frame met een normale playknop; de stream begint pas te laden wanneer je op play drukt, net als bij elke embed, en er wordt niets opgeslagen.
Als je privacybewust bent over welke video's je inspecteert: deze pagina gedraagt zich precies als het bekijken van een normale videopagina in je browser – je link gaat nergens heen behalve naar je eigen player.
Technische specificaties
Details:
- Inbedcontrole:
https://www.youtube.com/oembed?url={watch_url}&format=json– HTTP 200 = inbedbaar, niet-200 = beperkt - Player: YouTube IFrame Player API, op aanvraag geladen als
playsinline-embed, gepauzeerd op het eerste frame (geen gedwongen autoplay, geen gedempt geluid) - Resultaatbronnen: oEmbed-status, playerfoutcodes (2, 5, 100, 101, 150) en live afspeelgebeurtenissen wanneer je op play drukt
- Metadata: titel, kanaal, duur en video-ID, teruggegeven door de player zelf
- Verwerking: 100% client-side JavaScript zonder API-sleutel, zonder uploads, zonder server
- Browserondersteuning: alle moderne browsers met Promise- en ES5-niveau-ondersteuning (Chrome, Edge, Firefox, Safari)
Functies
- Directe controle van de inbedbaarheid voor elke YouTube-link die je plakt
- Live inbed-voorbeeld, gepauzeerd op het eerste frame, met bevestiging van afspelen op het moment dat je op play drukt
- Resultaten op basis van de foutcodes van YouTube's eigen player, met uitleg in gewone taal
- Titel, kanaal en duur getoond zonder een aparte pagina te openen
- 100% verwerking in de browser zonder gegevensverzending, geen API-sleutel nodig
- Accepteert watch-, Shorts-, embed-, live- en youtu.be-links plus kale video-ID's