npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-youtube-dl

v3.1.0

Published

n8n node to download videos, audio, transcripts & subtitles via yt-dlp — plug-and-play, 1000+ sites, works in Docker

Readme

n8n-nodes-youtube-dl

npm version npm downloads License: MIT

An n8n community node for downloading videos, audio, transcripts, and subtitles from YouTube and 1000+ other sites. Powered by yt-dlp — install the node, and it just works. No Python, no FFmpeg, no Docker modifications needed.

Features

  • Download Video — Save videos in MP4 or any resolution (360p to 4K)
  • Download Audio — Extract audio tracks (WebM, M4A, Opus)
  • Get Video Info — Fetch metadata, thumbnails, formats, and stats without downloading
  • Get Transcript — Extract video transcripts/subtitles as structured text with timestamps
  • Download Subtitles — Save subtitle files in SRT, VTT, or ASS formats
  • 1000+ Sites — Works with YouTube, Vimeo, Twitter/X, TikTok, and many more
  • Plug-and-Play — Auto-downloads the latest yt-dlp binary on install; auto-fixes Alpine/musl Docker environments at runtime
  • Resolution Selection — Choose from Highest, 4K, 1440p, 1080p, 720p, 480p, 360p, or Lowest
  • Proxy Support — Route requests through HTTP, HTTPS, or SOCKS5 proxies
  • Cookie Authentication — Access age-restricted or private videos with browser cookies
  • Custom yt-dlp Flags — Pass any yt-dlp flags for advanced use cases (rate limiting, SponsorBlock, geo-bypass, etc.)
  • Zero Runtime Dependencies — The npm package has no node_modules dependencies at all
  • Memory Efficient — Streams large files instead of buffering them in memory

Installation

Via n8n Community Nodes (Recommended)

  1. Open Settings > Community Nodes in your n8n instance
  2. Enter n8n-nodes-youtube-dl
  3. Click Install

Via npm

cd ~/.n8n/custom
npm install n8n-nodes-youtube-dl

The yt-dlp binary downloads automatically during npm install. If the download fails (e.g. air-gapped environments), the node will retry automatically on first use.

Usage

Download Video

  1. Add the YouTube Downloader node to your workflow
  2. Set the operation to Download Video
  3. Enter a video URL (YouTube, Vimeo, Twitter, TikTok, or any supported site)
  4. Choose resolution: Highest, 4K, 1080p, 720p, 480p, 360p, or Lowest
  5. The node outputs binary data you can pass to Write Binary File, S3, Google Drive, etc.

Download Audio

  1. Set the operation to Download Audio
  2. Enter the video URL
  3. Choose quality: Highest or Lowest
  4. Audio is extracted in the best available format (WebM, M4A, Opus)

Get Video Info

  1. Set the operation to Get Video Info
  2. Enter the video URL
  3. Returns JSON metadata: title, description, duration, view count, upload date, channel info, thumbnails, and all available formats with codecs, bitrates, and resolutions

Get Transcript

  1. Set the operation to Get Transcript
  2. Enter the video URL
  3. Choose subtitle language (default: en)
  4. Returns the full transcript as text plus timestamped segments — perfect for AI summarization, search indexing, or content repurposing

Download Subtitles

  1. Set the operation to Download Subtitles
  2. Enter the video URL
  3. Choose language and format (SRT, VTT, or ASS)
  4. Returns the subtitle file as binary data

Node Parameters

| Parameter | Type | Description | |-----------|------|-------------| | Operation | Select | Download Video, Download Audio, Get Video Info, Get Transcript, or Download Subtitles | | Video URL | String | YouTube URL, video ID, or any URL supported by yt-dlp | | Video Quality | Select | Highest, 4K, 1440p, 1080p, 720p, 480p, 360p, or Lowest | | Audio Quality | Select | Highest or Lowest | | Language | String | Subtitle/transcript language code (e.g. en, es, fr, de, ja) | | Subtitle Format | Select | SRT, VTT, or ASS | | Output Filename | String | Custom filename (optional — auto-generated from title if blank) | | Use Proxy | Toggle | Enable proxy routing | | Proxy URL | String | http://user:pass@host:port or socks5://host:port | | Custom yt-dlp Flags | String | Additional yt-dlp flags (e.g. --limit-rate 1M --geo-bypass) |

Cookie Authentication

For age-restricted or private videos, configure YouTube Cookies credentials:

  1. Install a browser cookie export extension (e.g. EditThisCookie)
  2. Export your YouTube cookies as JSON
  3. In n8n, go to Credentials > Add Credential > YouTube Cookies
  4. Paste the JSON array

How It Works

The node uses yt-dlp, the most actively maintained video downloader. Here's how the binary management works:

  1. At install time (npm install): Downloads the latest standalone yt-dlp binary for your platform
  2. At runtime (if the binary is missing): Auto-downloads and caches the binary with curl/wget/https fallbacks
  3. On Alpine/musl (Docker): Detects the musl libc incompatibility and automatically deploys a tiny compatibility shim via LD_PRELOAD — no root access or package installation needed

Supported Platforms

| Platform | Architecture | Status | |----------|-------------|--------| | Linux (glibc) | x64, arm64 | Fully supported | | Linux (musl/Alpine) | x64, arm64 | Fully supported (auto-shim) | | macOS | x64, arm64 | Fully supported | | Windows | x64 | Fully supported |

Docker / n8n Cloud

This node works out of the box with the official n8nio/n8n Docker image (Alpine-based). No custom Dockerfile or apk install commands needed.

Output

Binary Data (Download operations)

The node returns binary data attached to the output item. Use it with:

  • Write Binary File — Save to disk
  • S3 / Google Drive / Dropbox — Upload to cloud storage
  • Send Email — Attach to emails
  • HTTP Request — POST to an API

JSON Metadata

Every operation returns structured JSON:

{
  "success": true,
  "videoId": "dQw4w9WgXcQ",
  "title": "Video Title",
  "author": "Channel Name",
  "lengthSeconds": "212",
  "viewCount": "1500000000",
  "downloadType": "video",
  "fileSize": 15234567,
  "format": "mp4"
}

The Get Video Info operation returns additional fields: description, upload date, channel URL, subscriber count, thumbnails, all available formats with codec/bitrate/resolution details, categories, tags, and live status.

The Get Transcript operation returns the full transcript text, timestamped segments with start/end times, and word count.

Environment Variables

| Variable | Description | |----------|-------------| | YT_DLP_PATH | Path to a custom yt-dlp binary (skips auto-download) | | N8N_USER_FOLDER | Custom n8n data directory (default: ~/.n8n) |

Troubleshooting

Binary not found / download fails

The node tries multiple download methods (curl, wget, Node.js https) and multiple directories. If all fail:

# Option 1: Install yt-dlp manually
pip install yt-dlp

# Option 2: Point to an existing binary
export YT_DLP_PATH=/usr/local/bin/yt-dlp

# Option 3: Reinstall the node
npm install n8n-nodes-youtube-dl

Rate limiting / bot detection

YouTube may block requests from server IPs. Solutions:

  • Configure YouTube Cookies credentials (see above)
  • Use a proxy (residential proxies work best)
  • Use the custom flags field to pass --cookies-from-browser if running locally

No subtitles found

Not all videos have subtitles. Try:

  • A different language code (e.g. en, en-US, auto)
  • The auto-generated subtitle option (enabled by default)

Legal Notice

Downloading videos may violate the Terms of Service of some platforms. This tool is intended for:

  • Downloading your own content
  • Videos with Creative Commons licenses
  • Content you have explicit permission to download

Please respect copyright laws and content creators' rights.

Development

git clone https://github.com/prakashmaheshwaran/n8n-nodes-youtube-dl.git
cd n8n-nodes-youtube-dl
npm install
npm run build
npm link  # Link to your local n8n for testing

License

MIT

Credits