# Jitsi transcription or subtitles not working

> service-unavailable means Jigasi is running as a SIP gateway: set JIGASI_MODE=transcriber. 'SASLError SCRAM-SHA-1 not-authorized' in the Jigasi log means JIGASI_TRANSCRIBER_PASSWORD is missing: set it and restart Prosody. Transcripts with no speech mean Jigasi is not reaching Vosk: the property is org.jitsi.jigasi.transcription.vosk.websocket_url, with an underscore.

Source: https://jitsi.help/troubleshooting/jitsi-transcription-not-working/
Updated: September 26, 2026
Publisher: Jitsi Help (https://jitsi.help/)

These are the three failures we hit ourselves when building free Vosk transcription into our platform. Each has a distinct symptom, so you can go straight to the right fix.

Check the logs first:

```bash
docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml logs --tail 200 jigasi vosk
```

## Symptom 1: service-unavailable when enabling subtitles

**Cause:** the stock `jigasi.yml` hardcodes `JIGASI_MODE=sip`. As a SIP gateway, Jigasi never answers Jicofo's transcription requests.

**Fix:** override the mode.

```yaml
# jigasi-override.yml
services:
  jigasi:
    environment:
      - JIGASI_MODE=transcriber
      - JIGASI_TRANSCRIBER_PASSWORD
```

```bash
docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml up -d jigasi
```

## Symptom 2: "SASLError using SCRAM-SHA-1: not-authorized"

**Cause:** Jigasi joins as `transcriber@hidden.meet.jitsi`, and `JIGASI_TRANSCRIBER_PASSWORD` was never set, so it logs in with an empty password. The base `jigasi.yml` does not even pass the variable to the container.

**Fix:** set it and restart **Prosody**, which creates the account on start:

```ini
JIGASI_TRANSCRIBER_PASSWORD=a-long-random-password
```

```bash
docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml restart prosody jigasi
```

## Symptom 3: transcripts with join events but no words

**Cause:** Jigasi is not talking to Vosk. The Docker init scripts do not write the `JIGASI_SIP_COMMUNICATOR_PROP_*` variables into the properties file in transcriber mode, and the Vosk property is easy to misspell. Jigasi reads `vosk.websocket_url` with an underscore; `vosk.websocket.url` is silently ignored and Jigasi tries `localhost`, where nothing is listening.

**Fix:** mount a properties file with the correct name:

```properties
# config/jigasi/custom-sip-communicator.properties
org.jitsi.jigasi.transcription.customService=org.jitsi.jigasi.transcription.VoskTranscriptionService
org.jitsi.jigasi.transcription.vosk.websocket_url=ws://vosk:2700
org.jitsi.jigasi.transcription.DIRECTORY=/config/transcripts
org.jitsi.jigasi.transcription.SAVE_TXT=true
```

## Symptom 4: Vosk keeps restarting

**Cause:** not enough memory. The English model needs several GB on its own.

**Fix:** use a server with at least 16 GB of RAM. On AWS a t3.xlarge works; a c5.xlarge with 8 GB does not.

## Symptom 5: captions work, but no transcript file

Check that `/config/transcripts` exists inside the Jigasi container and is mapped to a host folder, and that `SAVE_TXT=true` is set. Transcripts are written when the meeting ends.

## Full setup

The complete, working configuration is in [free self-hosted transcription with Jigasi and Vosk](/guides/jitsi-transcription-vosk/). If you would rather not debug it, our [transcription service](/services/jitsi-transcription/) sets it up on your server, and on our platform it is a one-time $29 feature.

## Frequently asked questions

### What does service-unavailable mean when starting Jitsi subtitles?

Jicofo asked for a transcriber and none answered. The stock Docker jigasi.yml runs Jigasi in SIP mode, where it ignores transcription requests. Set JIGASI_MODE=transcriber in an override file and restart Jigasi.

### Why does Jigasi log SASLError not-authorized?

It is logging in as the transcriber user with an empty or wrong password. Set JIGASI_TRANSCRIBER_PASSWORD in .env, pass it to the Jigasi container, and restart Prosody so the account is created with that password.


---

Jitsi Help is an independent service. It is not affiliated with, endorsed by or sponsored by 8x8, Inc. or the Jitsi project. Jitsi and Jitsi Meet are trademarks of 8x8, Inc., used here only to describe the software we host and support.
