SwiftTube app icon

The iOS YouTube app for your self-hosted library

Streams from your media server. Built around YouTube downloads with PiP, background audio, and lock screen controls.

Works with
Jellyfin
Tube Archivist
SwiftTube home screen showing video feed with the mini player docked at the bottom

Not another media player.

Built from scratch for YouTube libraries and iOS.

Channels, not folders

Your library organized the way YouTube does — channels, playlists, and watch history. Not generic media categories.

Any format just plays

VP9, AV1, WebM — Jellyfin transcodes to HLS for the native iOS player. No re-downloading.

Plays from your server

Streams directly from Jellyfin or Tube Archivist. No proxy, no extraction, no YouTube dependency.

Picture in Picture

Keep watching in a floating window while you use other apps. Works just like any native iOS video player.

Lock Screen & Background Audio

Play, pause, skip, and seek from the Lock Screen and Control Center. Audio keeps playing when you lock the screen.

Mini Player & AirPlay

Persistent mini player while you browse. AirPlay to any compatible screen for the big-screen experience.

Works with your setup.

Jellyfin, Tube Archivist, or both. Connect and start watching.

Jellyfin icon

Jellyfin

Any format, any downloader

Works with any YouTube downloader that feeds into Jellyfin — Pinchflat, ytdl-sub, and others. Transcoding handles any format automatically.

Add a YouTube metadata plugin (ankenyr recommended) for channel names, thumbnails, and dates.

Tube Archivist icon

Tube Archivist

Full Tube Archivist integration

View counts, likes, subscriber counts, and full channel stats — pulled directly from your Tube Archivist API.

Requires H.264 format:

Set in Settings > Downloads > Format. New downloads use this automatically.

TA + Jellyfin

Metadata + transcoding

Install the official TA-JF plugin to sync your Tube Archivist library into Jellyfin.

Connect SwiftTube to Jellyfin instead of TA directly — you get TA's metadata (view counts, channel stats) plus Jellyfin's transcoding for any format.

Need more details? See the full setup guide on GitHub.

A clean, familiar interface.

Browse, watch, and pick up where you left off.

Onboarding screen with backend picker and server URL inputHome feed with persistent mini player at the bottomVideo detail with native player, description, channel info, and similar videosChannels list showing subscribed channels with subscriber counts and refresh datesChannel detail view with parallax banner, stats, and video listPlaylists view showing playlist thumbnails with download progressPlaylist detail showing videos with duration and metadataSettings screen with appearance, cache management, and server configuration

Try it free on TestFlight.

No account needed. Just install and connect your server.

Get the beta

Requires iOS 26.2+.

Questions or ideas? Open an issue