Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

readme.md

🔌 Syncify Extension — Join Listening Sessions

This is the browser extension that lets you join your friends’ Syncify sessions and stay in perfect sync.

Even if you don’t have a premium Spotify account, you can listen along with the host and the group.


New here? This short video shows what Syncify’s all about 🎶

Quick look


Quick guide

(In case you’re new to installing extensions — this gif will help!)

Untitled-Project


🚀 How to Install

  1. Download the extension, right click on it and click on extract to extension\
  2. Open your browser (Brave-browser is highly recommended).
  3. Type chrome://extensions in the search bar (or equivalent).
  4. Enable Developer mode.
  5. Click Load unpacked and select the extracted folder, or simply drag and drop the folder to the extension page.
  6. You should see the Syncify extension appear — click it, enter your nickname, room ID, and enjoy!

Note: If you see a "Room doesn't exist" message, it could mean:

  • You entered the wrong room ID (ask the host for the correct one), or
  • Your internet connection is slow / temporarily disconnected.
    Try again, and it should work!

Usage

Once you’ve joined a session, here’s what each button does:

  • Start / Stop sync – Unless you click, it will not start / stop syncing, so don't forget to click start sync once you join a room. You can use this to stop syncing when you want to pause the song locally without leaving the room.

  • Play / Pause – Toggles playback for everyone in the session.

  • Next / Previous – Skips or goes back to tracks for all listeners.

  • Progress bar - The green progress bar can be used to adjust playback progress.

  • Exit – Exit the session safely.

  • Square Top Down Icon can be used to toggle sidepanel, in case it's blocking your screen, you can click this button, which is visible at the bottom right of the extension's UI

Tip: All listeners can control playback by default, but the host can disable control for specific users if needed.


⚙️ For Devs / Nerds

Here’s how the extension works under the hood:

  • background.js handles the main logic for connecting to the host server and keeping playback in sync.
    As soon as you enter the room ID in the popup, it fetches the API URL for that room from Firebase and uses it to sync with that specific session.

  • Syncify.js (the popup script) sends your nickname and room ID to background.js. The background script then:

    1. Checks if the room exists.
    2. Requests permission from the host to join.
    3. Stores a temporary key in browser storage to prevent simple DoS-like attacks (note: not fully secure).
  • The extension listens for your playback state in the browser and updates the local session accordingly to stay in sync with the host and other listeners.

  • The extension polls the host’s API for the current playback progress and updates the local session accordingly, keeping everyone synced.

  • Handles slow or unstable internet gracefully: playback stays smooth without constantly jumping back.

  • Uses a small ping-based offset when updating playback progress to compensate for internet latency, keeping listeners closely synced with the host even on slower connections.

⚠️ Reminder: the extension manipulates the Spotify Web Player DOM, which may violate Spotify’s Terms of Service. Use responsibly and at your own risk.


Made for fun ❤️ — just a personal side project, not affiliated with Spotify.