{"id":736,"date":"2025-06-17T13:25:32","date_gmt":"2025-06-17T17:25:32","guid":{"rendered":"https:\/\/harmonicdesign.ca\/?post_type=hd_products&#038;p=736"},"modified":"2025-06-17T15:50:04","modified_gmt":"2025-06-17T19:50:04","slug":"youtube-video-archive-lookup-tool","status":"publish","type":"hd_products","link":"https:\/\/harmonicdesign.ca\/product\/youtube-video-archive-lookup-tool\/","title":{"rendered":"YouTube Video Archive Lookup"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">How to find removed or forgotten YouTube videos<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p>I was recently going through my personal YouTube account and looking at all the old videos I&#8217;ve added to various playlists and all the videos I&#8217;ve liked over the years. <em>But something was missing<\/em>. And that\u2019s when I saw the feature to &#8220;<strong>show unavailable videos<\/strong>&#8220;.<\/p>\n\n\n\n<p>To my dismay, I had about 30 videos that were no more. Clicking on them would either tell me that <strong>a) the channel no longer exists, b) the video was deleted, or c) the video was privatized<\/strong>. And the worst part was that YouTube provides <em>zero<\/em> information on what the video was. It doesn&#8217;t tell you the video name, or even what channel it belonged to! Because of this, videos that I presumably loved enough to like or add to a playlist, were lost to time.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-video aligncenter\"><video height=\"241\" style=\"aspect-ratio: 348 \/ 241;\" width=\"348\" autoplay controls loop muted preload=\"auto\" src=\"https:\/\/harmonicdesign.ca\/hdpress\/storage\/2025\/06\/Screencast-From-2025-06-17-13-50-13.mp4\" playsinline><\/video><figcaption class=\"wp-element-caption\">You need to be on the playlist page to see this<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">The Tool<\/h2>\n\n\n\n<p>This online tool allows you to enter the original YouTube URL or ID and get back archived results including channel name, video name, published date, and thumbnail, if existing, to provide you with context on what the video was. And if you are lucky, you just might even get an archived backup of the video.<\/p>\n\n\n\n    <style>\n        html {\n            -webkit-box-sizing: border-box;\n            -moz-box-sizing: border-box;\n            box-sizing: border-box;\n        }\n\n        *,\n        *:before,\n        *:after {\n            -webkit-box-sizing: inherit;\n            -moz-box-sizing: inherit;\n            box-sizing: inherit;\n        }\n\n        #ytal_inputs {\n            display: grid;\n            grid-template-columns: 1fr max-content;\n            margin-top: 0.6em;\n        }\n\n        #ytal_video_label {\n            display: block;\n            cursor: pointer;\n\t\t\tfont-weight: bold;\n        }\n\n        #ytal_video {\n            display: block;\n            line-height: 1;\n            padding: 1em;\n            width: 100%;\n            border: 1px solid #999;\n            border-radius: 0;\n        }\n\n        #ytal_video:focus {\n            outline: 1px solid red;\n        }\n\n        #ytal_submit {\n            box-shadow: none;\n            border: 1px solid #999;\n            border-radius: 0;\n            background-color: black;\n            color: #fff;\n            padding: 1em;\n            line-height: 1;\n            height: 100%;\n            cursor: pointer;\n        }\n\n        #ytal_submit:focus {\n            outline: 1px solid red;\n        }\n\t\t\n\t\t#ytal_results {\n\t\t\tpadding: 1rem;\n\t\t}\n\t\t\n\t\tvideo {\n\t\t\tmax-width: 100%\n\t\t}\n    <\/style>\n\n    <section id=\"ytal_wrapper\">\n        <div id=\"ytal_header\">\n            <label for=\"ytal_video\" id=\"ytal_video_label\">Enter YouTube Video URL or ID<\/label>\n            <div id=\"ytal_inputs\">\n                <div><input type=\"url\" id=\"ytal_video\" placeholder=\"https:\/\/www.youtube.com\/watch?v=YDyNDs3TdTs\" value=\"\" \/><\/div>\n                <div><button id=\"ytal_submit\">FIND<\/button><\/div>\n            <\/div>\n        <\/div>\n        <div id=\"ytal_results\"><\/div>\n    <\/section>\n\n    <script>\n        const ytal = {\n            init: function() {\n                console.log(\"YouTube Video Archive Lookup initiated\");\n                console.log(\"YTAL created by Harmonic Design\");\n                ytal.setEvents();\n            },\n            setEvents: function() {\n                document.getElementById(\"ytal_video\").addEventListener(\"keyup\", function(e) {\n                    if (e.keyCode === 13) {\n                        ytal.submit();\n                    }\n                });\n                document.getElementById(\"ytal_submit\").addEventListener(\"keyup\", function(e) {\n                    if (e.keyCode === 13 || e.keyCode === 32) {\n                        ytal.submit();\n                    }\n                });\n                document.getElementById(\"ytal_submit\").addEventListener(\"click\", function() {\n                    ytal.submit();\n                });\n            },\n            submit: function() {\n                let v = document.getElementById(\"ytal_video\").value;\n                v = v.trim();\n\n                if (v == \"\") {\n                    return;\n                }\n\n                let id = null;\n\n                if (isValid(v)) {\n                    \/\/ parse video ID\n\n                    const url = new URL(v);\n                    const params = new URLSearchParams(url.search);\n\n                    id = params.get('v');\n\n                } else {\n                    \/\/ assume is ID\n                    console.log(\"is ID\")\n                    id = v;\n                }\n\n                if (id === null) {\n                    return;\n                }\n\n                ytal.search(id);\n\n\n                function isValid(website = \"\") {\n                    let re = \/((([A-Za-z]{3,9}:(?:\\\/\\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\\/[\\+~%\\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\\/\\\\\\w]*))?)\/; \/\/ #http:\/\/urlregex.com\n\n                    return re.test(String(website).toLowerCase());\n                }\n            },\n            search: async function(id) {\n                const url = \"https:\/\/filmot.com\/api\/getvideos?key=md5paNgdbaeudounjp39&id=\" + id;\n                let data = null;\n                try {\n                    const response = await fetch(url);\n                    if (!response.ok) {\n                        throw new Error(`Response status: ${response.status}`);\n                    }\n                    const json = await response.json();\n                    data = json;\n                } catch (error) {\n                    console.error(error.message);\n                }\n\n                if (data === null || data.length == 0) {\n\t\t\t\t\tdocument.getElementById(\"ytal_results\").innerHTML = `<p style = \"font-weight: bold\">Unable to find data on video<\/p><p>Either the video ID is incorrect, or none of the sources has this video archived.<\/p>`;\n                    return;\n                }\n\n                ytal.display(data[0], id)\n            },\n            display: async function(data, id) {\n\t\t\t\tconsole.log(data)\n                let html = `<h2>${data.title}<\/h2>\n<a href = \"https:\/\/www.youtube.com\/channel\/${data.channelid}\" target = \"_blank\">${data.channelname}<\/a> - Published ${data.uploaddate}\n`;\n                document.getElementById(\"ytal_results\").innerHTML = html;\n\t\t\t\t\n\t\t\t\t\/\/ lookup the archive\n\n\t\t\t\tconst YT = \"https:\/\/www.youtube.com\/watch?v=\" + id;\n\t\t\t\tconst url = \"https:\/\/archive.org\/wayback\/available?url=\" + YT;\n\n                try {\n                    const response = await fetch(url);\n                    if (!response.ok) {\n                        throw new Error(`Response status: ${response.status}`);\n                    }\n                    const json = await response.json();               \n\t\t\t\t\tconsole.log(json)\n\t\t\t\t\tif(json.archived_snapshots && json.archived_snapshots.closest && json.archived_snapshots.closest.available){\n\t\t\t\t\t\thtml = `<p>\ud83d\ude04 Wayback Machine archive: <a href = \"${json.archived_snapshots.closest.url}\" target = \"_blank\">${json.archived_snapshots.closest.timestamp}<\/a><\/p>`;\n\t\t\t\t\t\tdocument.getElementById(\"ytal_results\").insertAdjacentHTML(\"beforeend\", html);\n\t\t\t\t\t}\n\t\t\t\t\t\n                } catch (error) {\n                    console.error(error.message);\n                }\n            }\n\n        }\n        ytal.init();\n    <\/script>\n\n\n\n\n\n<p>This tool primarily uses two sources: <a href=\"https:\/\/filmot.com\">filmot.com<\/a>, and <a href=\"https:\/\/archive.org\/\">archive.org<\/a> so consider supporting them if you&#8217;ve found this useful.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This online tool allows you to enter the original YouTube URL or ID and get back archived results including channel name, video name, published date, and thumbnail, if existing, to provide you with context on what the video was. And if you are lucky, you just might even get an archived backup of the video.<\/p>\n","protected":false},"featured_media":739,"comment_status":"open","ping_status":"closed","template":"","class_list":["post-736","hd_products","type-hd_products","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/hd_products\/736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/hd_products"}],"about":[{"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/types\/hd_products"}],"replies":[{"embeddable":true,"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/comments?post=736"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/media\/739"}],"wp:attachment":[{"href":"https:\/\/harmonicdesign.ca\/hdapi\/wp\/v2\/media?parent=736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}