{"id":5595,"date":"2026-06-02T08:31:59","date_gmt":"2026-06-02T08:31:59","guid":{"rendered":"https:\/\/viiewerr.com\/youtube\/description\/"},"modified":"2026-06-27T10:01:32","modified_gmt":"2026-06-27T10:01:32","slug":"description","status":"publish","type":"page","link":"https:\/\/viiewerr.com\/youtube\/description\/","title":{"rendered":"Youtube Description Viewer: Extract"},"content":{"rendered":"<style type=\"text\/css\">\n.tc-wp-island {\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n  box-sizing: border-box;\n  display: flow-root;\n  isolation: isolate;\n  position: relative;\n}\n.tc-wp-island > * {\n  min-width: 0;\n}\n.tc-wp-island *,\n.tc-wp-island *::before,\n.tc-wp-island *::after {\n  box-sizing: border-box;\n}\n.tc-wp-island img,\n.tc-wp-island video,\n.tc-wp-island svg,\n.tc-wp-island iframe {\n  max-width: 100%;\n  height: auto;\n}\n.tc-wp-island .tc-wp-tool {\n  max-width: 100%;\n  min-width: 0;\n}\n.tc-wp-island .tc-wp-tool-html,\n.tc-wp-island .tc-wp-tool-content,\n.tc-wp-island .tc-wp-other {\n  max-width: 100%;\n  min-width: 0;\n  overflow-wrap: anywhere;\n  word-break: break-word;\n}\n\/* Keep tool in post content flow \u2014 not overlapping theme header \/ hero band *\/\n.tc-wp-island {\n  clear: both;\n  z-index: 1;\n}\n.tc-wp-island .tc-wp-tool {\n  position: relative;\n  z-index: 0;\n  clear: both;\n  margin-top: 0;\n  margin-bottom: 1.25rem;\n}\n.tc-wp-island .tc-wp-tool-html {\n  position: relative;\n  z-index: 0;\n  clear: both;\n  contain: layout;\n}\n.tc-wp-island .tc-wp-tool-html > *:first-child {\n  position: relative !important;\n  top: auto !important;\n  left: auto !important;\n  right: auto !important;\n  margin-top: 0 !important;\n  width: 100%;\n  max-width: 100%;\n  box-sizing: border-box;\n}\nbody:has(.tc-wp-island) #main-header,\nbody:has(.tc-wp-island) header.site-header,\nbody:has(.tc-wp-island) .site-header,\nbody:has(.tc-wp-island) #header,\nbody:has(.tc-wp-island) .et-fixed-header,\nbody:has(.tc-wp-island) .elementor-location-header {\n  z-index: 200;\n}\n\/* Space between WP Coder tool + content shortcodes on publish\/draft pages *\/\n.tc-wp-island .tc-wp-tool-html + .tc-wp-tool-content {\n  margin-top: 20px;\n}\n.tc-wp-island .tc-wp-bcd-codes {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\/* Full-width: hide theme sidebar when a ToolsChecker island is present *\/\nbody:has(.tc-wp-island) #sidebar,\nbody:has(.tc-wp-island) .sidebar,\nbody:has(.tc-wp-island) #secondary,\nbody:has(.tc-wp-island) .widget-area,\nbody:has(.tc-wp-island) aside.sidebar,\nbody:has(.tc-wp-island) #right-sidebar,\nbody:has(.tc-wp-island) #left-sidebar,\nbody:has(.tc-wp-island) .sidebar-primary,\nbody:has(.tc-wp-island) .sidebar-secondary,\nbody:has(.tc-wp-island) .ast-sidebar,\nbody:has(.tc-wp-island) .site-sidebar {\n  display: none !important;\n}\n\/* Copygen: hide default page title\/breadcrumb band \u2014 tool pages use template-homepage like category *\/\nbody:has(.tc-wp-island) section.page_header_default,\nbody:has(.tc-wp-island) .page_header_default {\n  display: none !important;\n}\n@media (min-width: 981px) {\n  body:has(.tc-wp-island) #left-area,\n  body:has(.tc-wp-island) #primary,\n  body:has(.tc-wp-island) #content-area,\n  body:has(.tc-wp-island) #content-area .container,\n  body:has(.tc-wp-island) .content-area,\n  body:has(.tc-wp-island) main.site-main,\n  body:has(.tc-wp-island) .site-content .content-area {\n    width: 100% !important;\n    max-width: 100% !important;\n    float: none !important;\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n  body:has(.tc-wp-island) #main-content .container:before {\n    display: none !important;\n  }\n}\n\/* Tool pages: keep theme H1 readable \u2014 smaller type, full content width, 1\u20132 lines *\/\nbody:has(.tc-wp-island) .fontib-v2-hero-inner {\n  width: min(100%, calc(100vw - 40px)) !important;\n  max-width: 1320px !important;\n}\nbody:has(.tc-wp-island) .fontib-v2-title,\nbody:has(.tc-wp-island) #left-area > .entry-title,\nbody:has(.tc-wp-island) .entry-title h1,\nbody:has(.tc-wp-island) h1.entry-title,\nbody:has(.tc-wp-island) .page-title,\nbody:has(.tc-wp-island) .et_pb_title_container h1 {\n  max-width: 100% !important;\n  width: 100%;\n  font-size: clamp(24px, 2.6vw, 38px) !important;\n  line-height: 1.2 !important;\n  letter-spacing: -0.01em;\n}\n<\/style>\n<div class=\"tc-wp-island\">\n<section class=\"tc-wp-tool\" data-tool-index=\"1\">\n<div class=\"tc-wp-tool-html\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n    .ytdv-wrapper * {\r\n        margin: 0;\r\n        padding: 0;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    .ytdv-wrapper {\r\n        font-family: 'Inter', sans-serif;\r\n        background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);\r\n        color: #ffffff;\r\n        min-height: 100vh;\r\n        line-height: 1.5;\r\n    }\r\n\r\n    .ytdv-container {\r\n        max-width: 900px;\r\n        margin: 0 auto;\r\n        padding: 20px;\r\n    }\r\n\r\n    .ytdv-header {\r\n        text-align: center;\r\n        margin-bottom: 40px;\r\n        padding: 30px 0;\r\n    }\r\n\r\n    .ytdv-logo-container {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 15px;\r\n        margin-bottom: 20px;\r\n    }\r\n\r\n    .ytdv-logo {\r\n        width: 50px;\r\n        height: 50px;\r\n        background: #ffffff;\r\n        border-radius: 12px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);\r\n        flex: 0 0 50px;\r\n    }\r\n\r\n    .ytdv-youtube-icon {\r\n        width: 28px;\r\n        height: 28px;\r\n        fill: #ff0000;\r\n    }\r\n\r\n    .ytdv-title {\r\n        font-size: 2.2rem;\r\n        font-weight: 800;\r\n        background: linear-gradient(135deg, #ffffff, #f1f2f6);\r\n        -webkit-background-clip: text;\r\n        -webkit-text-fill-color: transparent;\r\n        background-clip: text;\r\n        margin-bottom: 8px;\r\n        line-height: 1.2;\r\n    }\r\n\r\n    .ytdv-subtitle {\r\n        font-size: 1rem;\r\n        color: rgba(255, 255, 255, 0.9);\r\n        font-weight: 500;\r\n    }\r\n\r\n    .ytdv-input-section {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n        border-radius: 20px;\r\n        padding: 30px;\r\n        margin-bottom: 30px;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\r\n    }\r\n\r\n    .ytdv-input-title {\r\n        font-size: 1.3rem;\r\n        font-weight: 700;\r\n        color: white;\r\n        margin-bottom: 15px;\r\n        text-align: center;\r\n    }\r\n\r\n    .ytdv-input-group {\r\n        display: flex;\r\n        gap: 12px;\r\n        margin-bottom: 20px;\r\n    }\r\n\r\n    .ytdv-wrapper .ytdv-input-field {\r\n        flex: 1;\r\n        width: 100%;\r\n        padding: 14px 18px !important;\r\n        border: 2px solid rgba(255, 255, 255, 0.2) !important;\r\n        border-radius: 12px !important;\r\n        background: rgba(255, 255, 255, 0.1) !important;\r\n        color: #ffffff !important;\r\n        font-size: 14px !important;\r\n        font-weight: 500;\r\n        transition: all 0.3s ease !important;\r\n        font-family: 'Inter', sans-serif !important;\r\n        box-shadow: none !important;\r\n    }\r\n\r\n    .ytdv-wrapper .ytdv-input-field:focus {\r\n        outline: none !important;\r\n        border-color: #ffffff !important;\r\n        background: rgba(255, 255, 255, 0.15) !important;\r\n    }\r\n\r\n    .ytdv-wrapper .ytdv-input-field::placeholder {\r\n        color: rgba(255, 255, 255, 0.6);\r\n    }\r\n\r\n    .ytdv-btn {\r\n        padding: 14px 20px;\r\n        border: none;\r\n        border-radius: 12px;\r\n        font-size: 14px;\r\n        font-weight: 600;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        font-family: 'Inter', sans-serif;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 8px;\r\n        white-space: nowrap;\r\n    }\r\n\r\n    .ytdv-btn-paste {\r\n        background: rgba(255, 255, 255, 0.2);\r\n        color: white;\r\n        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\r\n    }\r\n\r\n    .ytdv-btn-paste:hover,\r\n    .ytdv-btn-find:hover,\r\n    .ytdv-copy-btn:hover,\r\n    .ytdv-btn-search-again:hover {\r\n        transform: translateY(-2px);\r\n    }\r\n\r\n    .ytdv-btn-find {\r\n        background: #dce7fd;\r\n        color: #1e3c72;\r\n        width: 100%;\r\n        padding: 16px;\r\n        font-size: 16px;\r\n        font-weight: 700;\r\n        box-shadow: 0 4px 15px rgba(255, 255, 255, 0.3);\r\n    }\r\n\r\n    .ytdv-btn:disabled {\r\n        opacity: 0.6;\r\n        cursor: not-allowed;\r\n        transform: none !important;\r\n    }\r\n\r\n    .ytdv-btn-icon,\r\n    .ytdv-copy-icon,\r\n    .ytdv-search-again-icon {\r\n        width: 16px;\r\n        height: 16px;\r\n        fill: currentColor;\r\n    }\r\n\r\n    .ytdv-loading {\r\n        display: none;\r\n        text-align: center;\r\n        padding: 40px;\r\n        background: rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n        border-radius: 20px;\r\n        margin-bottom: 30px;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n    }\r\n\r\n    .ytdv-loading-spinner,\r\n    .ytdv-inline-spinner {\r\n        border: 3px solid rgba(255, 255, 255, 0.3);\r\n        border-top: 3px solid #ffffff;\r\n        border-radius: 50%;\r\n        animation: ytdv-spin 1s linear infinite;\r\n    }\r\n\r\n    .ytdv-loading-spinner {\r\n        width: 40px;\r\n        height: 40px;\r\n        margin: 0 auto 20px;\r\n    }\r\n\r\n    .ytdv-inline-spinner {\r\n        width: 16px;\r\n        height: 16px;\r\n        border-width: 2px;\r\n    }\r\n\r\n    .ytdv-loading-text {\r\n        font-size: 1.1rem;\r\n        font-weight: 600;\r\n        color: white;\r\n    }\r\n\r\n    .ytdv-results {\r\n        display: none;\r\n    }\r\n\r\n    .ytdv-video-card {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n        border-radius: 20px;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        overflow: hidden;\r\n        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\r\n    }\r\n\r\n    .ytdv-video-header {\r\n        padding: 25px;\r\n        display: grid;\r\n        grid-template-columns: 1fr;\r\n        gap: 20px;\r\n    }\r\n\r\n    .ytdv-thumbnail-container {\r\n        position: relative;\r\n        border-radius: 12px;\r\n        overflow: hidden;\r\n        aspect-ratio: 16 \/ 9;\r\n        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\r\n        background: rgba(0, 0, 0, 0.18);\r\n    }\r\n\r\n    .ytdv-thumbnail {\r\n        width: 100%;\r\n        height: 100%;\r\n        object-fit: cover;\r\n        display: block;\r\n    }\r\n\r\n    .ytdv-video-title {\r\n        font-size: 1.4rem;\r\n        font-weight: 700;\r\n        color: white;\r\n        line-height: 1.3;\r\n        word-break: break-word;\r\n    }\r\n\r\n    .ytdv-channel-info {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n        padding: 15px;\r\n        background: rgba(255, 255, 255, 0.1);\r\n        border-radius: 12px;\r\n        margin-bottom: 20px;\r\n    }\r\n\r\n    .ytdv-channel-avatar {\r\n        width: 40px;\r\n        height: 40px;\r\n        background: #ffffff;\r\n        border-radius: 10px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        flex: 0 0 40px;\r\n    }\r\n\r\n    .ytdv-channel-icon {\r\n        width: 20px;\r\n        height: 20px;\r\n        fill: #ff0000;\r\n    }\r\n\r\n    .ytdv-channel-name {\r\n        font-size: 1rem;\r\n        font-weight: 600;\r\n        color: white;\r\n        margin-bottom: 2px;\r\n    }\r\n\r\n    .ytdv-channel-link {\r\n        color: #ffffff;\r\n        text-decoration: none;\r\n        font-weight: 600;\r\n        word-break: break-word;\r\n    }\r\n\r\n    .ytdv-channel-link:hover {\r\n        color: rgba(255, 255, 255, 0.8);\r\n    }\r\n\r\n    .ytdv-verified-text {\r\n        color: rgba(255, 255, 255, 0.7);\r\n        font-size: 0.85rem;\r\n    }\r\n\r\n    .ytdv-stats-grid {\r\n        display: grid;\r\n        grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\r\n        gap: 15px;\r\n    }\r\n\r\n    .ytdv-stat-card {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        border-radius: 12px;\r\n        padding: 15px;\r\n        text-align: center;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        transition: transform 0.3s ease;\r\n    }\r\n\r\n    .ytdv-stat-card:hover {\r\n        transform: translateY(-3px);\r\n    }\r\n\r\n    .ytdv-stat-icon {\r\n        width: 24px;\r\n        height: 24px;\r\n        margin: 0 auto 8px;\r\n        padding: 6px;\r\n        border-radius: 8px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        background: #ffffff;\r\n    }\r\n\r\n    .ytdv-stat-icon svg {\r\n        width: 12px;\r\n        height: 12px;\r\n        fill: #1e3c72;\r\n    }\r\n\r\n    .ytdv-stat-label {\r\n        font-size: 0.75rem;\r\n        color: rgba(255, 255, 255, 0.7);\r\n        font-weight: 500;\r\n        text-transform: uppercase;\r\n        letter-spacing: 0.5px;\r\n        margin-bottom: 4px;\r\n    }\r\n\r\n    .ytdv-stat-value {\r\n        font-size: 1.1rem;\r\n        font-weight: 700;\r\n        color: white;\r\n        word-break: break-word;\r\n    }\r\n\r\n    .ytdv-description-section,\r\n    .ytdv-captions-section,\r\n    .ytdv-search-again-section {\r\n        padding: 25px;\r\n        background: rgba(255, 255, 255, 0.05);\r\n        border-top: 1px solid rgba(255, 255, 255, 0.1);\r\n    }\r\n\r\n    .ytdv-search-again-section {\r\n        text-align: center;\r\n    }\r\n\r\n    .ytdv-section-header {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        margin-bottom: 20px;\r\n        flex-wrap: wrap;\r\n        gap: 15px;\r\n    }\r\n\r\n    .ytdv-section-title {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n    }\r\n\r\n    .ytdv-section-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        background: #ffffff;\r\n        border-radius: 10px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        flex: 0 0 40px;\r\n    }\r\n\r\n    .ytdv-section-icon svg {\r\n        width: 20px;\r\n        height: 20px;\r\n        fill: #1e3c72;\r\n    }\r\n\r\n    .ytdv-section-heading {\r\n        font-size: 1.2rem;\r\n        font-weight: 700;\r\n        color: white;\r\n        margin-bottom: 2px;\r\n    }\r\n\r\n    .ytdv-section-subheading {\r\n        font-size: 0.85rem;\r\n        color: rgba(255, 255, 255, 0.7);\r\n    }\r\n\r\n    .ytdv-copy-btn,\r\n    .ytdv-btn-search-again {\r\n        border: none;\r\n        border-radius: 10px;\r\n        cursor: pointer;\r\n        font-weight: 600;\r\n        transition: all 0.3s ease;\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 8px;\r\n        font-family: 'Inter', sans-serif;\r\n    }\r\n\r\n    .ytdv-copy-btn {\r\n        background: rgba(255, 255, 255, 0.2);\r\n        color: white;\r\n        padding: 10px 16px;\r\n        font-size: 0.9rem;\r\n    }\r\n\r\n    .ytdv-copy-btn.ytdv-copied {\r\n        background: rgba(255, 255, 255, 0.3);\r\n    }\r\n\r\n    .ytdv-btn-search-again {\r\n        background: #ffffff;\r\n        color: #1e3c72;\r\n        padding: 14px 24px;\r\n        font-size: 1rem;\r\n        box-shadow: 0 4px 15px rgba(255, 255, 255, 0.3);\r\n    }\r\n\r\n    .ytdv-description-content,\r\n    .ytdv-captions-content {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        border-left: 4px solid #ffffff;\r\n        color: rgba(255, 255, 255, 0.9);\r\n        line-height: 1.6;\r\n        font-size: 0.9rem;\r\n        white-space: pre-wrap;\r\n        border-top: 1px solid rgba(255, 255, 255, 0.1);\r\n        border-right: 1px solid rgba(255, 255, 255, 0.1);\r\n        border-bottom: 1px solid rgba(255, 255, 255, 0.1);\r\n        overflow-wrap: anywhere;\r\n    }\r\n\r\n    .ytdv-caption-item {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n        margin-bottom: 10px;\r\n        font-size: 0.9rem;\r\n    }\r\n\r\n    .ytdv-caption-item:last-child {\r\n        margin-bottom: 0;\r\n    }\r\n\r\n    .ytdv-caption-dot {\r\n        width: 8px;\r\n        height: 8px;\r\n        background: #ffffff;\r\n        border-radius: 50%;\r\n        flex: 0 0 8px;\r\n    }\r\n\r\n    .ytdv-caption-label {\r\n        color: #ffffff;\r\n        font-weight: 600;\r\n    }\r\n\r\n    .ytdv-caption-value {\r\n        color: rgba(255, 255, 255, 0.9);\r\n    }\r\n\r\n    .ytdv-error {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n        border-radius: 20px;\r\n        padding: 30px;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        text-align: center;\r\n        margin-bottom: 30px;\r\n    }\r\n\r\n    .ytdv-error-icon {\r\n        font-size: 3rem;\r\n        margin-bottom: 15px;\r\n    }\r\n\r\n    .ytdv-error-title {\r\n        font-size: 1.3rem;\r\n        font-weight: 700;\r\n        color: #ffffff;\r\n        margin-bottom: 10px;\r\n    }\r\n\r\n    .ytdv-error-message {\r\n        font-size: 0.95rem;\r\n        color: rgba(255, 255, 255, 0.8);\r\n        margin-bottom: 8px;\r\n        overflow-wrap: anywhere;\r\n    }\r\n\r\n    .ytdv-error-details {\r\n        color: rgba(255, 255, 255, 0.7);\r\n        font-size: 0.85rem;\r\n    }\r\n\r\n    .ytdv-features-grid {\r\n        display: grid;\r\n        grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\r\n        gap: 15px;\r\n        margin-bottom: 30px;\r\n    }\r\n\r\n    .ytdv-feature-card {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n        border-radius: 12px;\r\n        padding: 20px;\r\n        text-align: center;\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        transition: transform 0.3s ease;\r\n    }\r\n\r\n    .ytdv-feature-card:hover {\r\n        transform: translateY(-5px);\r\n    }\r\n\r\n    .ytdv-feature-icon {\r\n        font-size: 1.8rem;\r\n        margin-bottom: 8px;\r\n        display: block;\r\n    }\r\n\r\n    .ytdv-feature-text {\r\n        font-size: 0.85rem;\r\n        font-weight: 600;\r\n        color: white;\r\n    }\r\n\r\n    @keyframes ytdv-spin {\r\n        to {\r\n            transform: rotate(360deg);\r\n        }\r\n    }\r\n\r\n    .ytdv-wrapper ::-webkit-scrollbar {\r\n        width: 6px;\r\n    }\r\n\r\n    .ytdv-wrapper ::-webkit-scrollbar-track {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        border-radius: 3px;\r\n    }\r\n\r\n    .ytdv-wrapper ::-webkit-scrollbar-thumb {\r\n        background: #ffffff;\r\n        border-radius: 3px;\r\n    }\r\n\r\n    @media (max-width: 992px) {\r\n        .ytdv-container {\r\n            max-width: 90%;\r\n            padding: 15px;\r\n        }\r\n\r\n        .ytdv-title {\r\n            font-size: 2rem;\r\n        }\r\n\r\n        .ytdv-input-section {\r\n            padding: 25px;\r\n        }\r\n\r\n        .ytdv-video-header {\r\n            padding: 20px;\r\n        }\r\n\r\n        .ytdv-stats-grid {\r\n            grid-template-columns: repeat(2, 1fr);\r\n        }\r\n    }\r\n\r\n    @media (max-width: 768px) {\r\n        .ytdv-container {\r\n            max-width: 95%;\r\n            padding: 10px;\r\n        }\r\n\r\n        .ytdv-title {\r\n            font-size: 1.8rem;\r\n        }\r\n\r\n        .ytdv-input-group {\r\n            flex-direction: column;\r\n        }\r\n\r\n        .ytdv-btn-paste {\r\n            width: 100%;\r\n        }\r\n\r\n        .ytdv-input-section,\r\n        .ytdv-loading,\r\n        .ytdv-error {\r\n            padding: 20px;\r\n        }\r\n\r\n        .ytdv-video-header,\r\n        .ytdv-description-section,\r\n        .ytdv-captions-section {\r\n            padding: 15px;\r\n        }\r\n\r\n        .ytdv-section-header {\r\n            flex-direction: column;\r\n            align-items: flex-start;\r\n        }\r\n\r\n        .ytdv-copy-btn {\r\n            width: 100%;\r\n        }\r\n\r\n        .ytdv-stats-grid {\r\n            grid-template-columns: 1fr;\r\n        }\r\n\r\n        .ytdv-features-grid {\r\n            grid-template-columns: repeat(2, 1fr);\r\n        }\r\n    }\r\n\r\n    @media (max-width: 600px) {\r\n        .ytdv-container {\r\n            padding: 8px;\r\n        }\r\n\r\n        .ytdv-title {\r\n            font-size: 1.6rem;\r\n        }\r\n\r\n        .ytdv-logo-container {\r\n            flex-direction: column;\r\n            gap: 10px;\r\n        }\r\n\r\n        .ytdv-btn-find {\r\n            padding: 14px;\r\n            font-size: 15px;\r\n        }\r\n\r\n        .ytdv-features-grid {\r\n            grid-template-columns: repeat(2, 1fr);\r\n            gap: 10px;\r\n        }\r\n\r\n        .ytdv-feature-card {\r\n            padding: 15px;\r\n        }\r\n    }\r\n\r\n    @media (max-width: 400px) {\r\n        .ytdv-container {\r\n            padding: 5px;\r\n        }\r\n\r\n        .ytdv-title {\r\n            font-size: 1.4rem;\r\n        }\r\n\r\n        .ytdv-header {\r\n            padding: 20px 0;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .ytdv-input-section {\r\n            padding: 15px;\r\n            margin-bottom: 15px;\r\n        }\r\n\r\n        .ytdv-input-title {\r\n            font-size: 1.1rem;\r\n        }\r\n\r\n        .ytdv-btn {\r\n            padding: 12px 16px;\r\n            font-size: 13px;\r\n        }\r\n\r\n        .ytdv-features-grid {\r\n            grid-template-columns: 1fr;\r\n        }\r\n    }\r\n\r\n    @media (max-width: 375px) {\r\n        .ytdv-title {\r\n            font-size: 1.3rem;\r\n        }\r\n\r\n        .ytdv-subtitle {\r\n            font-size: 0.9rem;\r\n        }\r\n\r\n        .ytdv-input-section {\r\n            padding: 12px;\r\n        }\r\n\r\n        .ytdv-wrapper .ytdv-input-field {\r\n            padding: 12px 15px !important;\r\n            font-size: 13px !important;\r\n        }\r\n\r\n        .ytdv-btn {\r\n            padding: 10px 14px;\r\n            font-size: 12px;\r\n        }\r\n\r\n        .ytdv-stats-grid {\r\n            gap: 10px;\r\n        }\r\n\r\n        .ytdv-stat-card {\r\n            padding: 12px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div class=\"ytdv-wrapper\">\r\n    <div class=\"ytdv-container\">\r\n        <div class=\"ytdv-header\">\r\n            <div class=\"ytdv-logo-container\">\r\n                <div class=\"ytdv-logo\">\r\n                    <svg class=\"ytdv-youtube-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n                        <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\"><\/path>\r\n                    <\/svg>\r\n                <\/div>\r\n                <div>\r\n                    <h1 class=\"ytdv-title\">YouTube Description Viewer<\/h1>\r\n                    <p class=\"ytdv-subtitle\">Extract video descriptions instantly<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"ytdv-features-grid\">\r\n                <div class=\"ytdv-feature-card\">\r\n                    <span class=\"ytdv-feature-icon\">\u26a1<\/span>\r\n                    <p class=\"ytdv-feature-text\">Fast<\/p>\r\n                <\/div>\r\n                <div class=\"ytdv-feature-card\">\r\n                    <span class=\"ytdv-feature-icon\">\ud83d\udd12<\/span>\r\n                    <p class=\"ytdv-feature-text\">Secure<\/p>\r\n                <\/div>\r\n                <div class=\"ytdv-feature-card\">\r\n                    <span class=\"ytdv-feature-icon\">\ud83d\udcf1<\/span>\r\n                    <p class=\"ytdv-feature-text\">Mobile<\/p>\r\n                <\/div>\r\n                <div class=\"ytdv-feature-card\">\r\n                    <span class=\"ytdv-feature-icon\">\ud83c\udd93<\/span>\r\n                    <p class=\"ytdv-feature-text\">Free<\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"ytdv-input-section\">\r\n            <h3 class=\"ytdv-input-title\">Enter YouTube URL<\/h3>\r\n            <div class=\"ytdv-input-group\">\r\n                <input type=\"text\" id=\"ytdv-videoInput\" class=\"ytdv-input-field\" placeholder=\"Paste YouTube URL here...\">\r\n                <button type=\"button\" class=\"ytdv-btn ytdv-btn-paste\" onclick=\"ytdvPasteFromClipboard()\">\r\n                    <svg class=\"ytdv-btn-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                        <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"><\/path>\r\n                    <\/svg>\r\n                    Paste\r\n                <\/button>\r\n            <\/div>\r\n            <button type=\"button\" class=\"ytdv-btn ytdv-btn-find\" onclick=\"ytdvFindDescription()\">\r\n                <svg class=\"ytdv-btn-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                    <path d=\"M9.5,3L8,6.5H4.5L7.91,9.91L6.5,16.5L9.5,14L12.5,16.5L11.09,9.91L14.5,6.5H11L9.5,3Z\"><\/path>\r\n                <\/svg>\r\n                Extract Description\r\n            <\/button>\r\n        <\/div>\r\n\r\n        <div class=\"ytdv-loading\" id=\"ytdv-loading\">\r\n            <div class=\"ytdv-loading-spinner\"><\/div>\r\n            <p class=\"ytdv-loading-text\">Processing your request...<\/p>\r\n        <\/div>\r\n\r\n        <div class=\"ytdv-results\" id=\"ytdv-results\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n    const wrapper = document.querySelector('.ytdv-wrapper');\r\n    if (!wrapper) return;\r\n\r\n    let isProcessing = false;\r\n\r\n    const $ = (selector) => wrapper.querySelector(selector);\r\n    const input = () => $('#ytdv-videoInput');\r\n    const loading = () => $('#ytdv-loading');\r\n    const results = () => $('#ytdv-results');\r\n    const findBtn = () => $('.ytdv-btn-find');\r\n\r\n    function getValue(value, fallback = '') {\r\n        if (value === null || value === undefined) return fallback;\r\n        const text = String(value).trim();\r\n        return text || fallback;\r\n    }\r\n\r\n    function escapeHtml(value) {\r\n        return String(value ?? '')\r\n            .replace(\/&\/g, '&amp;')\r\n            .replace(\/<\/g, '&lt;')\r\n            .replace(\/>\/g, '&gt;')\r\n            .replace(\/\"\/g, '&quot;')\r\n            .replace(\/'\/g, '&#039;');\r\n    }\r\n\r\n    function safeUrl(value) {\r\n        try {\r\n            const url = new URL(value, window.location.href);\r\n            if (url.protocol === 'http:' || url.protocol === 'https:') {\r\n                return url.href;\r\n            }\r\n        } catch (error) {}\r\n        return '#';\r\n    }\r\n\r\n    function extractVideoId(value) {\r\n        const text = getValue(value);\r\n        if (\/^[a-zA-Z0-9_-]{11}$\/.test(text)) return text;\r\n\r\n        const patterns = [\r\n            \/(?:youtube\\.com\\\/watch\\?.*?v=)([a-zA-Z0-9_-]{11})\/,\r\n            \/(?:youtu\\.be\\\/)([a-zA-Z0-9_-]{11})\/,\r\n            \/(?:youtube\\.com\\\/embed\\\/)([a-zA-Z0-9_-]{11})\/,\r\n            \/(?:youtube\\.com\\\/v\\\/)([a-zA-Z0-9_-]{11})\/,\r\n            \/(?:youtube\\.com\\\/shorts\\\/)([a-zA-Z0-9_-]{11})\/,\r\n            \/(?:youtube\\.com\\\/live\\\/)([a-zA-Z0-9_-]{11})\/\r\n        ];\r\n\r\n        for (const pattern of patterns) {\r\n            const match = text.match(pattern);\r\n            if (match && match[1]) return match[1];\r\n        }\r\n\r\n        try {\r\n            const url = new URL(text);\r\n            const v = url.searchParams.get('v');\r\n            if (v && \/^[a-zA-Z0-9_-]{11}$\/.test(v)) return v;\r\n        } catch (error) {}\r\n\r\n        return null;\r\n    }\r\n\r\n    function getThumbnailUrls(videoId) {\r\n        return [\r\n            `https:\/\/img.youtube.com\/vi\/${videoId}\/maxresdefault.jpg`,\r\n            `https:\/\/img.youtube.com\/vi\/${videoId}\/hqdefault.jpg`,\r\n            `https:\/\/img.youtube.com\/vi\/${videoId}\/mqdefault.jpg`,\r\n            `https:\/\/img.youtube.com\/vi\/${videoId}\/default.jpg`\r\n        ];\r\n    }\r\n\r\n    function createThumbnailWithFallback(videoId) {\r\n        const thumbnailUrls = getThumbnailUrls(videoId);\r\n        let currentIndex = 0;\r\n        const img = document.createElement('img');\r\n        img.className = 'ytdv-thumbnail';\r\n        img.alt = 'Video thumbnail';\r\n\r\n        function tryNextThumbnail() {\r\n            if (currentIndex < thumbnailUrls.length) {\r\n                img.src = thumbnailUrls[currentIndex];\r\n                currentIndex += 1;\r\n            } else {\r\n                img.src = 'data:image\/svg+xml;charset=UTF-8,' + encodeURIComponent('<svg width=\"1280\" height=\"720\" viewBox=\"0 0 1280 720\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect width=\"1280\" height=\"720\" fill=\"#1e3c72\"\/><text x=\"640\" y=\"360\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ffffff\" font-family=\"Arial\" font-size=\"42\">Thumbnail not available<\/text><\/svg>');\r\n            }\r\n        }\r\n\r\n        img.onerror = tryNextThumbnail;\r\n        tryNextThumbnail();\r\n        return img;\r\n    }\r\n\r\n    function pick(source, keys, fallback = '') {\r\n        for (const key of keys) {\r\n            if (source && source[key] !== undefined && source[key] !== null && String(source[key]).trim() !== '') {\r\n                return source[key];\r\n            }\r\n        }\r\n        return fallback;\r\n    }\r\n\r\n    function normalizeVideoData(payload) {\r\n        const direct = payload || {};\r\n        const dataLevel = direct.data || direct.result || direct.video || {};\r\n        const nestedLevel = dataLevel.data || dataLevel.video || dataLevel.result || {};\r\n        const source = Object.assign({}, direct, dataLevel, nestedLevel);\r\n\r\n        return {\r\n            title: getValue(pick(source, ['name', 'title', 'videoTitle'], 'No title available')),\r\n            description: getValue(pick(source, ['description', 'videoDescription', 'shortDescription', 'descriptionText'], 'No description available for this video.')),\r\n            channelName: getValue(pick(source, ['channelName', 'author_name', 'authorName', 'channel'], 'Unknown Channel')),\r\n            channelUrl: safeUrl(pick(source, ['channelUrl', 'author_url', 'authorUrl'], '#')),\r\n            viewCount: getValue(pick(source, ['viewCount', 'views', 'view_count'], 'N\/A')),\r\n            likesCount: getValue(pick(source, ['likesCount', 'likeCount', 'likes', 'like_count'], 'N\/A')),\r\n            publishDate: getValue(pick(source, ['publishDate', 'publishedAt', 'uploadDate', 'datePublished'], 'N\/A')),\r\n            captions: pick(source, ['captions', 'captionTracks', 'subtitles'], null)\r\n        };\r\n    }\r\n\r\n    function setLoadingState(active) {\r\n        const button = findBtn();\r\n        if (!button) return;\r\n\r\n        if (active) {\r\n            button.disabled = true;\r\n            button.innerHTML = '<span class=\"ytdv-inline-spinner\"><\/span> Processing...';\r\n        } else {\r\n            button.disabled = false;\r\n            button.innerHTML = `\r\n                <svg class=\"ytdv-btn-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                    <path d=\"M9.5,3L8,6.5H4.5L7.91,9.91L6.5,16.5L9.5,14L12.5,16.5L11.09,9.91L14.5,6.5H11L9.5,3Z\"><\/path>\r\n                <\/svg>\r\n                Extract Description\r\n            `;\r\n        }\r\n    }\r\n\r\n    window.ytdvPasteFromClipboard = async function () {\r\n        const field = input();\r\n        if (!field) return;\r\n\r\n        try {\r\n            if (!navigator.clipboard || !navigator.clipboard.readText) {\r\n                throw new Error('Clipboard access is not available in this browser.');\r\n            }\r\n            field.value = await navigator.clipboard.readText();\r\n            field.focus();\r\n        } catch (error) {\r\n            window.alert('Unable to access clipboard. Please paste manually.');\r\n        }\r\n    };\r\n\r\n    window.ytdvCopyDescription = async function () {\r\n        const descriptionBox = $('#ytdv-descriptionText');\r\n        const copyBtn = $('.ytdv-copy-btn');\r\n        if (!descriptionBox || !copyBtn) return;\r\n\r\n        const text = descriptionBox.dataset.raw || descriptionBox.textContent || '';\r\n\r\n        try {\r\n            await navigator.clipboard.writeText(text);\r\n            copyBtn.classList.add('ytdv-copied');\r\n            copyBtn.innerHTML = `\r\n                <svg class=\"ytdv-copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                    <path d=\"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z\"><\/path>\r\n                <\/svg>\r\n                Copied!\r\n            `;\r\n\r\n            setTimeout(function () {\r\n                copyBtn.classList.remove('ytdv-copied');\r\n                copyBtn.innerHTML = `\r\n                    <svg class=\"ytdv-copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                        <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"><\/path>\r\n                    <\/svg>\r\n                    Copy\r\n                `;\r\n            }, 1800);\r\n        } catch (error) {\r\n            window.alert('Failed to copy description. Please select and copy manually.');\r\n        }\r\n    };\r\n\r\n    window.ytdvFindDescription = async function () {\r\n        if (isProcessing) return;\r\n\r\n        const field = input();\r\n        const query = field ? field.value.trim() : '';\r\n\r\n        if (!query) {\r\n            showError('Please enter a YouTube URL or video ID.');\r\n            return;\r\n        }\r\n\r\n        const videoId = extractVideoId(query);\r\n        if (!videoId) {\r\n            showError('Invalid YouTube URL or video ID.');\r\n            return;\r\n        }\r\n\r\n        isProcessing = true;\r\n        setLoadingState(true);\r\n        loading().style.display = 'block';\r\n        results().style.display = 'none';\r\n        results().innerHTML = '';\r\n\r\n        try {\r\n            const formData = new FormData();\r\n            formData.append('url_or_id', query);\r\n\r\n            const response = await fetch('https:\/\/tools.xrespond.com\/api\/youtube\/video-descriptions', {\r\n                method: 'POST',\r\n                body: formData\r\n            });\r\n\r\n            if (!response.ok) {\r\n                throw new Error('API request failed. Please try again later.');\r\n            }\r\n\r\n            const payload = await response.json();\r\n            const videoData = normalizeVideoData(payload);\r\n            displayResults(videoData, videoId);\r\n            field.value = '';\r\n        } catch (error) {\r\n            showError(error.message || 'Something went wrong. Please try again.');\r\n        } finally {\r\n            isProcessing = false;\r\n            setLoadingState(false);\r\n            loading().style.display = 'none';\r\n        }\r\n    };\r\n\r\n    window.ytdvSearchAgain = function () {\r\n        results().style.display = 'none';\r\n        results().innerHTML = '';\r\n        const field = input();\r\n        if (field) {\r\n            field.value = '';\r\n            field.focus();\r\n        }\r\n        wrapper.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n    };\r\n\r\n    function showError(message) {\r\n        results().innerHTML = `\r\n            <div class=\"ytdv-error\">\r\n                <div class=\"ytdv-error-icon\">\u26a0\ufe0f<\/div>\r\n                <div class=\"ytdv-error-title\">Error<\/div>\r\n                <p class=\"ytdv-error-message\"><strong>Message:<\/strong> ${escapeHtml(message)}<\/p>\r\n                <p class=\"ytdv-error-details\">Please check your YouTube URL and try again.<\/p>\r\n            <\/div>\r\n        `;\r\n        results().style.display = 'block';\r\n    }\r\n\r\n    function captionsMarkup(captions) {\r\n        if (!captions) return '';\r\n\r\n        let captionText = 'Available';\r\n        if (Array.isArray(captions)) {\r\n            captionText = captions.length ? `${captions.length} caption track(s) found` : 'No captions found';\r\n        } else if (typeof captions === 'string') {\r\n            captionText = captions;\r\n        }\r\n\r\n        return `\r\n            <div class=\"ytdv-captions-section\">\r\n                <div class=\"ytdv-section-header\">\r\n                    <div class=\"ytdv-section-title\">\r\n                        <div class=\"ytdv-section-icon\">\r\n                            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                <path d=\"M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M10,16H5V14H10V16M19,16H12V14H19V16M19,12H5V10H19V12Z\"><\/path>\r\n                            <\/svg>\r\n                        <\/div>\r\n                        <div>\r\n                            <div class=\"ytdv-section-heading\">Captions<\/div>\r\n                            <p class=\"ytdv-section-subheading\">Caption availability<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ytdv-captions-content\">\r\n                    <div class=\"ytdv-caption-item\">\r\n                        <span class=\"ytdv-caption-dot\"><\/span>\r\n                        <span class=\"ytdv-caption-label\">Status:<\/span>\r\n                        <span class=\"ytdv-caption-value\">${escapeHtml(captionText)}<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n    }\r\n\r\n    function displayResults(videoData, videoId) {\r\n        const channelHref = videoData.channelUrl || '#';\r\n\r\n        results().innerHTML = `\r\n            <div class=\"ytdv-video-card\">\r\n                <div class=\"ytdv-video-header\">\r\n                    <div class=\"ytdv-video-title\">${escapeHtml(videoData.title)}<\/div>\r\n\r\n                    <div class=\"ytdv-thumbnail-container\" id=\"ytdv-thumbnailContainer\"><\/div>\r\n\r\n                    <div class=\"ytdv-video-info\">\r\n                        <div class=\"ytdv-channel-info\">\r\n                            <div class=\"ytdv-channel-avatar\">\r\n                                <svg class=\"ytdv-channel-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                    <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0,0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0,0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0,0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\"><\/path>\r\n                                <\/svg>\r\n                            <\/div>\r\n                            <div class=\"ytdv-channel-details\">\r\n                                <div class=\"ytdv-channel-name\">\r\n                                    <a href=\"${escapeHtml(channelHref)}\" class=\"ytdv-channel-link\" target=\"_blank\" rel=\"noopener noreferrer\">${escapeHtml(videoData.channelName)}<\/a>\r\n                                <\/div>\r\n                                <p class=\"ytdv-verified-text\">YouTube Channel<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"ytdv-stats-grid\">\r\n                            <div class=\"ytdv-stat-card ytdv-views\">\r\n                                <div class=\"ytdv-stat-icon\">\r\n                                    <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                        <path d=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"><\/path>\r\n                                    <\/svg>\r\n                                <\/div>\r\n                                <div class=\"ytdv-stat-label\">Views<\/div>\r\n                                <div class=\"ytdv-stat-value\">${escapeHtml(videoData.viewCount)}<\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"ytdv-stat-card ytdv-likes\">\r\n                                <div class=\"ytdv-stat-icon\">\r\n                                    <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                        <path d=\"M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5 2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z\"><\/path>\r\n                                    <\/svg>\r\n                                <\/div>\r\n                                <div class=\"ytdv-stat-label\">Likes<\/div>\r\n                                <div class=\"ytdv-stat-value\">${escapeHtml(videoData.likesCount)}<\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"ytdv-stat-card ytdv-published\">\r\n                                <div class=\"ytdv-stat-icon\">\r\n                                    <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                        <path d=\"M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z\"><\/path>\r\n                                    <\/svg>\r\n                                <\/div>\r\n                                <div class=\"ytdv-stat-label\">Date<\/div>\r\n                                <div class=\"ytdv-stat-value\">${escapeHtml(videoData.publishDate)}<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"ytdv-description-section\">\r\n                    <div class=\"ytdv-section-header\">\r\n                        <div class=\"ytdv-section-title\">\r\n                            <div class=\"ytdv-section-icon\">\r\n                                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                    <path d=\"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"><\/path>\r\n                                <\/svg>\r\n                            <\/div>\r\n                            <div>\r\n                                <div class=\"ytdv-section-heading\">Video Description<\/div>\r\n                                <p class=\"ytdv-section-subheading\">Copy the full video description<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <button type=\"button\" class=\"ytdv-copy-btn\" onclick=\"ytdvCopyDescription()\">\r\n                            <svg class=\"ytdv-copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"><\/path>\r\n                            <\/svg>\r\n                            Copy\r\n                        <\/button>\r\n                    <\/div>\r\n\r\n                    <div class=\"ytdv-description-content\" id=\"ytdv-descriptionText\"><\/div>\r\n                <\/div>\r\n\r\n                ${captionsMarkup(videoData.captions)}\r\n\r\n                <div class=\"ytdv-search-again-section\">\r\n                    <button type=\"button\" class=\"ytdv-btn-search-again\" onclick=\"ytdvSearchAgain()\">\r\n                        <svg class=\"ytdv-search-again-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                            <path d=\"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z\"><\/path>\r\n                        <\/svg>\r\n                        Search Again\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n\r\n        const thumbnailContainer = $('#ytdv-thumbnailContainer');\r\n        if (thumbnailContainer) {\r\n            thumbnailContainer.appendChild(createThumbnailWithFallback(videoId));\r\n        }\r\n\r\n        const descriptionText = $('#ytdv-descriptionText');\r\n        if (descriptionText) {\r\n            descriptionText.textContent = videoData.description;\r\n            descriptionText.dataset.raw = videoData.description;\r\n        }\r\n\r\n        results().style.display = 'block';\r\n        results().scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n    }\r\n\r\n    const field = input();\r\n    if (field) {\r\n        field.addEventListener('keydown', function (event) {\r\n            if (event.key === 'Enter' && !isProcessing) {\r\n                event.preventDefault();\r\n                window.ytdvFindDescription();\r\n            }\r\n        });\r\n    }\r\n})();\r\n<\/script><\/div>\n<div class=\"tc-wp-tool-content\"><div class=\"wpc-scope-123\">\n<div class=\"tc-wp-content-root\" data-tc-wp-scope=\"1\" style=\"max-width:100%;box-sizing:border-box;isolation:isolate;min-width:0;position:relative;\">\n<div class=\"ds\">\n<div class=\"ds-inner\">\n<div class=\"ds-hb\" style=\"margin-top: 4rem;\"><\/div>\n<\/div><section class=\"ds-sec ds-bg-wh\" aria-labelledby=\"ds-h1\">\n<div class=\"ds-inner\">\n<div class=\"ds-hb\">\n<h2 id=\"ds-h1\">How <span class=\"ds-gx\">YouTube Description Viewer<\/span> Works<\/h2>\n<p>View complete YouTube video descriptions with powerful tools for searching, extracting, and analyzing content.<\/p>\n<\/div>\n<div class=\"ds-g3\" data-ds-grid=\"g1\">\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n<\/div>\n<h3>Full Description<\/h3>\n<p>View complete YouTube video descriptions in full without any truncation or hidden sections accessing all the text content creators include for context and SEO.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n<\/div>\n<h3>Description Search<\/h3>\n<p>Search videos by their description text to find exactly what you are looking for quickly uncovering content based on contextual details rather than just titles.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\/><\/svg>\n<\/div>\n<h3>Link Extract<\/h3>\n<p>Extract all links and URLs from video descriptions with a single click for easy access saving time when collecting resources references and affiliate links.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg>\n<\/div>\n<h3>Timestamp View<\/h3>\n<p>See all video timestamps listed in descriptions with direct navigation to each section enabling quick access to specific parts of long-form video content.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\/><\/svg>\n<\/div>\n<h3>Description Copy<\/h3>\n<p>Copy description text easily to your clipboard with formatting preserved for later use making it simple to reference quotes techniques or instructions offline.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\/><\/svg>\n<\/div>\n<h3>Description Info<\/h3>\n<p>View full description metadata including character count language and upload date details giving you deeper insight into how descriptions are structured and optimized.<\/p>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"ds-sec ds-bg-ow\" aria-labelledby=\"ds-h2\">\n<div class=\"ds-inner\">\n<div class=\"ds-hb\">\n<h2 id=\"ds-h2\">Key Benefits of <span class=\"ds-gx\">YouTube Description Viewer<\/span><\/h2>\n<p>Discover why content creators and researchers rely on our description viewer for their workflow.<\/p>\n<\/div>\n<div class=\"ds-g4\" data-ds-grid=\"g2\">\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Complete Text<\/h3>\n<p>See every description in full with no collapsed sections or hidden content blocking your view.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>No Login<\/h3>\n<p>View descriptions without a YouTube account or signing into any Google service whatsoever.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2c1.5 0 3 .6 4.1 1.7a5.8 5.8 0 0 1 0 8.2L12 16l-4.1-4.1a5.8 5.8 0 0 1 0-8.2C9 2.6 10.5 2 12 2z\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Unlimited Access<\/h3>\n<p>No restrictions on description viewing view as many descriptions as you want without limits.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 12h8\"\/><path d=\"M12 8v8\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Free Service<\/h3>\n<p>All description features are available at zero cost with no premium plans or hidden charges.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Quick Load<\/h3>\n<p>Descriptions load instantly with optimized performance and minimal waiting time every time.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polygon points=\"23 7 16 12 23 17 23 7\"\/><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Any Video<\/h3>\n<p>Works with any public YouTube video whether it is new trending or years old content.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Text Export<\/h3>\n<p>Export description collections to text files for offline research and content analysis projects.<\/p>\n<\/div>\n<\/article>\n<article class=\"ds-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\/><\/svg>\n<\/div>\n<div class=\"ds-cb-body\">\n<h3>Link Collection<\/h3>\n<p>Collect all links from descriptions in one organized list for easy browsing and reference.<\/p>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"ds-sec ds-bg-wh\" aria-labelledby=\"ds-h3\">\n<div class=\"ds-inner\">\n<div class=\"ds-hb\">\n<h2 id=\"ds-h3\">Who Should Use <span class=\"ds-gx\">YouTube Description Viewer<\/span><\/h2>\n<p>Explore the use cases where our description viewer delivers the most value and practical impact.<\/p>\n<\/div>\n<div class=\"ds-g3\" data-ds-grid=\"g3\">\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"\/><polyline points=\"17 6 23 6 23 12\"\/><\/svg>\n<\/div>\n<h3>SEO Analysis<\/h3>\n<p>Study description SEO strategies used by top channels to optimize your own video metadata learning keyword placement formatting and linking techniques from leaders.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"\/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"\/><\/svg>\n<\/div>\n<h3>Link Research<\/h3>\n<p>Find affiliate reference and resource links embedded in descriptions across your niche discovering partnership opportunities and useful tools mentioned by creators.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"\/><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"\/><\/svg>\n<\/div>\n<h3>Content Study<\/h3>\n<p>Analyze description writing patterns and structures used by successful content creators understanding how effective descriptions are formatted and organized.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"\/><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"\/><\/svg>\n<\/div>\n<h3>Keyword Research<\/h3>\n<p>Find valuable keywords and phrases used in descriptions to improve your video discoverability identifying high-performing terms that boost search rankings.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>\n<\/div>\n<h3>Competitor Intel<\/h3>\n<p>Monitor competitor descriptions to track their promotional strategies and content approach staying informed about how competitors optimize their video metadata.<\/p>\n<\/article>\n<article class=\"ds-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ds-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18h6\"\/><path d=\"M10 22h4\"\/><path d=\"M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14\"\/><\/svg>\n<\/div>\n<h3>Description Tips<\/h3>\n<p>Learn from effective description examples and apply proven techniques to your own videos accelerating your learning curve by studying what already works well.<\/p>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<\/div>\n<noscript><\/noscript>\n<\/div>\n<\/div><\/div>\n<\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":5345,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-homepage.php","meta":{"footnotes":""},"class_list":["post-5595","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/comments?post=5595"}],"version-history":[{"count":1,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5595\/revisions"}],"predecessor-version":[{"id":5704,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5595\/revisions\/5704"}],"up":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5345"}],"wp:attachment":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/media?parent=5595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}