Skip to content

19. Stream Not Reaching Twitch

Troubleshooting issues specific to streaming to Twitch.

19.1 Common Issues

Issue Description
Transcoding Quality Stream looks worse on Twitch than expected, poor video quality
Ingest Server Issues Stream works intermittently, connection failures
Stream Not Appearing OBS shows streaming but nothing appears on Twitch
Debug Logs How to check Twitch-specific logs and error messages

19.2 Transcoding Quality

Issue: Stream looks worse on Twitch than expected

These settings apply only when TWITCH_PARTNER=FALSE (the default). In partner mode the relay passes the stream through unchanged, so set quality in OBS instead.

Solution: In env/relay.env, raise the bitrate or use a slower encoder preset:

# Video bitrate is TWITCH_KBITS_PER_VIDEO_FRAME × TWITCH_FPS: 100 × 60 = 6000 kbps (default 75 × 60 = 4500)
TWITCH_KBITS_PER_VIDEO_FRAME=100

# Better quality per bit, but uses more CPU (default: medium)
TWITCH_X264_PRESET=slow

Recreate the container so it reads the new values:

docker compose up -d --force-recreate

While streaming, check the relay's CPU use:

docker stats --no-stream

If CPU % stays near the machine's limit, set TWITCH_X264_PRESET back to medium.

Watch the stream on Twitch to confirm the quality changed.

See Twitch Configuration for all settings.

19.3 Ingest Server Issues

Issue: Stream works sometimes, fails other times

Check: Try a different ingest server. Set TWITCH_ENDPOINT in env/relay.env to a region code from Twitch's ingest list. The code is the first part of each url_template host, for example use20 from rtmp://use20.contribute.live-video.net/app/{stream_key}:

TWITCH_ENDPOINT=use20

Other examples: usw20 (US West, Oregon), euc10 (Europe, Frankfurt). Set one value only, with no comment on the same line. The default is use10 (US East, N. Virginia). For older names such as jfk, see TWITCH_ENDPOINT.

Recreate the container so it reads the new value:

docker compose up -d --force-recreate

Verify connectivity: Test that the relay can open a Real-Time Messaging Protocol (RTMP) connection (TCP port 1935) to Twitch:

docker compose exec relay nc -zv <TWITCH_ENDPOINT>.contribute.live-video.net 1935

Replace <TWITCH_ENDPOINT> with your TWITCH_ENDPOINT value (default use10). A working connection prints open (the IP address will differ):

use10.contribute.live-video.net (35.55.30.14:1935) open

If the command does not print open, outbound port 1935 is blocked between the relay and Twitch. If it prints open, stream for a while on the new endpoint to confirm the drops have stopped.

19.4 Stream Not Appearing

19.4.1 Symptoms

  • OBS shows "Streaming" but stream doesn't appear on Twitch
  • No errors in OBS

19.4.2 Possible Causes

19.4.2.1 Service Not Enabled

Check: Look at container logs during startup:

docker compose logs relay | grep -E "service enabled|Skipping|ERROR"

When Twitch is enabled, one of these lines appears, depending on TWITCH_PARTNER:

Twitch Partner configuration complete, and service enabled.
Twitch Non-Partner configuration complete, and service enabled.

If Twitch is not enabled, this line appears instead: TWITCH_KEY is not set. Skipping Twitch configuration.

Solution: If Twitch is missing: - Verify TWITCH_KEY is set in env/relay.env

Recreate the container so it reads the new value:

docker compose up -d --force-recreate

Confirm the service is enabled:

docker compose logs relay | grep -E "service enabled|Skipping|ERROR"

19.4.2.2 Wrong Stream Key

A key that is well-formed but wrong is accepted by the relay. The relay cannot tell it is wrong, and the log may show nothing.

Check: Confirm the relay can reach Twitch:

docker compose exec relay nc -zv <TWITCH_ENDPOINT>.contribute.live-video.net 1935

Then start streaming and open Stream Manager. If the command above prints open and Stream Manager shows no incoming stream, the key is the likely cause.

Solution: Copy the key again from Twitch dashboard into env/relay.env.

Recreate the container so it reads the new value:

docker compose up -d --force-recreate

Confirm the service is enabled:

docker compose logs relay | grep -E "service enabled|Skipping|ERROR"

19.4.2.3 Platform-Specific Issues

  • Verify stream key hasn't expired
  • Check Twitch dashboard for account status
  • Ensure you're not already streaming from another source

19.4.3 Confirm the Fix

Start streaming in OBS and open Twitch Stream Manager. The stream shows as live.

19.5 Debug Logs

For the startup lines every service prints, and which ones mean the container stopped, see Check Service Status. For more detail while streaming, see Increase Log Verbosity.

19.6 See Also