# Differences Between --preview, --draft, and Final Rendering Modes in video-use

> Understand video-use rendering modes: --preview, --draft, and final. Learn how draft, preview, and final modes balance quality and performance for your video projects.

- Repository: [Browser Use/video-use](https://github.com/browser-use/video-use)
- Tags: deep-dive
- Published: 2026-07-04

---

**The `--preview`, `--draft`, and final rendering modes in video-use trade encoding speed for visual quality through distinct FFmpeg configurations, with draft mode delivering 720p output at CRF 28 for rapid iteration, preview generating 1080p at CRF 22 for quality checks, and final producing 1080p at CRF 20 for production-ready results.**

The browser-use/video-use repository provides a flexible video rendering pipeline through [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), which supports three mutually exclusive quality settings designed for different stages of the editing workflow. Understanding the specific differences between these rendering modes allows you to balance processing time against output fidelity, whether you are verifying cut points or preparing final deliverables.

## Quality and Resolution Specifications

### Resolution Scaling

The rendering modes differ fundamentally in output resolution according to the **Quality ladder** definition in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) (lines 166-170). Final and preview modes scale output to **1920 × 1080** (1080p), while draft mode downscales to **1280 × 720** (720p). This reduction in pixel count significantly decreases processing overhead for draft renders.

### FFmpeg Encoding Parameters

Each mode configures FFmpeg with distinct **Constant Rate Factor (CRF)** values and encoding presets that directly impact visual fidelity and file size:

- **Final mode (default)**: Applies CRF **20** with the `fast` preset, delivering the highest visual fidelity with balanced compression
- **--preview**: Uses CRF **22** with the `medium` preset, offering faster encoding while maintaining full HD resolution
- **--draft**: Employs CRF **28** with the `ultrafast` preset, prioritizing speed over quality at reduced resolution

Higher CRF values indicate lower quality, making draft mode noticeably noisier than preview or final outputs.

## Performance Characteristics

The rendering modes exhibit dramatic performance differences based on their encoding complexity:

- **Draft mode**: Approximately **1-2× faster** than preview mode due to 720p resolution and the `ultrafast` preset, which skips most compression optimizations. This mode generates minimal CPU load and is ideal for rapid cut-point verification.

- **Preview mode**: Roughly **2-3× faster** than final rendering while maintaining 1080p resolution. The `medium` preset provides a balance between encoding speed and compression efficiency, making it suitable for quality-control reviews before full production renders.

- **Final mode**: The most CPU-intensive option, applying thorough bitrate control through the `fast` preset and lower CRF value to achieve production-ready quality for publishing.

## How to Use Each Rendering Mode

The command-line flags are defined in the argument parser section of [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) (lines 80-88). These flags are mutually exclusive, and while `argparse` will accept the last flag if both are supplied, the script is designed to process only one quality setting at a time.

Generate a production-ready final render:

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

```

Create a 1080p preview for quality checks:

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

```

Generate a 720p draft for rapid verification:

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

```

## Implementation Details in render.py

The core rendering logic resides in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), where the **Quality ladder** comment (lines 166-170) explicitly maps each mode to its specific resolution, preset, and CRF configuration. The argument parser (lines 80-88) defines the CLI interface for selecting these modes, ensuring that users can target the appropriate quality level for their current workflow phase.

Additional documentation in [`SKILL.md`](https://github.com/browser-use/video-use/blob/main/SKILL.md) (line 78) references the `--preview` shortcut, while [`README.md`](https://github.com/browser-use/video-use/blob/main/README.md) provides entry-point guidance for the helper scripts and typical usage patterns.

## Summary

- **Final mode** delivers the highest quality (1080p, CRF 20, `fast` preset) but requires the most processing time
- **Preview mode** offers balanced performance (1080p, CRF 22, `medium` preset) approximately 2-3× faster than final
- **Draft mode** prioritizes speed (720p, CRF 28, `ultrafast` preset) for rapid iteration and cut-point verification
- All three modes are defined in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) and controlled via mutually exclusive CLI flags

## Frequently Asked Questions

### What is the main difference between --preview and --draft rendering modes?

The primary difference lies in resolution and quality settings. Preview mode maintains **1080p resolution** with CRF 22 and the `medium` preset, producing full-HD output suitable for quality checks. Draft mode reduces output to **720p** with CRF 28 and the `ultrafast` preset, sacrificing visual fidelity for significantly faster encoding speeds when verifying edit continuity.

### Can I use --preview and --draft flags together?

While the `argparse` implementation in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) will technically accept the last flag provided if both are supplied, the rendering modes are designed to be **mutually exclusive**. You should specify only one quality flag per render command to ensure predictable behavior.

### Which rendering mode should I use for production video?

You should use **final mode** (the default) for production deliverables. This mode applies CRF 20 with the `fast` preset at 1080p resolution, providing the best visual quality and compression efficiency according to the video-use quality ladder defined in the source code.

### How does CRF affect video quality in video-use?

**CRF (Constant Rate Factor)** is a rate-control parameter where lower values indicate higher quality. In video-use, final mode uses CRF 20 for high fidelity, preview uses CRF 22 for acceptable quality, and draft uses CRF 28 where visual artifacts are acceptable in exchange for speed. Each increment of 6 in CRF roughly doubles the file size, making final mode significantly larger but cleaner than draft mode.