How to Set Up Your Own Media Request Server for Twitch + OBS

Twitch

How to Set Up a Free Self-Hosted YouTube Media Request Server for Twitch & OBS Studio (2026 Ultimate Guide)

Let your viewers request YouTube songs and videos directly in Twitch chat using !sr. Control everything from a powerful local dashboard with real-time playback synchronization across OBS and all overlays. It is completely free, private, and under your full control.

Why this tool stands out in 2026: Most streamers pay monthly for hosted song request services. This self-hosted solution gives you pro-grade features like instant Dashboard to OBS to Overlay sync, a persistent queue, saved playlists, and anti-spam protection, all with zero recurring cost and maximum privacy.

What This Tool Actually Does

  • Viewers type !sr [YouTube URL] in your Twitch chat to request songs, music videos, clips, or any public YouTube content.
  • Requests are added to a persistent queue that survives restarts.
  • The next video automatically plays when the current one ends.
  • Full real-time playback control from the Dashboard. Pause, resume, or seek and it instantly affects the OBS main player and every overlay at the same time.
  • Beautiful, customizable “Now Playing” overlays for professional production value.
  • Import full YouTube playlists with optional auto-shuffle and save your favorites for one-click loading.

Important Copyright & Liability Disclaimer

Copyright Warning: Playing copyrighted music or videos on stream without proper authorization can result in muted VODs, copyright claims, Content ID matches, or channel penalties from Twitch or YouTube. This tool is provided strictly for educational and personal use with content you own or have explicit rights to use.

This software is NOT intended for restreaming or publicly broadcasting copyrighted material. You are solely responsible for all content played through this system. The developer (DaOpa) and this guide assume zero liability for any DMCA notices, muted VODs, channel strikes, or legal issues that may arise.

Recommendation: Use royalty-free music, Creative Commons tracks with proper attribution, your own original content, or music you have licensed. Always follow Twitch’s music guidelines and YouTube’s Terms of Service.

This is open-source-style software. Use at your own risk. No warranty is provided.

What’s New in v1.6 (Playback Sync Edition)

This version introduces major reliability and control upgrades requested by the community:

  • Real-time Playback Synchronization — Pause, resume, or seek from the Dashboard and it instantly updates the OBS main player and all overlays at the same time. No more desync.
  • New prominent “Pause Live Video (OBS)” and “Resume Live Video (OBS)” buttons. Perfect for talking over music, reading donations, or taking breaks without losing your place.
  • All overlays now include hidden audio players that stay perfectly in sync with the main source.
  • Saved Playlists — Save your favorite playlists once, then load them instantly later with optional shuffle.
  • Default playlist auto-loads on first launch if your queue is empty.
  • Queue now defaults to 200 items (configurable) plus a one-click Shuffle Queue button.
  • Improved resume reliability after pause with better retry logic for OBS browser sources.
  • Better state recovery when OBS scenes change or browser sources reload.

System Requirements

  • Windows PC (the included start.bat is Windows-optimized)
  • OBS Studio (latest version recommended)
  • Node.js LTS (free)
  • Twitch account (Partner or Affiliate not required)
  • Stable internet connection for YouTube playback and optional playlist import

Step-by-Step Installation Guide (Beginner Friendly)

Step 1: Download & Extract

Download the latest version and extract the zip to a permanent location. I recommend C:\Streaming-Tools\media-requests-v1-6 or a folder inside your Documents. Avoid extracting directly to the Desktop for long-term use.

Step 2: Install Node.js

Go to nodejs.org, download the LTS version, and run the installer with the default settings. Restart your PC if prompted.

Step 3: Run the Automated Setup (Easiest Method)

  1. Open the extracted folder.
  2. Double-click start.bat.
  3. The script will automatically install dependencies on the first run. This usually takes 1 to 2 minutes.
  4. If no .env file exists, it will automatically open setup.html in your browser. This is a clean guided wizard.
  5. In the setup page:
    • Enter your Twitch Username (the channel the bot will join).
    • Click “Open Twitch Token Generator”, select Chat Bot, log in, and copy the full oauth:xxxxxxxxxxxxxxxxxxxxxx token.
    • Paste the full token (including oauth:) into the setup form.
    • Optional but recommended for playlist features: Create a free YouTube Data API v3 key at the Google Cloud Console and paste it. Single !sr requests work without it.
  6. Click “Generate .env File Content” and copy the generated text.
  7. In your extracted folder, create a new file named exactly .env (with no extension) and paste the content. Save it.
  8. Close the setup page and run start.bat again.
Pro Tip: After the first successful launch you can pin start.bat to your taskbar or create a desktop shortcut. Always keep the black command window open while you are streaming.

Step 4: Add Browser Sources to OBS

In OBS, go to Sources → + → Browser. You have several purpose-built pages:

1. Main Player (Required for actual video/audio output)

http://localhost:3000/obs

This is the core YouTube IFrame player. It outputs both video and audio that OBS can capture. Add this source first. You can crop or hide the visual portion if you only want the audio.

2. Visual Overlays (Recommended — Add on top of your scene)

URL Name Best For Key Features
/overlay-1 Full Visual (Recommended) Most streamers Large “NOW PLAYING” title, thumbnail, requester name, Up Next queue preview, hidden synced audio player
/overlay-2 Compact Minimal screen space Clean thumbnail + title only, hidden synced audio
/overlay-3 Ultra Minimal Very clean HUDs Title + requester, smallest footprint, hidden synced audio

Recommended OBS Browser Source Settings (all pages):

  • Shutdown source when not visible
  • Refresh browser when scene becomes active
  • Control audio via OBS (adjust volume in the Audio Mixer). Volume is intentionally not synced across sources.

Step 5: Start Streaming

Keep the command window open. Open the Dashboard at http://localhost:3000. You can also add it as a Custom Browser Dock in OBS under Docks → Custom Browser Docks so you never have to alt-tab.

Test by requesting a song via chat or adding one directly from the Dashboard. The first video should start playing automatically.

Dashboard Overview & Playback Controls

The Dashboard at http://localhost:3000 is your command center. Here are the key sections:

  • Add Video — Paste any YouTube link and add it manually. Great for testing or when chat is slow.
  • Import Playlist — Paste a YouTube playlist URL (requires a YouTube API key). It skips duplicates and respects your max queue size.
  • Saved Playlists — Save your favorite playlists once, then load them instantly later with optional shuffle. Perfect for recurring stream themes.
  • Now Playing Card — Shows the current video plus prominent Pause Live Video (OBS) and Resume Live Video (OBS) buttons. These controls affect every connected player at the same time.
  • Queue Management — View upcoming requests, remove individual items, shuffle the queue, clear everything, or use “Play First” to jump straight to a specific request.
Playback Sync in Action: When you click Pause from the Dashboard, the main OBS player and all overlays pause at the exact same timestamp. Resume continues from the same point across every source. This is the feature most serious music and media streamers asked for.

Twitch Chat Commands

CommandWho Can UseDescription
!sr [YouTube URL]EveryoneRequest a song or video. Includes anti-spam protection (5 second cooldown and max 3 requests per user in queue).
!skip or !nextMods + BroadcasterSkip the current video cleanly.
!queueEveryoneShows the next 5 upcoming songs in chat.
!currentEveryoneShows what is currently playing and who requested it.
!shuffleMods + BroadcasterRandomizes the pending queue.

The bot has built-in spam protection and will politely warn users who try to flood the queue.

Use Cases: Why Streamers Choose This Tool

1. Music Reaction & Discovery Streams

Let viewers request tracks they want you to hear for the first time. The professional overlays make the stream look polished while the sync controls let you pause instantly when you want to talk about the song.

2. Chill, Study, or Lo-fi Streams

Viewers request background music that fits the vibe. Use a saved “Chill Playlist” that loads with one click. The compact overlays keep screen real estate clean.

3. Community & Subathon Nights

High-interaction streams where song requests become a core engagement loop. The persistent queue and Dashboard dock mean you can manage everything without leaving OBS.

4. Karaoke or Sing-Along Streams

Request official music videos with lyrics. Use the full visual overlay so viewers always know what is playing and who requested it.

5. Gaming Streams with Custom Soundtrack

Request hype tracks between games or during loading screens. Pause cleanly when you need to focus or talk to chat without the music continuing in the background.

Bottom line: This tool gives you the engagement power of paid song request services with the privacy, customization, and zero ongoing cost of a self-hosted solution. It also includes unique playback sync that most alternatives do not offer.

FAQ & Troubleshooting

Q: Do I need a YouTube API Key?

A: No for normal !sr usage. You only need one if you want to import full playlists from the Dashboard or use the Saved Playlists feature heavily.

Q: The player or overlay is stuck or not responding in OBS.

A: Right-click the Browser Source and choose Refresh. The v2.1 improvements make recovery after scene changes much more reliable.

Q: “Port already in use” or server won’t start.

A: Edit your .env file and add PORT=3001 (or any free port), then restart the server.

Q: Queue disappeared after restart?

A: The queue is automatically saved to a JSON file and loads on the next launch. If the file ever gets corrupted it safely resets.

Q: Can I use this with multiple scenes or multiple overlays?

A: Yes. All overlays and the main player stay perfectly synchronized thanks to the new playback state system.

Final Disclaimer: This software is provided as-is for educational and personal use only. The developer assumes no responsibility for copyright claims, platform actions, or any issues arising from content played through this system. Always respect copyright laws and platform terms of service.

Built with ❤️ by DaOpa

Leave a Reply

Your email address will not be published. Required fields are marked *