Skip to main content
Listen Together lets you host or join a shared listening session with other Metrolist users. The host controls playback; guests stay in sync automatically. Song changes, seek actions, play, and pause are all broadcast to every participant in real time.
All participants must have Metrolist installed on their Android device. Listen Together is not available through a web browser or other clients.

Opening Listen Together

Tap the Listen Together button in the top bar of the app to open the session screen. If you do not see the button, go to Settings → Appearance and enable the Listen Together button in the top bar option.

Starting or joining a session

1

Connect to the server

On the Listen Together screen, tap Connect. Metrolist establishes a WebSocket connection to the metroserver backend. The status indicator turns green when connected.
2

Enter your username

Type the name other participants will see for you in the session.
3

Create the room

Tap Create room. A unique 8-character room code is generated and copied to your clipboard automatically. Your playback is now being broadcast to all guests who join.
4

Share the code or link

Inside the room, tap Copy code to share the room code, or tap Copy link to share an invite link in the format https://metrolist.meowery.eu/listen?code=XXXXXXXX. Guests can join using either.

What syncs

Track changes

When the host changes to a different song, all guests load and begin buffering the same track. Playback starts once buffering completes.

Play and pause

Host play/pause actions are broadcast instantly. Guests apply the state change with a position adjustment to compensate for latency.

Seek position

When the host seeks, guests seek to the same position. Small drifts below 2 seconds are ignored to avoid interrupting active playback.

Queue

The host’s full playback queue is sent to guests on join and kept in sync as tracks are added, removed, or reordered.

Guest restrictions

While you are in a room as a guest, you cannot control your own playback independently. Play, pause, seek, and skip actions are blocked — only the host’s actions take effect. This restriction is lifted automatically when you leave the room.

Song requests

Guests can suggest songs to the host. The host sees pending suggestions in the session view and can approve or reject each one individually. To skip manual approval, the host can enable Auto-approve song requests in Settings → Integrations → Listen Together. With this on, guest suggestions are added to the queue automatically. Added in v13.2.0.

Managing the room (host only)

As host, you can tap any connected user’s avatar to open a moderation menu:
  • Kick — removes the user from the room immediately
  • Block — kicks the user and adds them to a blocked list so they cannot rejoin
  • Transfer ownership — promotes the user to host and demotes you to guest
Blocked usernames are managed in Settings → Integrations → Listen Together → Blocked users.

Leaving a room

Tap Leave room at the bottom of the session screen. Your playback continues independently after leaving, and your previous mute state is restored.

Settings

Go to Settings → Integrations → Listen Together to configure:
Metrolist connects to the The Meowery server (Poland) by default (wss://metroserverx.meowery.eu/ws). You can switch to a different community server or enter a custom WebSocket URL if you are self-hosting metroserver.
Set a default display name so you do not have to type it every time you join a session.
When enabled, join requests from other users are accepted automatically without requiring manual host approval.
When enabled, song suggestions from guests are added to your queue without a confirmation prompt.
When enabled as a guest, your playback volume is adjusted to match the host’s volume level.
For related integration settings, see Integrations in the Configuration section.

Technical details

Listen Together uses Protocol Buffers (protobuf) serialized over a WebSocket connection to the metroserver backend. Migrated from JSON to protobuf in v13.2.0 to reduce message size and lower latency.
To avoid choppy audio, guests apply a 1-second debounce on rapid sync events and only seek when the position difference exceeds 2 seconds during active playback (3 seconds while playing). Fixed in v13.4.0.
If a participant loses their connection, Metrolist attempts automatic reconnection. Guests re-sync to the host’s current state on reconnect; the host re-sends the current track and play position if the server’s state has drifted.
The server component is metroserver, an open source real-time backend. You can self-host it and point Metrolist to your own WebSocket URL in the server settings.