Install
macOS: download Playhead-macos.dmg, open it and drag Playhead into Applications. It needs macOS 12 or later and runs natively on Apple Silicon and Intel Macs.
Windows: download Playhead-windows-setup.exe and run it. It needs 64-bit Windows 10 or 11 and installs for your user only (no administrator prompt).
Updates install themselves: when a new build is out, Playhead shows what changed and an Install Update button, downloads it, checks its signature and restarts into the new version. Your profiles, progress and settings are kept. Settings → About → Updates has Check now and the switches. (Test build 3 and older can't update themselves: install a newer build by hand once.)
First launch
Windows: the installer isn't code-signed yet, so SmartScreen shows "Windows protected your PC". Click More info, then Run anyway.
macOS: test builds aren't notarized by Apple, so macOS blocks the first launch:
- Open Playhead from Applications. When macOS says it can't verify it, click Done.
- Open System Settings → Privacy & Security, scroll down to "Playhead was blocked" and click Open Anyway.
- Confirm with your password or Touch ID.
Right-click → Open no longer skips this check on macOS 15 and later. Alternative for Terminal users:
xattr -dr com.apple.quarantine /Applications/Playhead.app
Android TV and Google TV
Playhead runs on Google TV and Android TV: Chromecast with Google TV, the Google TV Streamer, NVIDIA Shield, and Sony, TCL or Hisense TVs. It isn't in the Play Store, so you install it once yourself; after that it updates itself. Use the remote as usual: arrows to move, OK to select, Back to go back.
Without a computer: the Downloader app
- Turn on developer mode: Settings → System → About, then select Android TV OS build seven times, until the TV says you are now a developer.
- Install Downloader (by AFTVnews) from the Play Store on the TV.
- Open Downloader and enter
miloshampl.github.io/playhead-releases/apk. - When Android says it can't install apps from Downloader, choose Settings, switch Downloader to Allowed, press Back once and choose Install.
- Open Playhead from your apps. You can delete the downloaded file in Downloader afterwards.
From a computer: wireless ADB
- Turn on developer mode as above, then open Settings → System → Developer options → Wireless debugging, switch it on and choose Pair device with pairing code.
- On a computer on the same Wi-Fi with Android's platform-tools
installed, run
adb pair IP:PORTwith the address shown on the pairing screen and type the six-digit code. - Then
adb connect IP:PORTwith the address shown on the Wireless debugging screen, andadb install Playhead-android.apkwith the APK from the latest release.
Older Android TV devices without Wireless debugging: switch on Network debugging (or ADB debugging) in Developer
options, run adb connect TV-IP:5555 and accept the prompt on the TV. The TV's IP address is under
Settings → Network & Internet.
Updates on the TV
When a new build is out, Playhead shows Install update. The first time, Android asks to allow Playhead to install apps: choose Settings, switch Playhead to Allowed and press Back once. From then on updates install by themselves in a few seconds (Android 12 and later). Playhead closes to update; open it again from your apps.
TMDB catalogue
Posters, cast, descriptions and the full movie and series catalogue come from The Movie Database. It works out of the box: Playhead comes with a key built in.
You can use your own free key instead, for example if the built-in one ever stops working:
- In Playhead, open Settings → Catalog and click Open TMDB API page. Sign in, or create a free account.
- Request a key (Developer, personal use) if you have none, then copy the API Key or the API Read Access Token.
- Switch back to Playhead. It spots the key on the clipboard and offers to use it. You can also paste it into the field and click Connect.
Your own key replaces the built-in one. Remove key switches back.
Sources
Out of the box Playhead searches one source: the Internet Archive's collection of public-domain films. It ships with no other sources or indexers configured; anything else is yours to add.
For that it has an indexer engine built in — no Prowlarr, Jackett or other server to run. It reads the same indexer definitions Prowlarr uses, fetched from Prowlarr's public definitions repository when you add an indexer and kept on your Mac.
- Settings → Sources lists your indexers first, with their status, response time and categories. Test / Test all checks them; Add indexer searches the catalogue for the indexer you want; Update definitions fetches the latest versions. None is added unless you add it.
- An indexer that keeps failing is paused for a while and retried automatically. Sites behind Cloudflare's browser check show as blocked — Playhead doesn't try to get around it.
- Indexers that need an account show which login they support; some login types aren't supported yet.
- Below them, Other sources keeps the Internet Archive (public-domain films, built in) and lets you add your own Torznab indexer (Prowlarr, Jackett) or a Stremio add-on URL.
You are responsible for the sources you add and for what you search for and play.
On a movie or episode page, Playhead picks the best release for your quality preset (Settings → Quality: Fast start, Balanced, Best quality), checks the top candidates' swarms live, and shows the pick under Play. Choose source lists every release with its score and the reasons some were filtered out.
Playing
- Buffering shows its cause ("Finding peers…", "3.1 of 12 Mb/s needed"). If a source keeps stalling, Playhead counts down and switches to the next-best source at the same position.
- Subtitles: embedded tracks are picked by your preferred language (Settings → Subtitles). Drag an
.srt,.assor.vttfile onto the player to add one. Size, colour, background and position are in the player's settings. - Right-click the video for the menu: audio and subtitle tracks, speed, aspect and zoom, chapters, sleep timer, mini player, screenshot.
- Continue watching: progress is saved while you watch; a title counts as watched at 90 %.
Keyboard shortcuts
Press ? in the player to see this list.
| Space / K | Play / pause |
| ← → | Back / forward 5 s |
| J L | Back / forward 10 s |
| ⇧← ⇧→ | Back / forward 1 min |
| Page Up Page Down | Previous / next chapter |
| T | Jump to time |
| S | Skip intro / credits |
| , . | Previous / next frame |
| [ ] ⌫ | Slower / faster / normal speed |
| ↑ ↓ M | Volume up / down / mute |
| A C | Next audio / subtitle track |
| Z X | Subtitles earlier / later (100 ms) |
| ⇧Z ⇧X | Audio earlier / later (50 ms) |
| F or double-click | Fullscreen |
| P | Mini player (always on top) |
| R | Aspect / zoom |
| ⇧S | Screenshot to Pictures/Playhead |
| N | Next episode |
| I | Stats for nerds |
| Esc | Exit fullscreen / close |
Profiles and sync
Each profile has its own watch history, My List and playback preferences; switch at the bottom of the sidebar. Guest lets someone watch without keeping anything.
Settings → Profiles & data exports everything to one file and imports it back (API keys only if you choose to include them). Sync keeps several Macs in step through a folder you already sync — iCloud Drive, Dropbox or Syncthing; the newest change wins.
Disk and network
- Cache: Playhead keeps at most the cache limit on disk while playing (1 GB by default, Settings → Cache), keeps a stopped title for 5 minutes so you can resume instantly, then removes it. Settings → Cache → Clear cache removes it now.
- Uploading: like every BitTorrent client, Playhead shares pieces with other peers while it plays, capped at 1 MB/s by default (Settings → Network). Other peers can see your IP address.
- No login, no server, no data collection. Playhead needs no account, has no servers of its own and collects nothing: no analytics, tracking or telemetry. Everything runs on your Mac.
- What leaves your computer: requests to The Movie Database for posters and details, searches to the Internet Archive and to sources you add, indexer definitions from GitHub when you add an indexer, BitTorrent traffic while you watch, a version check at launch and once a day (see below), and OpenSubtitles requests if you add a key. Nothing else.
- Update checks: at launch and once a day Playhead downloads one small static file from this site —
appcast.xmlon macOS,appcast-windows.xmlon Windows,latest.jsonelsewhere — to see whether a newer version exists. The request carries nothing about you beyond what any web request does: your IP address, and the app's name and version in the User-Agent. No account, no identifiers, no analytics. Turn it off in Settings → About → Updates. On macOS, the update itself downloads from GitHub Releases and is verified with an EdDSA signature before it installs.
Troubleshooting
"Playhead can't be opened" / "damaged"
Follow First launch. If macOS still refuses, run the xattr command there.
"No sources found"
Check Settings → Sources: at least one indexer or source must be enabled and pass its Test. The first search after installing needs a moment while indexer definitions download.
It keeps buffering
The overlay says why. A slow or dead swarm is switched automatically after a short countdown; you can also pick another release under Choose source.
Start over
Quit Playhead and delete ~/Library/Containers/com.miloshampl.playhead — this removes all profiles, progress and settings (export first if you want to keep them).
Reporting a problem
Open an issue with the version (Settings → About), your macOS or Windows version and computer model, what you did, what you expected, and what happened. A screenshot or screen recording helps a lot.
Open-source components
Playhead © 2026 Milos Hampl. It is built with open-source software, including:
- mpv (built with
-Dgpl=false, LGPL-2.1-or-later) and FFmpeg 6.0 (LGPL-3.0-or-later, without GPL or non-free parts), dynamically linked as separate frameworks inside the app. The exact builds and their sources: media-kit/libmpv-darwin-build v0.7.3 (video-full); upstream sources at mpv-player/mpv and ffmpeg.org. You may replace these frameworks with your own builds. - Flutter (BSD-3-Clause), media_kit (MIT), librqbit (Apache-2.0), flutter_rust_bridge (MIT), and many smaller Dart and Rust libraries under permissive licences.
This application uses TMDB and the TMDB APIs but is not endorsed, certified, or otherwise approved by TMDB. Movie and series data and images are provided by The Movie Database.