Command Palette

Search for a command to run...

Quick Start

Getting Started with fetchit

Welcome! This guide walks you through installing fetchit, running it for the first time, and downloading your first video. By the end, you'll be comfortable using fetchit from your terminal to download media from hundreds of sites.

Prerequisites

Before you begin, make sure you're comfortable using a terminal (command prompt on Windows, Terminal.app on macOS, or your preferred shell on Linux). You'll need permission to install software on your machine — typically administrator or sudo access for the one-line installers.

  • Terminal basics: You should know how to open a terminal, paste a command, and read command output.
  • Operating system: fetchit supports Windows 10+, macOS 12+, and Linux (x86-64 and ARM).
  • Internet connection: The installer downloads a ~15 MB binary, and downloads themselves can be large.
  • Optional — Node.js 18+: If you prefer installing via npm, you'll need Node.js 18 or later.
fetchit does not require Python, FFmpeg, or any system dependencies. Everything is bundled into a single executable.

What is fetchit?

fetchit is a modern terminal application for downloading video and audio from the web. It was built to replace the frustrating experience of hunting for download buttons, dealing with spammy sites, or remembering arcane yt-dlp flags.

How it works under the hood

fetchit uses yt-dlp as its download engine — the same battle-tested tool that powers most video downloading software. yt-dlp supports over 2,000 websites including YouTube, Twitter/X, Instagram, TikTok, Facebook, Twitch, Vimeo, Reddit, and many more. fetchit wraps this engine in a polished terminal user interface (TUI) built with Ink and React, giving you interactive resolution pickers, real-time progress bars, and a clean experience — all inside your terminal.

Concretely, when you pass a URL to fetchit, it: (1) probes the URL with yt-dlp to extract available formats, metadata, and thumbnails; (2) presents the formats in an interactive selector sorted by quality; (3) streams the selected format to your chosen output location; and (4) prints the final file path so you can open it immediately.

Why use fetchit over yt-dlp directly?

If you know yt-dlp well, you might wonder why you'd reach for fetchit. The answer is convenience. fetchit remembers your preferences, shows you visual quality pickers with file sizes, supports audio-only extraction without memorizing flags, and handles output naming consistently. It's yt-dlp with training wheels that you never outgrow.

Why use fetchit over browser extensions?

Browser extensions can see your browsing history, sell your data, or disappear when the browser updates. fetchit is an open-source CLI tool that runs entirely on your machine. No accounts, no telemetry, no monetization. It downloads at the full speed of your connection and writes files directly to your filesystem.

Step 1: Install fetchit

Choose one of the methods below. The quick install script is recommended for most users — it requires no existing runtime and takes about 10 seconds.

Quick install (recommended)

This method downloads a standalone binary and adds it to your PATH. Toggle between platforms or package managers below:

curl -fsSL https://fetchit-cli.vercel.app/install.sh | sh

The installer places the fetchit binary in ~/.fetchit/bin/ and appends this directory to your shell configuration file (.zshrc, .bashrc, or PowerShell profile). You may need to restart your terminal or run source ~/.zshrc (or equivalent) for the change to take effect.

On macOS, if you see a security warning about the unsigned binary, openSystem Settings → Privacy & Security, scroll to the security section, and clickAllow Anyway next to the fetchit message. This only happens once.

Via npm (requires Node.js 18+)

If you already have Node.js 18 or later on your machine, you can install fetchit globally through npm. This is the same binary — not a wrapper or a JavaScript implementation.

NPM
npm install -g @vedant1521/fetchit

npm places the binary in your global Node modules bin directory, which is usually already on your PATH. Verify it worked by running fetchit --version.

Verify your installation

After installing, verify that fetchit is available and print the installed version:

CLI
fetchit --version

You should see a version number like 1.2.0 printed to your terminal. If you seecommand not found (or fetchit is not recognizedon Windows), your PATH hasn't been updated yet — try restarting your terminal or running your shell's config reload command.

You can also print the full help menu to see all available options:

CLI
fetchit --help

Step 2: Your first download

Now that fetchit is installed, let's download a video. We'll use the classic Internet Archive “Rick Astley — Never Gonna Give You Up” as our test URL.

CLI
fetchit https://youtu.be/dQw4w9WgXcQ

What you'll see

Running that command does the following, in order:

  1. Fetching video info — fetchit contacts YouTube and retrieves metadata: title, duration, available resolutions, and file sizes. This takes 1–3 seconds.
  2. Interactive picker —A list of formats appears, sorted by quality. You'll see entries like 1080p (MP4, ~45 MB), 720p (MP4, ~20 MB), andAudio only (M4A, ~3 MB). Use the arrow keys (↑/↓) to navigate and pressEnter to select.
  3. Download progress — A real-time progress bar shows download speed, ETA, and percentage complete. The bar updates smoothly as chunks arrive.
  4. Completion — When the download finishes, fetchit prints the full file path (e.g., ~/Downloads/Rick Astley - Never Gonna Give You Up [dQw4w9WgXcQ].mp4) and exits. You can now open the file in your media player of choice.
The first download may be slightly slower because yt-dlp caches some data. Subsequent downloads are faster. If you want to skip the interactive picker and grab the best quality immediately, add the --best flag — see the Common Workflows section below.

What you can download

fetchit inherits its site support from yt-dlp, which means it works with virtually every major video and audio platform on the web. Here are the most commonly used sites:

SiteURL formatNotes
YouTubeyoutube.com/watch?v=... or youtu.be/...Full support: 4K, HDR, 60fps, audio, playlists, subtitles
X / Twitterx.com/username/status/...Video and GIF downloads; inline media from tweets
Instagraminstagram.com/reel/... or instagram.com/p/...Reels, posts, stories, IGTV; highest quality available
Threadsthreads.net/@username/post/...Video and image downloads from Threads posts
TikToktiktok.com/@username/video/...Watermark-free downloads when available
Facebookfacebook.com/watch/...Public video downloads from Watch and Pages
Twitchtwitch.tv/videos/... or clipsClips, VODs, and highlights
Vimeovimeo.com/...High-quality video downloads; supports password-protected videos
Redditreddit.com/r/.../comments/...Video and audio from Reddit-hosted content
SoundCloudsoundcloud.com/...Audio downloads (track and playlist support)
LinkedInlinkedin.com/feed/update/...Public video downloads from posts
Pinterestpin.it/... or pinterest.com/pin/...Video pin downloads

In addition to these, fetchit works with thousands of other sites supported by yt-dlp, including many news outlets, educational platforms, and niche video hosts. If a site plays video in a browser, fetchit can almost certainly download it.

Understanding the output

File naming

fetchit names downloaded files using a consistent pattern:

JSON
{title} [{video_id}].{ext}

For example, downloading https://youtu.be/dQw4w9WgXcQ producesRick Astley - Never Gonna Give You Up [dQw4w9WgXcQ].mp4. The video ID is included in square brackets to guarantee uniqueness — two different videos with the same title will never collide.

Output location

By default, fetchit saves files to your system's downloads directory (~/Downloads on macOS/Linux, %USERPROFILE%\Downloads on Windows). You can change this with the -o (or --output) flag:

CLI
fetchit https://youtu.be/dQw4w9WgXcQ -o ~/Videos
CLI
fetchit https://youtu.be/dQw4w9WgXcQ -o "D:MediaDownloads"

The output path is created automatically if it doesn't exist. You can also use--output-template for advanced naming patterns — see thescriptable mode docs for details.

File format

The file extension depends on what you selected in the interactive picker. Video streams are typically .mp4 or .webm, and audio streams are .m4a,.mp3 (when transcoded), or .opus. fetchit prefers MP4/M4A when available for maximum compatibility with media players.

Common workflows

Here are the day-to-day commands you'll use most often with fetchit:

Download the best quality (no interaction)

Skip the interactive picker and automatically download the highest-resolution stream available. This is perfect for scripts or when you just want the best quality immediately.

CLI
fetchit --best https://youtu.be/dQw4w9WgXcQ

The --best flag selects the highest resolution video with the best audio track and merges them automatically. If the user has set a preference in the config, that preference is respected.

Download audio only (MP3)

Extract the audio track and convert it to MP3. This is useful for music videos, podcasts, or any content you want to listen to without the video file.

CLI
fetchit --mp3 https://youtu.be/dQw4w9WgXcQ

fetchit downloads the best available audio stream (typically Opus or M4A) and transcodes it to MP3 using FFmpeg (bundled). The output is a standalone audio file you can import into any music player.

Download a specific resolution

If you know exactly which resolution you want, you can pass it as a positional argument after the URL. This bypasses the interactive picker.

CLI
fetchit https://youtu.be/dQw4w9WgXcQ 1080p

fetchit matches the requested resolution to the closest available stream. If 1080p isn't available, it falls back to the next best option and prints a notice. Supported values include 2160p (4K), 1440p, 1080p, 720p,480p, and 360p.

Save to a custom folder

Override the default download location for a single command:

CLI
fetchit https://youtu.be/dQw4w9WgXcQ -o ~/Videos

Download a playlist

fetchit supports YouTube playlists and other curated collections. When you pass a playlist URL, fetchit enters a playlist-aware mode:

CLI
fetchit https://youtube.com/playlist?list=PL...

See the playlists guide for detailed instructions on playlist handling, including downloading specific playlist items and parallel downloads.

WorkflowCommand
Interactive downloadfetchit <url>
Best quality, no pickerfetchit --best <url>
Audio-only MP3fetchit --mp3 <url>
Specific resolutionfetchit <url> 1080p
Custom output folderfetchit <url> -o ~/Videos
Show helpfetchit --help

What's next

You've installed fetchit and downloaded your first video. Here are some natural next steps:

  • Interactive mode deep-dive — Learn about the TUI components: format filtering, thumbnail previews, download queueing, and keyboard shortcuts.
  • Scriptable mode & configuration — Use fetchit entirely non-interactively, set default preferences, configure output templates, and integrate it into your shell scripts or automation pipelines.
  • Playlist downloading — Download entire YouTube playlists with a single command, choose specific items, and control concurrency.
  • Advanced installation — Build from source, install on headless servers, or set up fetchit in CI/CD environments.
  • Troubleshooting — Fix common issues: download failures, rate limiting, missing formats, and platform-specific quirks.
If you run into anything unexpected, open an issue on the GitHub repository. fetchit is actively maintained and new releases ship regularly.
Was this page helpful?