Tested with Samsung QN900A · Tizen 2021

Your Samsung TV, in the browser.

A clean remote control for desktop, tablet and phone – with apps, volume, text input and media playback. Runs locally on your home network, no cloud required.

Web interface with the remote on the left and the app grid on the right, dark theme
Features

Everything the remote can do – and more

Talks directly to the TV’s own interfaces: the WebSocket remote API, the REST API and DLNA.

Complete remote control

D-pad, Home, Menu, Back, color and playback keys. Press and hold to repeat.

Launch & close apps

Installed apps in one click, with search and an indicator for what is running.

Real volume slider

Set the exact volume level and mute, with a live readout of the current value.

Text input & touchpad

Type search terms on your keyboard, move the pointer with a touchpad, open web pages in the TV browser.

Play media

Play video, audio or image URLs from your home network directly on the TV via DLNA.

Power on & off

Wake from standby via key press or Wake-on-LAN – including under WSL2.

Works on any device

Responsive from phone to large monitor, light and dark theme, keyboard shortcuts on desktop.

Multilingual

English and German built in, switchable live. New languages are a single dictionary file.

Local & private

No cloud, no account. Optional SmartThings integration for direct picture and sound modes.

Screenshots

A look at the interface

Every function in clearly organized tabs – the remote always stays in view.

Remote on a smartphone, dark theme
Remote on a smartphone, light theme

The remote in your pocket

On a phone the page becomes a full remote – large buttons, haptic feedback on tap, volume via slider.

Open your computer’s address in the phone browser and add it to your home screen.

Quick start

Up and running in two minutes

Requirements: Node.js 18 or newer and a Samsung Tizen TV on the same network.

# get the project
git clone https://github.com/mupf-dev/samsung-tv-web-remote.git
cd samsung-tv-web-remote
npm install

# enter your TV’s IP and MAC address
cp config.example.json config.json

# start → http://localhost:8097
npm start
  1. Look up IP and MACOn the TV under Settings › General › Network › Network Status › IP Settings.
  2. Fill in config.jsonAt least tv.host; the MAC address is needed to power on via Wake-on-LAN.
  3. Allow the connectionOn first start the TV asks once for permission – confirm with “Allow”.
  4. Optional: SmartThingsWith a token in config.json you also get direct picture mode, sound mode and input selection.
Under the hood

How it works

A small Node server (one single dependency: ws) talks to the TV and serves the interface.

FeatureInterface
Remote keys, text input, touchpad, browserWebSocket wss://TV:8002 with token pairing
Status, checking, launching and closing appsREST http://TV:8001/api/v2
Volume, mute, media playbackDLNA/UPnP http://TV:9197
Power on from standbyKEY_POWER or Wake-on-LAN
Picture mode, sound mode, inputs, direct channeloptional SmartThings API
App listNewer firmware no longer reports the list of installed apps. Known app IDs are therefore checked one by one; you can add your own in config.json.
Picture settingsThe TV exposes no interface for brightness, contrast and the like – they remain reachable via the menu and the D-pad.
Add a languageCopy public/i18n/locales/en.js, translate the values, register it in locales/index.js and run npm run i18n:check.
Other modelsBuilt on a QN900A (2021). Other Samsung Tizen TVs from around 2018 onwards use the same interfaces and should work too – this has not been tested.