Troubleshooting¶
403 Forbidden Errors¶
Symptoms: Downloads fail with "403 Forbidden", may affect multiple users simultaneously.
Causes:
- YouTube API changes (most common)
- Rate limiting / IP blocks
- Outdated YouTube library dependency
Solutions:
- The tool automatically retries with different download strategies
- Try a longer timeout:
ytdl-go -timeout 10m URL - For audio, ensure FFmpeg is installed for the fallback strategy
- Try a progressive format directly:
ytdl-go -itag 22 URL(720p) orytdl-go -itag 18 URL(360p)
Restricted Content¶
Private, age-gated, or member-only videos require authentication which is not supported. These videos are skipped automatically in playlists.
FFmpeg Not Found¶
Symptoms: Audio extraction fallback fails.
Solution: Install FFmpeg and ensure it's in your PATH:
Verify: which ffmpeg (Linux/macOS) or where ffmpeg (Windows).
Permission Denied / File Access Errors¶
- Ensure the output directory exists and is writable
- Use
-owith relative paths - Avoid special characters in custom paths
- The
-output-dirflag can constrain paths to a safe directory
Playlist Downloads Incomplete¶
- Private or deleted videos are skipped automatically
- Region-restricted content is skipped with a warning
- A summary at the end shows success/failure counts
Web Port Already in Use¶
ytdl-go -web retries on higher ports automatically. Check startup logs for the selected URL. When running the frontend dev server, align the proxy target:
VITE_API_PROXY_TARGET=http://127.0.0.1:<port> npm run dev
```
Library Metadata/Thumbnails Missing¶
New downloads write sidecar metadata used by the web UI. Legacy files without sidecars still load but may appear under "Unknown" buckets until re-downloaded.
Debug Mode¶
For detailed diagnostics:
ytdl-go -log-level debug URL
```