# Why Video-Use Adds Padding to Cut Edges During Rendering

> Discover how padding cut edges in video-use rendering adds 30ms audio fade for seamless transitions and prevents pops. Learn about this essential browser-use technique.

- Repository: [Browser Use/video-use](https://github.com/browser-use/video-use)
- Tags: internals
- Published: 2026-08-06

---

**Padding cut edges in video-use applies 30 ms audio fade‑in/fade‑out to every segment, eliminating audible pops and ensuring smooth transitions between clips.**

The `browser-use/video-use` rendering pipeline deliberately pads each cut edge with a micro-fade. This quality‑control step prevents abrupt audio truncation artifacts that would otherwise mar the final output. According to the source code in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), this 30‑millisecond buffer is baked into every segment before lossless concatenation.

---

## The Technical Implementation in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py)

The core logic resides in the segment extraction function. Lines 87‑90 construct an **FFmpeg audio filter string** that applies symmetric fades at both boundaries:

```python

# helpers/render.py (simplified excerpt from L87-L90)

fade_out_start = max(0.0, duration - 0.03)
af = f"afade=t=in:st=0:d=0.03,afade=t=out:st={fade_out_start:.3f}:d=0.03"

```

This filter chain executes two operations:

1. **`afade=t=in:st=0:d=0.03`** – ramps audio from silence to full volume over the first 30 ms.
2. **`afade=t=out:st={fade_out_start}:d=0.03`** – ramps back to silence over the final 30 ms.

The `fade_out_start` calculation ensures the fade‑out never begins before the segment starts, handling edge cases where a clip is shorter than 30 ms.

---

## What Padding Cut Edges Accomplishes

### Pop‑Free Audio Transitions

Raw audio streams truncated at arbitrary sample boundaries produce **click and pop artifacts**. The 30 ms fade smooths the waveform discontinuity, yielding professionally clean cuts. This is especially critical when adjacent segments originate from different source files with varying DC offsets or levels.

### Consistent Timing for Draft Verification

The padding cut edges mechanism supports the pipeline's **draft mode** (`--draft` flag). Because each segment starts and ends at mathematically predictable points, the timeline verification in [`helpers/timeline_view.py`](https://github.com/browser-use/video-use/blob/main/helpers/timeline_view.py) can precisely evaluate cut accuracy without compensating for arbitrary audio latency.

### Lossless Concatenation Safety

Per‑segment MP4s include padded audio; the final concatenation step joins these pre‑smoothed streams. This avoids applying global fades that would distort cross‑segment timing.

---

## Rendering Commands That Use Edge Padding

All rendering paths invoke the same `extract_segment` function with identical fade logic:

```bash

# Full‑resolution final output (30 ms fades applied per segment)

python helpers/render.py edl.json -o final.mp4

# Quick draft at 720p, ultrafast preset — padding preserved

python helpers/render.py edl.json -o draft.mp4 --draft

# Preview at 1080p, medium preset — edge padding active

python helpers/render.py edl.json -o preview.mp4 --preview

```

Regardless of resolution or encoding speed, the 30 ms audio fade‑in/fade‑out is non‑negotiable.

---

## Summary

- **Padding cut edges** in `video-use` refers to mandatory 30 ms audio fades applied during segment extraction.
- The implementation lives in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) at lines 87‑90, constructing FFmpeg `afade` filters.
- This eliminates audible pops, enables precise draft verification, and supports lossless concatenation.
- All rendering modes (`--draft`, `--preview`, default) preserve this padding behavior.

---

## Frequently Asked Questions

### What does "padding cut edges" mean in video processing?

Padding cut edges refers to adding a brief buffer — here, 30  milliseconds of audio fade — at the boundary where one clip ends and another begins. In `video-use`, this prevents waveform discontinuities that cause clicks or pops in the final mix.

### Does padding cut edges affect video duration or sync?

No. The 30 ms padding applies **only to audio** and is symmetric (fade‑in + fade‑out). Visual content remains frame‑accurate, so lip‑sync and action timing are preserved. The [`helpers/timeline_view.py`](https://github.com/browser-use/video-use/blob/main/helpers/timeline_view.py) module verifies that padded cuts align with the original edit decision list.

### Can I disable the 30 ms fade padding?

Not through official CLI flags. The fade logic is hardcoded in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) because it is considered essential for output quality. Modifying the source would require editing the `af` filter string construction around line 87.

### Does the draft rendering mode skip edge padding?

No. Both `--draft` and `--preview` modes retain the full 30 ms fade logic. These flags only adjust resolution, encoding preset, and bitrate — they do not alter the audio processing pipeline defined in `extract_segment`.