← Apps
PlayTube icon

Network

PlayTube

Paste a video link and watch it in a clean player, with no ads.

Get for Mac
.dmg · 320 KB · or download .zip
Category
Network
Requires
macOS 13+
Size
320 KB
Price
Free

Preview

Screenshot of PlayTube running on a Mac

About PlayTube

PlayTube plays a video from a pasted link inside its own window, using public Invidious servers instead of YouTube's site.

What it does

  • Paste and play. Paste a watch, youtu.be or shorts link and press Play. A link that is not a video shows a clear error.
  • Finds a server that works. It loads the public Invidious server list (kept for 6 hours, with a built-in list as backup), keeps the ones with an open API, and tries the five with the best uptime one after another until a video plays.
  • Two ways to play. First it plays the video's own stream in a native player. If that fails on a server, it falls back to that server's own embedded player.
  • Always shows what happened. A status line names the server that is playing. If every server fails, the app lists what each one answered, so you can see why.
  • Open in browser. Opens the video's page on the best Invidious server. It never opens youtube.com. Retry tries the whole chain again, and the last link you pasted is remembered.

Notes

Public Invidious servers are run by volunteers, and some go down or get blocked without notice. If one video will not play, press Retry in a minute. Nothing in this app talks to youtube.com directly.

Information

Developer
SiliconDevKit (generated by AI from a prompt)
Category
Network
Compatibility
macOS 13 or later, Apple silicon. Apple silicon Macs only (M1 or later), not Intel
Size
320 KB (.dmg)
Latest version
1.1
Price
Free
Signing
Ad-hoc signed, not notarized

The prompt behind it

This app was generated from the prompt below. Paste it into SiliconDevKit to build your own version, then change it however you like.

A macOS video player app called PlayTube. The user pastes a YouTube URL (watch, youtu.be or shorts) into a field and presses Play. The video plays inside the app. Extract the 11-character video ID, and show a clear error if it is invalid. Playback must come only from Invidious instances, never from YouTube. Fetch https://api.invidious.io/instances.json (cache it on disk for 6 hours, with a built-in list of a few instances as a fallback), keep https instances where api is true, rank them by uptime and try the top 5 in turn. For each instance: GET {instance}/api/v1/videos/{id} with a 6 second timeout and play the best muxed stream from formatStreams in AVPlayer (retry once with ?local=true); if that fails, load {instance}/embed/{id} in a WKWebView; then move on to the next instance. If all fail, list what each instance returned (name, HTTP status or error) and show Retry and Open in browser buttons. Open in browser must always open the best-ranked Invidious instance's page, https://{instance}/watch?v={id}, never youtube.com, and no part of the app (including status and error text) may open or link to youtube.com. Show the active instance in a status line, a spinner while trying, the title and channel when known, and remember the last pasted URL. Use only built-in frameworks.

What it cost

The cost of this demo was not recorded in our usage log. Demos built through the live build system show every run with its tokens and cost.

Version tree

Every change to this app is a new version. Use any build as a template to start your own copy from it; forks that their makers shared appear as branches.

  1. Version 1.0Oct 7, 2026

    A macOS video player app called PlayTube. The user pastes a YouTube URL (watch, youtu.be or shorts) into a field and presses Play. The video plays inside the app. Also add an "Open in browser" button. Extract the 11-character video ID from the URL. If it is invalid, show a clear error. Playback uses a fallback chain: 1. Fetch https://api.invidious.io/instances.json (cache it on disk for 6 hours, and fall back to a built-in list of a few instances if the fetch fails). Keep only https instances where api is true. Rank them by uptime and take the top 5. Try each in turn. 2. For each instance, GET {instance}/api/v1/videos/{id} with a 6 second timeout. If it fails, times out, or formatStreams is empty, go to the next instance. Pick the highest-quality entry in formatStreams (a muxed mp4) and play it with AVPlayer in a SwiftUI view with native controls. If playback fails, retry once with ?local=true, then move on to the next instance. 3. If all 5 fail, fall back to YouTube's official embedded player in a WKWebView. Load the HTML with loadHTMLString and baseURL https://www.youtube.com so the embed doesn't refuse to play. 4. If that fails too, show a message and the Open in browser button. Show which source is playing (instance name or "YouTube embed") in a small status line. "Open in browser" opens https://{current or best instance}/watch?v={id}, or the youtube.com link if none responded. Include a Retry button, show the video title and channel when known, and remember the last pasted URL. Use only built-in frameworks. Show a loading spinner while trying instances.

    Paste a YouTube link and play it in-app via Invidious instances with a YouTube embed fallback.

    .dmg .zip Source Pro
  2. Version 1.1Oct 7, 2026

    Remove the YouTube embedded player and every direct youtube.com playback path. Playback must come only from Invidious instances, never from YouTube. Keep the instance chain: fetch https://api.invidious.io/instances.json (cache it for 6 hours, with the built-in list as a fallback), keep https instances with api true, rank by uptime, and try the top 5. For each instance, try in this order: 1. {instance}/api/v1/videos/{id}: play the best muxed stream from formatStreams in AVPlayer. If it fails, retry once with ?local=true. 2. If that fails, load {instance}/embed/{id} in a WKWebView (it's the instance's own player, not YouTube's). Then move on to the next instance. If all fail, show a list of what each instance returned (name, HTTP status or error) and the Retry and "Open in browser" buttons. "Open in browser" opens https://{best instance}/watch?v={id}. Show the active instance in the status line. "Open in browser" must always open the best-ranked Invidious instance's watch page, https://{instance}/watch?v={id}, using the instance that is currently playing or, if none worked, the top-ranked one. Never open or link to youtube.com anywhere in the app, including the "Open in browser" button, status messages and error text.

    Paste a video link and play it in-app through Invidious instances only.

    .dmg .zip Source Pro

Opening it for the first time

  1. Open the .dmg and drag PlayTube onto the Applications folder.
  2. Open it from Applications. macOS may say it can’t check the app for malicious software. Click Done.
  3. Open System Settings → Privacy & Security and click Open Anyway. This is needed once. Why this happens. To share an app without the warning, see how to notarize it.

You might also like

  • Agent Swarm icon

    Agent Swarm

    Send one task to Claude, Gemini and Hermes at once.

    Get
  • ClipShelf icon

    ClipShelf

    A menu bar clipboard history with search.

    Get
  • AppPulse icon

    AppPulse

    See which apps are using your CPU and memory.

    Get
  • Scribe icon

    Scribe

    Markdown notes with a live preview.

    Get