How to add live captions to a meeting
In Teams and Google Meet you switch captions on from the call controls. In Zoom the host may need to allow them first. In your own app, you set two room properties and read caption events.
There are two different questions behind this search. Some people want to read captions in a call they join on Zoom, Google Meet or Teams. Others build a product and want captions inside their own video calls. This post answers both. The first part is for end users, the second for developers.
Captions are speech recognition, so they are never perfect. We say where each option is limited. Everything about vendors was checked on their help pages on 31 October 2026. Menus and plans change, so if a step does not match your screen, look for the captions or subtitles entry in the call controls.
For end users#
Microsoft Teams#
Microsoft's help page, Use live captions in a Teams meeting, says to do this on desktop.
- In the meeting controls, choose More actions (the three dots), then Captions.
- On mobile, choose More options, then Turn on live captions.
- Check the meeting's spoken language. If it does not match what people speak, captions get worse. The organizer, co-organizer or the person who started the transcript can change it under Open caption settings, Meeting spoken language.
Two limits matter. Live translated captions need a Teams Premium or Microsoft Copilot license, and if the organizer has one, everyone can use translation. And Teams does not save captions. If you want a record, turn on transcription as well.
Google Meet#
In a meeting, hover over Captions and translation at the bottom and choose to turn on captions. Or open More options, Settings, Captions. If you record the meeting, you can choose Record captions to embed them in the recording.
For translated captions, Google's help page says to pick Translated captions and set the "translate from" and "translate to" languages. That page lists about 70 languages with some in beta, and lists the Workspace editions that get them (Business Standard, Business Plus, Enterprise Standard and Plus, and Google AI Pro for Education). Other versions of Google's help text mention add-ons instead, so we could not confirm what your account gets. Plain captions in the meeting's own language are the simpler feature. Check the page for what your account gets.
Zoom#
We could not load a clear Zoom help page for this, so we only say what we are sure of. In Zoom the host normally has to allow live transcription or captions for a meeting, and then participants turn the captions on from the meeting controls. Translated captions depend on the host's plan or an add-on, and the plan names change. We could not confirm the current rules from Zoom's own pages, so please read the Zoom support site for your plan before you promise captions to a client.
Which option should you pick#
If you only join other people's calls, use the captions of the tool that hosts the call. They are free to try, need no code, and the host's admin has already approved them. If you run the meeting and need the words kept, turn on the transcript too, because a caption on screen disappears when the next line arrives. If you need several languages in one room, compare the plan rules above before you promise it to attendees, since translation is the part that most often needs a higher plan or an add-on.
Tips that help in any tool#
- Use a headset or a mic close to the speaker. Teams' own page says accuracy drops as distance from the mic grows.
- Avoid people talking at once and background noise.
- Set the spoken language correctly before the meeting starts.
- Do not rely on captions alone for legal, medical or safety information. Check the transcript afterwards.
- If you need people in one meeting to read different languages, check whether your plan includes translation.
For developers#
If you build a product with video calls, you do not have to wire up a speech service yourself. RespireSoft Meet API handles speech to text and translation. The full reference is the captions and translation guide. The short version follows, and the code is from that guide.
1. Turn captions on for a room#
curl "https://meet.respiresoft.com/api/v1/rooms" \
-H "Authorization: Bearer $MEET_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "town-hall-1", "privacy": "private", "properties": {
"enable_captions": true, "enable_translation": true, "languages": ["es", "fr", "ar"] }}'languages lists the translation languages for the room, at most 5, and at least one when enable_translation is true. If you only want captions and no translation, set enable_translation to false. Setting both properties to false switches speech off for the room.
2. Say what language each person speaks#
Put lang in the meeting token, so the speaker is understood in the right language from the first word.
curl "https://meet.respiresoft.com/api/v1/rooms/town-hall-1/tokens" \
-H "Authorization: Bearer $MEET_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "Ann", "role": "participant", "lang": "en", "perms": ["audio", "video", "chat", "translate"]}'3. Show and read the captions in your page#
With the embed SDK (see the embed quick start for the room and token setup):
await call.setCaptions(true); // starts `caption` events and shows captions
await call.setLanguage('es'); // hear the call in Spanish
call.on('caption', ({ participantId, text, final, lang }) => {
if (final) console.log(participantId, lang, text);
});Partial text arrives first and is replaced by the final line, so check final before you store a line. The call screen also has its own captions and language menu, so you can use them without writing code. Note that setLanguage is for spoken translation, where a listener hears the speaker in their language.
4. Get the transcript afterwards#
curl "https://meet.respiresoft.com/api/v1/sessions/$SESSION_ID/transcript?format=vtt&lang=es" \
-H "Authorization: Bearer $MEET_API_KEY"format is json (the default, paginated, with start_ms and end_ms from the start of the session), txt, vtt or srt. lang shows the translation where a line has one. A transcript.ready webhook tells you when a finished session has lines. For recording with transcript and chat, see the recording guide.
What it costs#
The pricing page lists live captions at $0.004 per minute a call has captions on, and spoken translation at $0.012 per listener minute. Billing is not switched on yet, so you are not charged, and prices may change.
Honest limits#
- Captions come from live speech recognition. Names, noise and accents can cost accuracy, so read a transcript before you publish it.
- Spoken translation is not instant. The listener hears each sentence a few seconds after the speaker.
- A room can have at most 5 translation languages.
- The call screen has 18 interface languages. The caption and translation languages are chosen separately, per room, and we do not list them here because the guide does not give a full list. Test your languages before you launch.
- We have not benchmarked accuracy against Zoom, Meet or Teams, so we make no claim that it is better.
If you only want to see captions working, the free live captions tool and the free online meeting need no sign up. For spoken translation see the live interpreter and live translation for meetings.
Questions people ask#
Can I add captions to a meeting that is already running? In Teams, Meet and Zoom the answer depends on settings the host or admin controls. In RespireSoft Meet API, setCaptions can be called from the page at any time the call is joined.
Do captions save a transcript? Not always. Teams does not save captions unless transcription is on. In RespireSoft Meet API final lines are stored with the session.
Do I need AI notes as well? Captions are the base. See our comparison of AI meeting notes tools.