Prompt
How do I make video calls work in poor network conditions
Latest observation
Nov 2, 2026
OpenAI APIWeb search: off
To make video calls work better on poor networks, the main goal is to reduce how much data the call needs and make it tolerant of loss, jitter, and low bandwidth.
Practical ways to improve video calls
1. Lower video quality
- Use 360p or 240p instead of HD
- Reduce frame rate to 15 fps or even 10 fps
- Use adaptive bitrate so the app automatically lowers quality when the network degrades
2. Prefer audio over video when needed
- Let the call fall back to audio-only if bandwidth drops
- Provide a quick “turn off camera” option
- Audio needs far less bandwidth and should stay usable even on weak connections
3. Use efficient codecs
- Use modern codecs like:
- H.264 for broad compatibility
- VP8/VP9 or AV1 if supported and your devices can handle the CPU load
- Better compression means less data sent for similar quality
4. Handle network variability gracefully
- Add jitter buffers to smooth out packet timing issues
- Use packet loss concealment for audio
- Support retransmission and forward error correction (FEC) where appropriate
- Avoid long freezes; prefer brief quality drops over stalling
5. Optimize for low bandwidth
- Reduce:
- resolution
- bitrate
- number of active video streams
- If it’s a group call, consider active speaker view instead of showing everyone at full quality
- Send video only for the most relevant participant(s)
6. Improve connection setup
- Use ICE/STUN/TURN properly for WebRTC calls
- Prefer UDP for real-time media when possible
- Ensure TURN servers are available as a fallback when direct peer-to-peer fails
7. Detect poor conditions early
- Continuously monitor:
- packet loss
- RTT/latency
- jitter
- available bandwidth
- Automatically adjust quality before the call becomes unusable
8. Reduce app overhead
- Compress frames efficiently
- Avoid unnecessary UI animations or background tasks on weak devices
- Keep the app lightweight so encoding/decoding doesn’t add extra lag
9. Design for resilience
- Allow users to:
- manually switch to low-data mode
- disable incoming video
- choose “audio only” easily
- Show clear indicators like “network poor” so users understand why quality changed
If you’re building this with WebRTC
A good baseline approach is:
- use adaptive bitrate
- set a low max resolution and max frame rate
- handle network stats to adjust dynamically
- enable audio prioritization
- support TURN relay fallback
Simple rule of thumb
If the network is bad:
- Keep audio working first
- Lower video resolution and fps
- Reduce the number of video streams
- Switch to audio-only if needed
If you want, I can also give you:
- a WebRTC-specific implementation checklist
- settings for low-bandwidth video calls
- or a code example for adaptive video quality changes