YouTube Video ID Extractor – Clean Up a Messy Pile of Links
A YouTube video ID is the short string that identifies one video — dQw4w9WgXcQ in youtube.com/watch?v=dQw4w9WgXcQ. Getting it out of a single link is easy. Getting it out of two hundred links that arrived as a spreadsheet column, a chat export and a paragraph somebody wrote by hand is the job this YouTube ID extractor exists for. Paste whatever you have, and the tool returns a clean, de-duplicated table of every ID it found, classified and ready to copy. Everything happens in your browser: no upload, no API key, and no fetch request of any kind.
Every address shape, and the ones that carry two things
The same video reaches you in a dozen shapes depending on where it was copied from: youtu.be/ID from a phone, /shorts/ID from the Shorts feed, /live/ID from a premiere, /embed/ID from a page you were reading, and /v/ID from an old blog post. Mobile and music subdomains, the youtube-nocookie.com host, addresses with no https:// in front and addresses shouted in capitals all read correctly, because the host, the scheme and the path keyword are compared case-insensitively while the ID never is.
The case worth calling out is the one people share most: watch?v=ID&list=PL…&index=3. That single address carries a video and a playlist, and an extractor that returns one string per line quietly loses half of it. Here it produces two rows — one video, one playlist — from the one source line.
De-duplication you can actually check
Turn on Remove duplicates and the first occurrence of each ID is kept. The repeats are not deleted: they stay in place, dimmed, labelled duplicate → row 1, so you can see exactly what was dropped and satisfy yourself that it really was the same video. That matters because the three links youtu.be/ID, /shorts/ID and watch?v=ID look nothing alike but point at one video, while dQw4w9WgXcQ and dqw4w9wgxcq look almost identical and are two different IDs. Nothing here changes the case of an ID for exactly that reason.
video, playlist, channel, handle, duplicate or unrecognised, and never “valid” or “working”.What each classification means
A video ID is exactly 11 characters from the base64url alphabet — A–Z, a–z, 0–9, - and _. A ten- or twelve-character token is reported as unrecognised rather than padded or trimmed to fit. A channel ID begins UC and is 24 characters long. Those two shapes are stable and are asserted here.
Playlist IDs are treated more cautiously: YouTube has never published their length or the full set of family prefixes, and both have changed over time, so a value in a list= parameter is accepted on a deliberately loose rule and an unfamiliar prefix is passed through with a note instead of being rejected. A handle such as @example is not an ID at all — it is a chosen name that its owner can change, and turning one into a UC… channel ID requires asking YouTube. The tool extracts and labels handles, and says so rather than pretending to convert them. Legacy /c/ and /user/ addresses carry custom names for the same reason and are reported as unrecognised with an explanation.
Seeing what you pasted
A list of eleven-character strings tells you nothing about which videos you are holding. The thumbnail grid does: each video ID gets a tile drawn from YouTube's image host through a plain image tag — no API, no key, no rate limit — and a tile that fails to load falls back to a placeholder carrying the ID rather than a broken-image icon. hqdefault.jpg is the default because it is generated for every video; maxresdefault.jpg is offered in the thumbnail output format, where many videos have no file at that address.
Getting the results out
Choose the shape you need — bare IDs, canonical watch?v=URLs, youtu.be short links, /embed/ addresses for an iframe, thumbnail URLs or Markdown links — pick newline or comma separation, and copy. Every link is rebuilt from an ID the tool validated, never echoed back from what you pasted, so nothing in the input can reach a clickable address. The CSV download carries the whole table, duplicates and unreadable rows included, with each source snippet neutralised so a line opening with = is read by a spreadsheet as text rather than run as a formula. Turn the thumbnail previews off and the page makes no network request whatsoever.