This script is only tested on Roku Streaming Sticks (Streaming Stick/Streaming Stick HD, Streaming Stick Plus, and Streaming Stick 4K). I suspect it will also work with Roku Express, Roku Ultra, and Roku Streambar, but I suspect it will not work with Roku TVs.

This guide is aimed at relatively tech-savvy users and will likely take about 30-60 minutes to complete. See the Requirements section to make sure you have everything needed to complete the guide before starting.

Following this guide does not put you at risk of losing any data. Your data will be untouched and every step is reversible.

Intro

With the recent removal of Roku Photo Streams, Roku is pushing users towards the Roku Backdrops app. Roku has made it clear that Backdrops does not and never will work as a screensaver, so users who previously used Photo Streams as a screensaver are left without any alternative. This page will show you how to use Backdrops as a screensaver just like you previously used Photo Streams (with some improvements).

Below is a list of some of the issues users face when trying to use Roku Backdrops as a screensaver and how this guide fixes them:

  1. Backdrops will only start running after 30 or 60 minutes of inactivity. This guide allows you to choose any idle duration you want. You can also choose different idle durations depending on the state of the player (e.g. idle for 5 minutes if sitting on the main menu, but idle for 30 minutes if a video is paused).
  2. Since Backdrops is not classified as a screensaver, Roku's actual screensaver will often clash with and disrupt Backdrops. This guide shows you how to prevent that from happening.
  3. Backdrops often stops running at random, returning the player to the menu screen and remaining there indefinitely. This guide shows you how to keep Backdrops running 24/7, automatically recovering from any interruptions.
  4. If you have smart automation on the TV that your Roku device is plugged into (e.g. using an IoT device to automatically turn it on and off every day), this guide allows you to have Backdrops automatically launch every time the TV is turned on.

Caveats

The script used in this guide makes creative use of your Roku player's external API to monitor and manipulate the state of the player. This comes with a couple downsides:

  1. The script could stop working at any time. It relies on the intricate implementation details of the device's external API and the Backdrops app. If these implementations change in a future update, the script may stop working. Disabling system updates on your Roku device would likely prevent that from happening.
  2. The script automatically starts the slideshow whenever it detects the Backdrop app displaying its menu screen. This means that whenever you're navigating the menu of your Backdrops app the script will see that the menu's been opened and automatically start the slideshow. You'll need to pause the script each time you want to browse the Backdrops menu.

Requirements

In order to complete this guide, you will need a laptop or desktop computer (Windows, Mac, or Linux) that can be powered on 24 hours a day. The computer will also need to be connected to the same LAN (wifi network) as your Roku player. If the laptop is powered off or disconnected from the network, Backdrops will return to its default behavior until it's reconnected.

You will also need access to your LAN's router to change one (or possibly two) settings.

Guide

Step 1: Prep your Roku device

Before you can setup the script on your computer, you'll need to adjust some settings on your Roku device.

  1. First, make sure you have Roku Backdrops enabled on your Roku device. From your Roku home screen, go to Settings > Backdrops > Open the Backdrops app. Once Backdrops is open, click the gear button and make sure the Backdrops setting is set to "Enabled".
  2. From that same settings menu, make sure Daily Stop Time is set to "Never"
  3. Next, disable any screensaver you currently have. Go to Settings > Theme > Screen Saver Start Time > Disable Screensaver
  4. Disable auto power savings. Go to Settings > System > Power > Auto Power Savings and ensure "After 20 minutes of no interaction" is unchecked.
  5. Disable bandwidth saver. Settings > Network > Bandwidth Saver > Off
  6. Next, go to Settings > Home Screen > Shortcuts and make sure every option is unchecked except for "Start Backdrops", which should be checked. For me, this is "Add Apps: no; Start Backdrops: yes; TV Off: no". Why? If you don't see an option for "Start Backdrops", make sure you completed item #1 in this list.
  7. Next, Settings > System > Advanced System Settings > Control by Mobile Apps > Network Access > Enabled. Make sure this is set to "Enabled" and not any of the other 3 options. This is what allows the external computer to send commands to the Roku player.
  8. Finally, enabled Developer Mode by following this guide from Roku. You do not need to enroll in the Roku Developer Program - you can skip the enroll step and it will not affect anything. Remember to write down and keep your password somewhere you'll remember it. You'll need the password if you ever want to disable Developer Mode in the future (although there's no downside to leaving it enabled forever - it won't affect your Roku experience at all).

You might also need to change these two settings if you're ever experiencing issues with the script in the future, but for now you can skip them and just change them if needed:

  1. Settings > Home Screen > Recommendation Rows > Hide. Why?
  2. Settings > System > Advanced System Settings > Advanced Display Settings > Auto-adjust Display Refresh Rate > Off. Why?

Step 2: Configure the LAN

Now that you have your Roku device fully configured, the next step is to make sure your computer will always be able to contact it.

I cannot give step-by-step directions for this section as these steps depend heavily on how the LAN is configured, but for the vast majority of people it should just be a matter of checking what brand of router you have and making a few quick Google searches to log into it and find the right settings.

  1. First, choose what LAN you're going to setup the Roku device + computer on. Both devices will need to remain connected to the same network in order for the script to function. Once you've chosen a network, connect your Roku device to it.
  2. Once your Roku device is connected to the right network, log into that network's router and assign your Roku device a static IP address. You'll need the Roku device's MAC address for this step, which can be found in Settings > Network > About > Wireless MAC Address. You can pick any available IP address, but the IP address already assigned to the Roku device is guaranteed to work. You may need to reboot the router and/or Roku device for the new static IP address to take effect.
  3. Lastly, make sure that devices on the LAN are visible to each other. For 99% of people this will be the default behavior, but in some cases the router will have the network configured as a "Guest Network" which prevents devices on the network from communicating with one another. The computer needs to be able to communicate with the Roku device, so double check that it will be able to.

Step 3: Set up your computer

Now that both the Roku device and the LAN are properly configured, you can finally get the script itself running.

  1. Find a computer that can be left running 24 hours a day and make sure it's connected to the same LAN as your Roku device.
  2. Make sure you have Node.js installed on the computer. Node.js is compatible with every major operating system. If you don't already have it installed, it can be downloaded and installed in a couple minutes from the official page here. (You'll most likely want the installer for the prebuilt version, not the Docker or standalone binary versions, but any version will work) (the entirety of Node.js should consume less than 100MB of storage) (the script is only about 450 lines so you could also just port it into your preferred language if that's your thing)
  3. Once you have Node.js installed, download this file containing the script and place it absolutely anywhere you want on your computer, making sure to place it inside its own directory with no other files. The location does not matter, but make sure you remember where you put it so you can access it in the next steps.
  4. Open the file in any text editor of your choice and set the ROKU_DEVICE_IP_ADDRESSES constant to reflect the static IP address that you assigned to your Roku device from the router, then save and close the file.
  5. Now open any terminal of your choice and navigate the terminal to the directory where you placed the script file using thecd command. For example, cd "C:/Users/John/Desktop/Roku Backdrops Fix"
  6. Inside the directory you just navigated to, run the npm install node-schedule command and wait for it to finish. You should see package.json and package-lock.json files created in that directory.
  7. Run the script using the node command followed by the script file's name, like node roku-backdrops-override-script-v2.js. Once you see "Roku Backdrops Override Script V2 is running..." printed in the console, wait for about 1 minute. If you see an error message printed in the console, you've done something wrong and will need to read the error message to isolate the issue. If you see "Initial setup failed", check to make sure you typed in the proper IP address. If you instead see something like { state: 'close', name: 'Roku Dynamic Menu' }, that means you did everything correctly and you're finished! You can stop the script at any time by opening the terminal it's running in and pressing CTRL+C
  8. This final step is optional but recommended. As it is now, you'll need to manually start the script from the terminal every time you reboot your computer. If you instead want the script to run automatically every time you boot up your computer, you should do some Google searching to see how to do that on your operating system. On Windows this can be done by pressing Windows Key + R, typing shell:startup, and pressing OK. This will open a folder where you can put a batch file that will run every time your PC starts.

As long as the script is running you should see some information printed to the console every minute to inform you of what it's currently doing and help identify issues if anything goes wrong. As long as you see messages appearing every minute (and you don't see any errors), everything is working.

Optional bonus step: Fix more than just one Roku device

If you have more than one Roku device that you want to use Backdrops as a screensaver for, follow these steps:

  1. Complete all of the "Prep your Roku device" steps on every Roku device you want to use.
  2. Make sure all of your Roku devices are connected to the same network as mentioned in "Configure the LAN" item #1.
  3. Assign each of your Roku devices their own static IP address as mentioned in "Configure the LAN" item #2.
  4. Simply add the new device's IP address to the ROKU_DEVICE_IP_ADDRESSES constant at the top of the script file, being sure to enter them in this format: const ROKU_DEVICE_IP_ADDRESSES = ["192.168.0.123", "192.168.0.456", "192.168.0.789"];. Once you've entered the new IP addresses, save the file and restart it in the terminal.
  5. Every Roku device listed in the same script file will share the same settings. If you want each device to have its own settings you can simply make copies of the script file and run all the files alongside each other.

Optional bonus step: Automatically cycle between multiple photo streams

The script includes a feature for automatically cycling between any photo streams of your choice. If you have multiple photo streams that you want displayed, follow these steps:

  1. Open the script file in any text editor of your choice.
  2. Set the automaticallyCycleStreams constant to true
  3. Set randomizeStreamOrder to either true or false depending on whether you want the streams to cycle randomly or in a specific order.
  4. Set streamsToShow according to the instructions included in the script file itself, using the example as a reference.
  5. Set timePerImage to be equal to the speed you've chosen inside the Backdrops app itself. For example, if you have your images cycling every 5 minutes, set this to "5 minutes". This is necessary so that the script can properly track the state of the slideshow
  6. Save the file and restart it in the terminal.

Optional bonus step: Configure custom idling rules

By default, the script will launch Backdrops if the Roku device has been idling on the main menu for 5 minutes or if the Roku device has been idling on any other screen for 30 minutes. If you would like to customize this behavior, simply edit the customIdleRules function in the script file (basic knowledge of computer programming languages is required).

Troubleshooting

If the script is not working the way you expect, try these steps:

  1. If your cursor is moving and clicking things on its own, that is expected behavior. When the script attempts to launch Backdrops it will automatically press 4 buttons on your remote control over the span of a few seconds (home -> right -> up -> select). 99% of the time it does this you won't see it happen, but every now and then you'll be there to see it and it's expected behavior.
  2. If you're repeatedly being booted to the main Roku menu while trying to navigate the menus within the Backdrops app, that is expected behavior. If you want to navigate the menus within the Backdrops app you will need to pause the script until you're done.
  3. If the script is saying "Initial setup failed", you most likely made a mistake while entering the IP address or configured the router incorrectly.
  4. If the script is giving you a Cannot find module error, make sure you ran the npm install node-schedule command before attempting to run the script. If you forgot to do it before, you can do it now.
  5. If the automated cursor movement occasionally navigates to an incorrect menu, it's most likely due to your Roku device lagging and being unable to process the inputs fast enough. Open the script file and change the inputSpeed constant to either "slow" or "very slow" depending on your needs.

What's new in version 2?

  1. Improved error detection, handling, and recovery to prevent crashes during network outages
  2. First-class support for running the script on multiple Roku devices at the same time without needing to run multiple instances of the script
  3. The ability to automatically cycle between multiple photo streams
  4. The ability to reduce input speeds for slower Roku devices (or increase them for faster Roku devices)
  5. Improved logging clarity for easier debugging
Everything working as expected as of 4/25/26