Introduction
Invidious is the flagship alternative frontend for YouTube. It fetches videos from YouTube, strips all JavaScript tracking and ads, and serves a lightweight HTML interface. Your browser never talks to Google's servers; only the Invidious instance does.
With over 19,000 GitHub stars, Invidious is maintained by a volunteer collective (iv-org). Public instances come and go (YouTube's anti-scraping measures are a constant cat-and-mouse), which is why self-hosting for personal or small-group use is the most reliable option.
What Invidious Does
Invidious queries YouTube's internal APIs (the ones the mobile app uses), extracts video URLs + metadata, and re-serves them through its own frontend. It strips tracking, ads, and recommendations-injection, and offers features YouTube doesn't — like downloading videos, subscribing without a Google account, and RSS feeds for channels.
Architecture Overview
Browser -> [Invidious frontend (Crystal)]
|
| scrapes / calls YouTube's internal APIs
v
[YouTube]
No client-side JS from Google. Videos are proxied through Invidious
(which means Invidious bandwidth grows with usage).
Features:
- RSS feeds per channel
- No account subscriptions (cookie-based local storage)
- Full account mode: import YT subscriptions, create playlists
- Trending, popular, search without ads
- Download videos / audio-only
- Embedded video without trackingSelf-Hosting & Configuration
# docker-compose.yml (excerpt)
services:
invidious:
image: quay.io/invidious/invidious:latest
restart: unless-stopped
ports: ["3000:3000"]
environment:
INVIDIOUS_CONFIG: |
db:
dbname: invidious
user: kemal
password: kemal
host: invidious-db
port: 5432
check_tables: true
external_port: 443
domain: invidious.example.com
https_only: true
hmac_key: "GENERATE_A_RANDOM_STRING"
statistics_enabled: false
popular_enabled: true
hsts: true
default_user_preferences:
dark_mode: auto
quality_dash: auto
captcha_enabled: false
depends_on: [invidious-db]
invidious-db:
image: postgres:15
environment:
POSTGRES_DB: invidious
POSTGRES_USER: kemal
POSTGRES_PASSWORD: kemal
volumes:
- postgresdata:/var/lib/postgresql/data# Add to your mobile browser: pipe-pipe or NewPipe (Android) can use your
# Invidious instance as data source for better Android experienceKey Features
- No ads — stripped before reaching your browser
- No tracking — your IP/browser fingerprint never touches Google
- No account needed — subscribe via cookies or self-hosted account
- RSS feeds — subscribe to channels in any feed reader
- Download + audio-only — pull videos without ytdlp on the client
- Dark mode + customization — clean, fast UI
- Embedded player — embed videos without YouTube's tracking scripts
- Import/export YT subscriptions — move your Google subs into Invidious
Comparison with Similar Tools
| Feature | Invidious | Piped | NewPipe (Android) | yt-dlp | FreeTube (desktop) |
|---|---|---|---|---|---|
| Hosting model | Self + public | Self + public | On-device | CLI | On-device |
| Ads | Blocked | Blocked | Blocked | N/A | Blocked |
| Audio-only | Yes | Yes | Yes | Yes | Yes |
| Feed subscriptions | Yes | Yes | Yes | CLI-based | Yes |
| RSS output | Yes | Yes | No | No | No |
| Comments | Yes | Yes | Yes | No | Yes |
| Best For | Browser + self-host | Browser + self-host | Android phone | Power CLI | Desktop app |
FAQ
Q: Is using Invidious legal? A: Grey area. Scraping YouTube technically violates ToS. No one has been prosecuted for using it (and several public instances operate openly), but self-hosting in jurisdictions that honor YouTube ToS strictly could carry risk. For personal use, most users accept the trade-off.
Q: Why do public instances keep going offline? A: YouTube actively blocks scraping IPs. Public instances have a half-life of months or less. Self-hosting (with residential proxies or rotating IPs) is more reliable for heavy use.
Q: Invidious vs Piped? A: Similar goals. Piped has a polished React frontend and may hold up better against YouTube blocks. Invidious is older and more configurable. Run both and pick based on which works on your current ISP.
Q: Does it support YouTube Music? A: Audio playback works for any YouTube video (music or otherwise). For a dedicated music experience, check Hyperpipe (fork of Piped optimized for music).
Sources
- GitHub: https://github.com/iv-org/invidious
- Website: https://invidious.io
- License: AGPL-3.0