> For the documentation index, fetch https://sync.so/docs/llms.txt. Append .md to a page URL for Markdown. Documentation-search MCP: https://sync.so/docs/_mcp/server. # Sync Mode > Choose how sync. labs handles audio and video duration mismatches with sync_mode. `sync_mode` controls what happens when your video and audio inputs are different lengths. It applies to video + audio generations. For image inputs, `sync_mode` is ignored because images have no intrinsic duration. Use `sync_mode` in the `options` object when creating a generation: ```json { "input": [ { "type": "video", "url": "https://example.com/video.mp4" }, { "type": "audio", "url": "https://example.com/audio.wav" } ], "model": "lipsync-2", "options": { "sync_mode": "cut_off" } } ``` ## Quick recommendation | Goal | Recommended mode | Why | | :---------------------------------------------- | :--------------- | :---------------------------------------------------------- | | Keep the output short and avoid filler | `cut_off` | Uses the shorter input duration. | | Make a short video cover longer audio naturally | `bounce` | Plays forward, then in reverse, repeating until audio ends. | | Repeat a short video over longer audio | `loop` | Restarts the video until audio ends. | | Preserve the full video when audio is shorter | `silence` | Pads the remaining video with silence. | | Preserve all video and all audio content | `remap` | Time-stretches video to match audio duration. | > **Info** > > For the most predictable result, make your video and audio durations close before submitting. Large duration mismatches can make `bounce`, `loop`, or `remap` visually obvious. ## Behavior matrix This matrix shows the effective behavior when the durations do not match. | Mode | Audio longer than video | Video longer than audio | Effective output duration | | :-------- | :------------------------------------------------------------------ | :--------------------------------------------------- | :------------------------ | | `bounce` | Video plays forward, then backward, repeating until the audio ends. | Video is trimmed to the audio length. | Audio length | | `loop` | Video restarts and loops until the audio ends. | Video is trimmed to the audio length. | Audio length | | `cut_off` | Audio is clipped to the video length. | Video is trimmed to the audio length. | Shorter input length | | `silence` | Output keeps the audio length. | Audio is padded with silence through the full video. | Longer input length | | `remap` | Video is slowed down to match the audio length. | Video is sped up to match the audio length. | Audio length | ### Example output durations For a 4.00s video with 8.64s audio: | Mode | Output duration | What happens | | :-------- | :-------------- | :---------------------------------------- | | `bounce` | 8.64s | Video bounces to cover the full audio. | | `loop` | 8.64s | Video loops to cover the full audio. | | `cut_off` | 4.00s | Audio is clipped at the end of the video. | | `silence` | 8.64s | Output keeps the full audio length. | | `remap` | 8.64s | Video is slowed down to match the audio. | For a 10.00s video with 1.74s audio: | Mode | Output duration | What happens | | :-------- | :-------------- | :------------------------------------------------ | | `bounce` | 1.74s | Video is trimmed to the audio length. | | `loop` | 1.74s | Video is trimmed to the audio length. | | `cut_off` | 1.74s | Video is trimmed to the audio length. | | `silence` | 10.00s | Audio is padded with silence over the full video. | | `remap` | 1.74s | Video is sped up to match the audio. | ## Mode details #### cut\_off `cut_off` uses the shorter input length. If audio is longer than video, the extra audio is removed. If video is longer than audio, the video is trimmed. Choose this when you want a simple, predictable output and do not need to preserve every second of both inputs. #### bounce `bounce` is useful when the video is shorter than the audio. The video plays forward, then reverses direction, and repeats until the audio ends. Choose this for short looping clips where a forward/backward motion looks acceptable. #### loop `loop` restarts the video from the beginning until the audio ends. Choose this when your source video is designed to loop cleanly. #### silence `silence` preserves the full video when the audio is shorter by padding the remaining duration with silence. During the silent portion, there is no spoken audio to drive new lip movement. Choose this when the full visual clip matters more than ending exactly when speech ends. #### remap `remap` changes video playback speed so the video duration matches the audio duration. Choose this when you need to preserve all video and audio content, but avoid extreme mismatches. Large speed changes can look unnatural. ## Studio defaults When Studio detects a duration mismatch, it only shows modes that are valid for that direction: | Mismatch | Studio modes | Default | | :---------------------- | :----------------------------------- | :-------- | | Audio longer than video | `loop`, `bounce`, `remap`, `cut_off` | `bounce` | | Video longer than audio | `silence`, `remap`, `cut_off` | `cut_off` | ## Segments Segment-level `sync_mode` works the same way, but the mismatch is evaluated per segment. If a segment window and its audio are different lengths, the mode determines whether that segment is trimmed, padded, looped, bounced, or time-remapped. See the [Segments guide](/developer-guides/segments) for segment request examples. ## sync\_mode reference `sync_mode` is an optional generation option for video + audio lipsync generations. It is ignored for image inputs. | Mode | Audio longer than video | Video longer than audio | Output duration | | :-------- | :---------------------------- | :-------------------------------------- | :---------------- | | `bounce` | Video bounces to audio length | Video trims to audio length | Audio length | | `loop` | Video loops to audio length | Video trims to audio length | Audio length | | `cut_off` | Audio clips to video length | Video trims to audio length | min(audio, video) | | `silence` | Output keeps audio length | Audio pads with silence over full video | max(audio, video) | | `remap` | Video slows to audio length | Video speeds to audio length | Audio length | Studio shows `loop`, `bounce`, `remap`, and `cut_off` when audio is longer than video. Studio shows `silence`, `remap`, and `cut_off` when video is longer than audio. Defaults are `bounce` for audio longer than video and `cut_off` for video longer than audio. > Choose how sync. labs handles audio and video duration mismatches with sync_mode.