📺 Morphe Patches — Android TV
Built on the Shoulders of Giants
Huge shout-out to the Morphe Team for creating this beautiful community
❓ About
I'm just like you — I enjoy watching TV and movies without being bored and annoyed to death by ads. I'll try to keep this repo updated when I can. I only do it for fun and I'm trying my best to make your viewing experience as enjoyable as possible :)
🧭 Philosophy
You bought the TV. You control the TV. You own the glass.
> — Rory Gallagher, lg-webos-dashboard (MIT). This project shares inspiration and is aligned with Rory's work.
That line is the reason this project exists. If you own the TV and pay for the service, what plays on your screen should be your call, not an ad network's. These patches hand that choice back to you:
- Your screen, your choice. Ads, pause-screen promos and ad-tracking beacons are removed or masked, so the show you picked is what plays.
- Local and transparent. Everything runs on your TV, inside the patched app. The source is open, and the seam map shows what each patch changes.
- No data collection. The patches don't phone home, and nothing is sent to this project. Several of them cut the apps' own ad-tracking calls.
- No dark patterns. Optional features stay optional and are clearly labeled.
- No weakened security by default. Anything that lowers the app's own protections (such as trusting user-installed CAs for HTTPS inspection) is off by default unless an ad-removal method needs it (today only ViX live, with AdGuard Premium), and its description says so.
📊 Patch Status
| App | What's removed | Tested version | Updated |
|-----|----------------|----------------|---------|
| 🟢 Disney+ | Ads (pre/mid-roll) + pause ads | 26.16.0+rc2-2026.09.08 | 9/14/26 |
| 🟢 Prime Video | Movie + TV-show ads (native strip) · ⚠️ stay on 6.23.23 | 6.23.23+v15.5.0.70-armv7a | 9/20/26 |
| 🟢 Netflix | Pre/mid-roll + pause ads · installs as a clone | 13.0.1 build 25028 | 9/14/26 |
| 🟢 HBO Max | All ads, incl. baked-in SSAI (ad-free stream) | 7.9.0.61 | 8/26/26 |
| 🟢 Peacock | Ads | 7.8.100 | 9/6/26 |
| 🟢 Tubi | Ads (+ opt-in analytics block) | 10.36.5000 | 9/29/26 |
| 🟢 ViX | Ads | 4.47.2_tv | 7/11/26 |
| 🟢 Pluto TV | VOD ads · live breaks masked (opt-in) | 5.66.0-leanback | 9/7/26 |
| 🟢 Paramount+ | VOD + pause ads · live untouched | 16.17.0 | 8/4/26 |
| 🟢 Twitch | Ad overlay + blanked live ads · TV build only | 13.0.0.2 | 8/22/26 |
| 🟢 ESPN | Live breaks masked (slate + mute) · VOD ads | 6.11.1 | 9/5/26 |
| 🟢 RTÉ Player | VOD ads · 🇮🇪 geo-locked | 3.160.3 | 9/14/26 |
| 🔴 Fox One | Under development | — | — |
| 🔴 MLB TV | Under development | — | — |
Details, notes and the exact download links for each app are under How to Install below.
🟢 Working 🟡 Partial/Testing 🔴 Under Development / Broken
📥 How to Install
All patches follow the same general workflow using Morphe Manager:
- Download the correct Android TV
.apkmfrom APKMirror — use the direct links below - In Morphe Manager, make sure Optimize for device architecture is OFF (see below)
- Open Morphe Manager and select the
.apkmfile - Apply the patch
⚠️ Get the Android TV build, not the phone or Fire TV build. Each direct
link below goes to the exact Android TV release on APKMirror. Several of
these apps ship a separate phone build and/or a Fire TV build under the same
package name — those will patch incorrectly or not at all. Match the **exact
version named below and download the .apkm** (App Bundle), not a
single-arch .apk. When a release lists more than one bundle, pick the one
whose architecture column includes armeabi-v7a.
🛑 Turn OFF "Optimize for device architecture" before patching.
It's an Expert-mode setting in Morphe Manager (off by default). When it's on,
Manager keeps only the CPU architecture of the device doing the patching and
throws the rest away. If you patch on a phone (arm64) and install on a TV box,
the result can be missing the armeabi-v7a native libraries that many TV
apps — and several of these patches (Prime Video, Netflix) — depend on. Typical
symptoms: the app won't install, closes immediately on launch, or runs with the
ad patch silently doing nothing. If that happens, turn the option off and patch
again. (Patching on the TV itself is unaffected, but leaving it off is always safe.)
🎬 Disney+
- Open the Disney+ (Android TV) 26.16.0+rc2-2026.09.08 release on APKMirror (version
26.16.0+rc2-2026.09.08)
26.16.0+rc1 — that is a different build. Use rc2.
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
🎭 HBO Max
About this patch: Fully ad-free by default (v1.30.0). Prefer Ad-Free Stream loads HBO's own ad-free manifest (its resiliency-fallback stream), so pre-rolls, mid-rolls and even the ad tier's stitched SSAI baked-in ads are gone — along with the ad markers/countdown — on fresh start and resume, and it loads faster. No DNS required. The legacy opt-in Block SSAI Ad Origins patch is off by default and superseded.
- Open the HBO Max 7.9.0.61 (Android TV) release on APKMirror directly (or search APKMirror for the fallback
7.7.0.78if unavailable)
com.wbd.hbomax. WarnerMedia also publishes a separate com.wbd.stream build under a near-identical name, and APKMirror's listing URLs for this app have shifted between the two before — don't trust the listing title alone. Confirm the download page shows package com.wbd.hbomax before downloading.
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
39999.
▶️ Prime Video
About this patch: Native in-app ad strip for movies and TV shows — no DNS required. ⚠️ Use6.23.23/ enginev15.5.x; do NOT update to6.24.x(enginev16) — v16 moved the ad pipeline into the native engine, so ads return there (#120). Keep auto-updates disabled. v1.37.4 hardens the strip for high-ad regions (India/EU). A rare, very large mid-roll break can still briefly freeze (spinner / "Something went wrong") — press Back, then Resume, to continue ad-free.
- Open the Prime Video (Android TV) 6.23.23+v15.5.0.70-armv7a release on APKMirror (version
6.23.23+v15.5.0.70-armv7a—armeabi-v7aonly, so Optimize for device architecture must be OFF) - Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
🟢 Working — no DNS filter needed. Ads are stripped in-app by a native
hook (libpvhook.so), so movies and TV shows play ad-free without any external
DNS blocklist, proxy, or root. Movie prerolls/mid-rolls and TV-show
prerolls/mid-rolls are all removed on the device before they play.
> ⚠️ **Stay on6.23.23(enginev15.5.x) — do NOT update to6.24.x(engine
v16).** In v16 Amazon moved the ad pipeline into the app's native engine, out
of reach of the current strip, so ads return on 6.24.x (#120).
Enable Disable auto-updates when patching (on by default) so Amazon can't
push you to v16. If you're already on 6.24.x, uninstall and reinstall 6.23.23.
> TV-show ad removal is newly shipped (v1.16.0) and in wider testing. One known
edge case: very aggressive fast-forward + resume can occasionally nudge the
playback position; it self-heals on a full playthrough and normal viewing is
unaffected. Please report anything else via an issue.
> 📄 Full write-up: see docs/PRIME_VIDEO_ANNOUNCEMENT.md
for how the current native (libpvhook.so) approach works and complete install
recommendations. The original Reddit announcement is archived for transparency at
docs/archive/2026-07_prime-video-reddit-post.md.
> 🔬 How it works under the hood: docs/PRIME_VIDEO_ATV_SYSTEM_DESIGN.md
is a reverse-engineering teardown of Prime Video's ad and playback system, and of why the patch works.
🍿 Netflix
About this patch: Native in-app ad strip (pre-roll, mid-roll, pause-screen ad), no DNS required. Installs as a side-by-side clone — keep stock Netflix installed.
🟢 Working — no DNS filter needed. Pre-rolls, mid-rolls, and the
full-screen pause-screen ad are removed in-app by an in-process script that
the app runs itself at launch (no PC, no root, no frida server). Verified
on-device: Netflix's servers still deliver real ad breaks and none of them play.
> ℹ️ Netflix's ad logic is downloaded JavaScript, not baked into the APK. That
means Netflix can change how ads are delivered server-side at any time, with no
app update — so an ad can occasionally reappear until the in-app strip is
re-pointed at the new delivery path. The strip already covers several such paths
(dynamic server-side insertion and the legacy manifest model) and is kept
updated to match. If you ever see an ad, first make sure you're on the latest
patch; if it persists, please open an issue.
> 🔐 Two apps, on purpose — keep BOTH installed. Netflix on a TV is a
preinstalled, Netflix-signed system app that can't be replaced or uninstalled
without root, so the patch installs as a separate clone
(com.netflix.ninja.clone) next to it. The clone passes Netflix's built-in
tamper check by reading the stock app's genuine signature — so **stock
Netflix must stay installed and enabled** (you just never open it; letting it
auto-update is fine). Log into the clone and use that. Don't disable or
uninstall stock Netflix, or the clone won't start.
- Open the Netflix (Android TV) 13.0.1 build 25028 release on APKMirror (publisher Netflix, Inc., package
com.netflix.ninja, version13.0.1 build 25028) - Download the
.apkmbundle — it is the only variant,armeabi-v7aonly (base + one arch split), so Optimize for device architecture must be OFF. Morphe Manager will show it as Recommended. Don't pick a newer13.1.xrelease — the patch targets13.0.1 build 25028. - Select the
.apkin Morphe Manager - Apply the patch — leave Clone Netflix and the Remove Netflix ads patches enabled (both on by default). Optionally enable Minimize Network Fingerprint for the privacy pass (blanks local IP/MAC/SSID + advertising ID).
- Install the result without uninstalling stock Netflix, then open the new Netflix clone app and sign in.
⚠️ Not a subscription bypass. You need a valid, paid Netflix account and you
log in normally. This only removes ads and trims device telemetry inside an app
you're already entitled to use.
> 🔬 How it works under the hood: docs/NETFLIX_ATV_SYSTEM_DESIGN.md
is a reverse-engineering teardown of Netflix's ATV ad and playback system, and of why the patch works.
📡 Paramount+
About this patch: VOD ads removed (movies + TV shows, pre-roll + mid-roll) and pause ads removed; live TV is preserved.
🟢 Recommended version: v16.17.0. VOD ads (movies and TV shows,
pre-roll and mid-roll) and pause ads are removed, while **live TV is
preserved**. This is the version to patch and install right now.
> 🟡 Stable fallback: v16.8.0. The previous recommended build. Use it only
if you can't get v16.17.0.
- Open the Paramount+ 16.17.0 (Android TV) release on APKMirror directly (or search APKMirror for the fallback
16.8.0if unavailable) - ⚠️ This listing is published by CBS Interactive, Inc. — the correct publisher. Do not use the separate Viacom-published build.
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
📺 Tubi
- Open the Tubi (Android TV) listing on APKMirror and select version
10.36.5000 - ⚠️ Use this Android TV listing — not the "Tubi (Fire TV)" or the phone listing
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
🌐 ViX
- Open the ViX: TV, Deportes y Noticias (Android TV) 4.47.2_tv release on APKMirror (version
4.47.2_tv, packagecom.univision.prendetv)
4.47.2_tv is only on the one linked above — the "ViX (Fire TV) (Android TV)" listing skips it. The fallback 4.46.0_tv is on that other listing as a single universal .apk (no bundle).
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
📡 Pluto TV
About this patch: VOD ad breaks removed (video, markers, beacons). LIVE TV breaks can be masked (black screen + mute) with an optional patch.
🟢 Working. Pluto is a free, 100% ad-supported (FAST) service that uses
server-side ad stitching (SSAI) — ads are baked into the same stream as
the content, so there is no ad domain to block and no ad-free tier to unlock.
This patch empties the client-side ad-break timeline, which removes **on-demand
(VOD)** ad breaks entirely: ad video, timeline markers, overlays, and tracking
beacons. LIVE TV ads are real broadcast time in the linear feed and cannot be
removed — but the separate Mask live ad breaks patch hides them (see below).
DNS filters do not help here.
- Open the Pluto TV (Android TV) 5.66.0-leanback download on APKMirror (version
5.66.0-leanback) — the listing now also shows newer17.xreleases; the patch targets5.66.0-leanback - ⚠️ Use this Android TV listing and pick a
-leanbackbuild — not the phone or Fire TV build - Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
📺 Mask live ad breaks (black screen + mute). Live/linear Pluto ads occupy real
broadcast time and can't be deleted like VOD ads, so this optional patch masks the
break instead: during a live commercial it covers the player with a black screen and
mutes the audio, then restores both the instant the show returns — so gambling,
drinking, or any other live ad is blanked and silenced. It reads Pluto's own ad-state
signal, so it needs no polling and works alongside the main Skip ads patch. It's
opt-out (leave it off to watch live ads normally). Runtime tweaks via marker files in
the app's external files dir (Android/data/tv.pluto.android/files/): createslate_off
to disable it on-device without re-patching, orpluto_slate_modecontainingblack
(cover only) or mute (mute only) instead of the default both.
> 🔬 How it works under the hood: docs/PLUTO_TV_ATV_SYSTEM_DESIGN.md
is a reverse-engineering teardown of Pluto TV's ad and playback system, and of why the patch works.
🦚 Peacock
About this patch: No DNS required.
- Open the Peacock TV (Android TV) 7.8.100 release on APKMirror directly (this is version
7.8.100— use this link rather than searching, which can land on a similarly-named build). Versions7.5.102and7.6.100are also supported.
arm64-v8a + armeabi-v7a (Android 6.0+). The armeabi-v7a-only bundle needs Android 12L+, and the arm64-v8a-only one won't run on 32-bit TV boxes.
- Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
⚠️ **Fire TV & preinstalled/system-app devices: enable the Clone Peacock
patch before applying.** On many Fire TV sticks and some Android TV boxes,
Peacock ships as a system app that can't be uninstalled. Installing the
patched build over it fails with a signature or CONFLICTING_PROVIDER error.
The Clone Peacock patch (opt-in, off by default) installs the patched app
side-by-side under its own package, so it appears as a second Peacock icon and
keeps its own login. Leave it off only if you were able to fully uninstall
the stock Peacock first (a normal in-place install is cleaner). The
Disable auto-updates patch is on by default and stops the Play Store from
silently replacing the patched build.
💜 Twitch
About this patch: Android TV "Starshot" build only — install exactly 13.0.0.2 (the phone app is not supported). Removes the on-screen ad-pod overlay/countdown ("Ad · 1 of 3") and blanks stitched (SSAI) ad video on live streams. A brief black gap can remain during a break; a VPN set to Albania is fully ad-free.
🟢 Working — Android TV "Starshot" build only (13.0.0.2). Twitch live ads
are server-side stitched (SSAI) into the same stream as the content, and the
TV app runs Twitch's web player inside a WebView. This patch intercepts the live
HLS playlist and both (a) strips the client-side ad-pod tags that drive the
on-screen "Ad · 1 of 3" countdown/overlay and (b) blanks the stitched ad
video. Real ad breaks no longer play as an ad. Because the ad occupies real
live stream time, a brief black gap can remain during a break — the ad
video is gone, but that slice of live time still has to pass. DNS filters do
not help here.
> 💡 Want zero ads and no black gap? Point a VPN at Albania — Twitch serves
that region genuinely ad-free playlists (no ad is stitched at all). Verified
first-hand with NordVPN → Albania; pair it with the patch and you're fully
covered.
- Open the Twitch: Live Streaming (Android TV) 13.0.0.2 release on APKMirror (version
13.0.0.2) - ⚠️ Use this Android TV listing and the exact
13.0.0.2"Starshot" build — not the phone or Fire TV build (the patch targets this TV build specifically). The release has two bundles; either works —arm64-v8a + armeabi-v7ais the safe pick. - Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
🏈 ESPN
About this patch: Android TV only. Live commercial breaks are masked with a full-screen slate + audio mute (passthrough SSAI can't be removed, only covered); VOD/scheduled ads are suppressed. No DNS required.
🟢 Working — Android TV only (6.11.1). ESPN live commercial breaks are
native passthrough SSAI — the ad is stitched into the same stream as the game,
so it cannot be removed, only masked. This patch detects each break from the
stream's own ad markers and covers the player with a full-screen slate while
muting the player, then lifts cleanly when live content resumes. **VOD /
scheduled ads are separately suppressed. DNS filters do not** help here.
- Open the ESPN (Android TV) 6.11.1 release on APKMirror directly (version
6.11.1) — use this link rather than searching, to avoid landing on the phone build or a different version - ⚠️ Use this Android TV listing and the exact
6.11.1build (packagecom.espn.score_center) - Download the
.apkmfile - Select it in Morphe Manager
- Choose your patch options (below) and apply
| Patch | Default | What it does |
| --- | --- | --- |
| ESPN Android TV | ✅ On (core) | Suppresses VOD / scheduled ads by forcing the DMP SGAI isAdDisabled flag. Always keep this on. |
| ESPN live commercial-break slate | ✅ On | Masks live passthrough-SSAI breaks with a full-screen slate + mute. Deselect if you only want VOD ad suppression and no on-screen slate during live breaks. |
| Disable auto-updates | ✅ On | Stops the Play Store from silently reinstalling the official ESPN and wiping the patch. Update deliberately by re-patching a newer APK. |
| Clone ESPN | ⬜ Off (opt-in) | Installs the patched app alongside a stock ESPN that can't be uninstalled (common on Amazon Fire TV and some TV boxes). Gives it its own package/icon. Leave off if you could uninstall the original first. |
Live-slate styles (on-device): while a break is up, press the D-pad to open an on-screen picker and switch between Video (your own clips), Video + Score (clips + a live-score strip), Be Right Back (ESPN Ad-Break Overlay) (an animated broadcast graphic with a live countdown), and Blank. Slate media is user-supplied local files placed in the app's external files dir — nothing is bundled. Drop a slate_off marker file to disable the live slate without re-patching. See slates/espn_overlay/ for the animated overlay assets and setup.
📺 RTÉ Player
About this patch: Android TV, VOD only. Client-side (Google IMA) pre-roll + mid-roll ads are removed seamlessly (no ad, no break pause). Live channels keep ads (server-stitched). Geo-locked to Ireland — use a VPN; needs a valid RTÉ account.
- Open the RTÉ Player (Android TV) 3.160.3 release on APKMirror (version
3.160.3) - Download the
.apkmfile - Select it in Morphe Manager
- Apply the patch
🟢 Working — Android TV, VOD only. Client-side (Google IMA) pre-roll and mid-roll ads are removed in-app — content plays straight through where a break would be, with no ad and no pause. No DNS filter needed.
> ⚠️ Geo-locked to Ireland. RTÉ Player only streams from an Irish IP, so you need a VPN set to Ireland (and a valid RTÉ account — this only removes ads, it's not an access bypass).
> ℹ️ Live channels still show ads. Live is server-stitched (DAI) into the video itself, which can't be removed client-side without breaking the stream — only on-demand (VOD) is covered. A cosmetic ad-break marker may still appear on the scrubber, but it no longer pauses playback.
🦊 Fox One
🔴 Currently under development. Install instructions will be added once a stable patch is available.
🙏 Credits
This patch template is based on the prior work of ReVanced. All modifications made by Morphe, along with their dates, can be found in the Git history.
Twitch ad-suppression techniques are informed by:
- Purple TV (nyanarchive/purpletv) — GrandDads ad-eligibility short-circuit approach
- TwitchAdSolutions (pixeltris) — playerType spoofing concept
- Xtra for Twitch (crackededed) — Android-side Twitch ad mitigation prior art
Netflix household-prompt suppression is informed by:
- Nikflix (YidirK, GPL-3.0) — identified Netflix's household / "you're traveling" enforcement via the
CLCSInterstitialPlaybackAndPostPlaybackinterstitial
com.netflix.ninja), located by analyzing our own on-device appboot heap dumps. Nikflix is credited for identifying the enforcement seam. See NOTICE.
ESPN live-score slate (optional scoreboard overlay) uses ESPN's public "hidden" stats API, documented by the community:
- pseudo-r/Public-ESPN-API
- akeaswaran's ESPN hidden-API gist
- cwendt94/espn-api
- quantum0813/ESPNSportsAPI
- ITIRadio/ESPN-API
📜 License
ajstrick81 Morphe Patches are licensed under the GNU General Public License v3.0.