Free Android remote for smart TVs

Your phone is the remote.

Zapper controls your Samsung TV over Wi-Fi, with a remote you arrange yourself. Free, open source, no account and no ads.

GPL-3.0Android 8+No ads, no tracking

Try it

Press the buttons. Watch the TV.

This is the remote Zapper opens on. Use the D-pad, OK, Back, volume and the app shortcuts. On a keyboard, select the TV and use the arrow keys, Enter, Escape, + and −.

Apps
Movies
Series
Music
Videos
Photos
Sources
Live TV
HDMI 1
HDMI 2
USB
Browser
12
Standby

Hold volume, channel or the D-pad to repeat, just like in the app.

Samsung · RU7020Living room
Connected
VOL
CH

Features

Everything the plastic remote does, and the things it can't.

Arrange it your way

Drag, resize, relabel and recolour every key, add new ones from a catalog, and spread them over pages. Each TV keeps its own layout, with undo, reset, and export to a file.

Finds your TV, and turns it on

Zapper finds your Samsung TV on the Wi-Fi, or by its address. Accept it once on the TV and it reconnects by itself. Power wakes the TV over the network, too.

One-tap apps

Netflix and YouTube sit on the main page, and an Apps page opens Prime Video, Disney+, Apple TV, Spotify and Plex. If the TV lacks an app, Zapper says so.

Type with your phone

Search on the TV with your phone keyboard instead of a letter grid. It even opens by itself when the TV asks for text.

Made for your thumb

Big keys, a round D-pad you can tap or swipe, hold-to-repeat at the speed you like, haptics, and your phone's own volume buttons, so your eyes stay on the screen. It works with TalkBack and large text, too.

Dark, OLED or your colours

Light, dark or true black for OLED screens. Follow your wallpaper's colours or pick one of six, and choose the shape of the keys.

Private by design

Zapper talks to your TV over your home network and nothing else. No account, no cloud, no analytics. Pairing keys are encrypted on your phone, and Zapper checks it is talking to the TV you paired. The code is public, so you can check.

Roadmap

All four phases done. 1.0 is out.

Zapper was built in phases: a remote you can rely on every day first, then the extras, then making it yours, then the polish for 1.0. Here is what each one brought.

  1. Phase 1Done

    Basic Samsung remote

    Find, pair and control a Samsung TV every day. Tested on a 2019 Samsung RU7020.

    • Find the TV or add it by address
    • Guided, encrypted pairing
    • Automatic reconnection and saved TVs
    • The default remote and number pad
    • Phone volume keys
  2. Phase 2Done

    Samsung extras

    The things a plastic remote can't do well.

    • Type on the TV with your phone keyboard
    • App shortcuts and an Apps page
    • Turn the TV on, and see whether it is on
  3. Phase 3Done

    Make it yours

    The remote becomes yours to arrange.

    • Themes, colours, key shapes and haptics
    • Move, resize, add and remove keys
    • Pages, a layout per TV, undo and reset
    • Export and import layouts
  4. Phase 4Done

    Release 1.0

    Polish, and an open door for other brands.

    • TalkBack and large text
    • Clearer help when the TV is unreachable
    • A guide to adding a TV brand

After 1.0

More TV brands, one adapter at a time: Android TV and Google TV first, then LG and Roku. Also on the list: a touchpad mode, a home screen widget and a Quick Settings tile.

Supported TVs

Samsung today. Your TV next.

Each TV brand is a small plug-in called an adapter. The app works the same whatever TV is behind it.

Which brand comes next is up to you: open your TV below and give its issue a 👍 on GitHub. See every candidate and how to vote.

Supported works in the current release Planned on the roadmap after 1.0 Help wanted waiting for a contributor

Open source

Bring your own TV.

Zapper is GPL-3.0 and built to grow one TV brand at a time. If you can talk to your TV from code, you can add it to Zapper.

  1. Fork and run it

    Debug builds come with a simulated TV at 192.0.2.1, so you can try the app without any hardware.

  2. Write an adapter

    Implement TvAdapter in its own adapters/ module. The adapter guide walks you from an empty module to a pull request, starting from a tested example.

  3. Open a pull request

    Tell us which TV you tested on. Once merged, it ships in the next release.

MyTvAdapter.kt
class MyTvAdapter : TvAdapter {
    override val id = "mytv"
    override val displayName = "My TV"

    // Find your brand's TVs on the local network
    override fun discover(): Flow<DiscoveredTv> = …

    // Is this address one of your TVs?
    override suspend fun probe(host: String): DiscoveredTv? = …

    // Pair, connect and send keys in your TV's protocol
    override fun createSession(
        device: TvDevice,
        credentials: CredentialStore,
    ): TvSession = …
}

Get Zapper

Download the APK from GitHub Releases and install it on your phone. Updates are published there too.

v1.0.0Android 8.0+Samsung TVs from 2016Signed release, SHA-256 listed

Your phone will ask you to allow installs from your browser the first time.