tonhowtf/omniget · error

Unsupported URL. Check that the link is correct.

Error message

Unsupported URL. Check that the link is correct.

What it means

Raised when yt-dlp reports 'unsupported url' or 'no suitable infojson': the extractor cannot handle the given link or cannot obtain a valid info JSON for it. The wrapper maps this to a friendly message telling the user to verify the link.

Solutions

  1. Verify the URL points directly to a supported media page
  2. Update yt-dlp (pip install -U yt-dlp or via app Settings → Dependencies) since extractors change frequently
  3. Test the same URL with `yt-dlp -J <url>` on the CLI to confirm
  4. Use `yt-dlp --list-extractors | grep <site>` to check extractor support

Example fix

// before
let out = run_ytdlp(url);
// after
if lower.contains("unsupported url") || lower.contains("no suitable infojson") {
    return anyhow!("Unsupported URL. Check that the link is correct.");
}
Defensive patterns

Strategy: validation

Validate before calling

// sanity-check the URL before handing it to yt-dlp
let parsed = url::Url::parse(input)?;
if !parsed.has_host() { return Err(anyhow!("Invalid or unsupported URL")); }

Try / catch

match result {
    Err(e) if e.to_string().contains("Unsupported URL") => {
        eprintln!("Check the link; update yt-dlp if the site should be supported");
    }
    other => other?,
}

Prevention

When it happens

Trigger: Calling download/info extraction with a URL yt-dlp has no extractor for, a URL to a page with no media, or a site whose extractor broke after a site-side layout/API change.

Common situations: Typos or truncated links, links to login-walled pages masquerading as public, expired share links, or outdated yt-dlp that lacks a new site extractor.

Understand the failure class

Background: "Invalid URL" / "URL cannot be empty": fix the malformed or missing URL behind request-construction failures — this error's family across 50 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/a467ec618613f0dd. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/ytdlp.rs:4486

        return anyhow!("Video unavailable or removed.");
    }
    if lower.contains("private video") {
        return anyhow!("This video is private.");
    }
    if lower.contains("copyright") {
        return anyhow!("Video blocked due to copyright.");
    }
    if lower.contains("geo") && lower.contains("block") {
        return anyhow!("Video restricted in your region.");
    }
    if lower.contains("timed out") || lower.contains("timeout") {
        return anyhow!("Connection timed out. Check your internet and try again.");
    }
    if lower.contains("ffmpeg") && (lower.contains("not found") || lower.contains("no such file")) {
        return anyhow!("FFmpeg not found. Install FFmpeg to download this format.");
    }
    if lower.contains("unsupported url") || lower.contains("no suitable infojson") {
        return anyhow!("Unsupported URL. Check that the link is correct.");
    }
    if lower.contains("unable to download") && lower.contains("webpage") {
        return anyhow!("Failed to access the page. Check the link and your connection.");
    }
    if lower.contains("is not a valid url") || lower.contains("no video formats") {
        return anyhow!("No video formats found for this link.");
    }

    let last_error_line = stderr
        .lines()
        .rev()
        .find(|l| {
            let t = l.trim().to_lowercase();
            t.starts_with("error:") || t.starts_with("error ")
        })
        .unwrap_or("")
        .trim();

View on GitHub (pinned to 8600b91f42)