Inverity
Encoder Tuning

Two-Pass vs Single-Pass Encoding: Does the Pass Pay?

Date Published

A pass-one complexity profile across a clip's timeline feeds a pass-two bit-allocation chart whose bars grow tallest under the hardest scenes, beside a still-image icon crossed out to show images have no second pass.
TL;DR >- On a feature-length file, two-pass matched single-pass on average VMAF but gave a meaningful ~3-point low-frame advantage, for a +24% increase in encode time (Ozer, Streaming Learning Center, 2023).- On 10-to-12-minute clips there was essentially no quality difference at all (Ozer, 2023).- CRF and constant-quality are already single-pass optimal, because there is nothing to redistribute toward (slhck, 2017).- The perceptibility threshold is about 3 VMAF points, so most single-versus-two-pass differences sit below what a viewer can see (Ozer, 2023).

"Always use two-pass" is the most confidently wrong advice in encoding. It gets repeated as a universal best practice, as if a second pass were free quality you would be foolish to skip. It is neither free nor universal. The second pass only helps under specific conditions, it costs real wall-clock time, and for the single most common modern workflow, CRF, it does literally nothing useful. The honest question is not "one pass or two" but "does the extra pass pay for this content, in this mode?"

Most of the time the answer is no. The clearest public numbers come from Jan Ozer's controlled testing, and they show the payoff is small, length-dependent, and easy to overpay for. Below, we walk through what the first pass actually measures, when the redistribution it enables is worth the time, why CRF sidesteps the whole question, and why image encoders do not have a two-pass mode in the video sense at all.

Does the extra pass actually pay?

Only for long content encoded to a target bitrate, and even then the gain is modest. On a feature-length file of about two hours, two-pass matched single-pass on average VMAF but delivered a meaningful ~3-point low-frame advantage, at the cost of a +24% increase in encode time (Ozer, Streaming Learning Center, 2023). That low-frame gain is the whole reason to spend the second pass.

Length is the deciding variable, and short content flips the result. On short, 2-minute clips, single-pass was actually about 1 VMAF better overall, while two-pass was about 1 better on low-frame scores, and the perceptibility threshold is roughly 3 VMAF points (Ozer, 2023). Both differences sit below what a human can see. On short clips, the second pass is a coin flip you paid extra to run.

The middle is a dead zone. On 10-to-12-minute clips there was essentially no quality difference between the two modes (Ozer, 2023). So the payoff is not a smooth curve rising with length. It is roughly flat and imperceptible until content gets long enough that scene-to-scene complexity varies dramatically, and only then does redistribution earn its keep on the hardest frames.

Citation capsule: In controlled testing, two-pass encoding matched single-pass on average VMAF for feature-length content but gained about 3 points on low-frame scores, for +24% encode time. On short and mid-length clips the difference stayed below the ~3-VMAF perceptibility threshold (Ozer, Streaming Learning Center, 2023).

This kind of length-and-mode-dependent tradeoff is exactly why we lean on controlled measurement in how we benchmark, rather than universal rules of thumb, and it connects directly to our complete guide to image compression.

What does the first pass actually measure?

Complexity, and where it lives on the timeline. In multi-pass encoding, the first pass analyzes the source, writes a log or stats file that locates high-complexity scenes, and the second pass uses that map to allocate bits per frame for the best overall quality (Wikipedia, Multi-pass encoding). The first pass produces no usable video. It produces a plan.

That plan is what makes two-pass hit a target precisely. Two-pass VBR on a 90-minute file reaches about plus-or-minus 0.5% bitrate precision, versus roughly plus-or-minus 2% for single-pass ABR (Fora Soft, 2026). When you must land on an exact average bitrate or file size, that four-fold tighter precision is the real product of the first pass, more than the small quality bump.

The mechanism also explains the low-frame win. Because the second pass knows in advance which scenes are hard, it can move bits toward them from the easy scenes, so the worst frames get more budget than a single blind pass would give them. Two-pass can even exceed single-pass on peak bitrate for a given average, 8425 versus 7911 kbps on one hockey clip, precisely because it redistributes harder toward the difficult scenes (Ozer, 2023).

Notice what the first pass is really buying: foresight. A single-pass encoder makes bit-allocation decisions blind, reacting to complexity as it arrives, so it cannot save budget for a hard scene it has not seen yet. The second pass removes that handicap. This is also why the benefit concentrates in low-frame scores on long, varied content, because that is the only situation where blind allocation actually leaves the worst frames underfunded.

Complexity profile across a clip's timeline with first-pass stat markers on the peaks and arrows moving bits from low-complexity troughs to high-complexity scenes in the second pass

The first pass maps complexity so the second pass can move bits from easy scenes toward the hard ones (Wikipedia, Multi-pass encoding; Ozer, 2023).

The time cost, laid out by content length

The second pass is never free, and its cost scales with length. The extra-pass time cost was about +3% on short clips, negligible on mid-length clips, and +24% on feature-length content (Ozer, 2023). The cruel irony is that the cost rises with length in lockstep with the benefit, so the case where two-pass helps most is also the case where it costs most.

Content length

Avg VMAF result

Low-frame VMAF

Extra encode time

Verdict

~2 min (short)

Single-pass ~1 better

Two-pass ~1 better

+3%

Below perceptibility; skip

10 to 12 min (mid)

Essentially equal

Essentially equal

Negligible

No difference; skip

~2 hr (feature)

Nearly identical

Two-pass ~3 better

+24%

Worth it only for target-bitrate

All figures from Ozer, Streaming Learning Center, 2023; perceptibility threshold ~3 VMAF.

Combination chart by content length with bars for extra encode time, plus 3 percent short, roughly zero mid, plus 24 percent feature, against a line for low-frame VMAF gain of about 1, 0, and 3 points

Extra encode time and low-frame VMAF gain both spike only at feature length: +24% time for about a 3-point gain (Ozer, 2023).

Read the table as a filter, not a menu. For short and mid-length content the quality delta is imperceptible in both directions, so the pass is pure overhead. For feature-length content the ~3-point low-frame gain finally clears the perceptibility bar, but only if you are encoding to a target bitrate in the first place. If you are not, the next section applies and the table is moot. The speed-preset dial that compounds these time costs is covered in encoder speed presets and their tradeoffs.

Why two-pass is pointless with CRF

Because CRF has nothing to redistribute toward. Two-pass matters for constrained or target-bitrate VBR encoding, where a fixed budget must be spread intelligently across the timeline. CRF and constant-quality are already single-pass optimal, because there is no fixed budget to reallocate, so a second pass has no job to do (slhck, 2017). Each frame simply gets the bits it needs to hit the quality target.

This is the piece "always two-pass" advice gets flatly wrong. When you encode with CRF, the encoder is not rationing a bitrate budget, so it never has to choose which scenes to starve. It gives every frame enough bits to reach the target quality and stops. There is no leftover budget to move from easy scenes to hard ones, because the concept of a leftover budget does not exist. A second pass would re-derive the same per-frame decisions.

The encoders themselves confirm it. In SVT-AV1's CRF mode, the first pass runs the same prediction structure as the second pass, and its two-pass mode is documented as delivering the best BD-rate and rate-matching but only for latency-tolerant, target-bitrate work, invoked with --pass 2 (SVT-AV1 rate-control docs). The rate-matching benefit is meaningless when you are not matching a rate. So if your pipeline is CRF, and most VOD and image pipelines are, the two-pass question is already answered: single pass.

Citation capsule: CRF and constant-quality encoding are already single-pass optimal, because with no fixed bitrate budget there is nothing to redistribute toward. Two-pass only helps constrained or target-bitrate VBR, which is why "always two-pass" is wrong advice for the CRF workflows most VOD and image pipelines actually run (slhck, 2017).

The full case for using CRF over target bitrate in the first place is in CRF versus bitrate versus constrained quality, and the constant-quality mindset carries straight into content-adaptive per-image quality.

Do image encoders have a two-pass mode?

Not in the video sense, and the reason is fundamental. Stills are overwhelmingly single-pass, because the entire rationale for two-pass, measure complexity, then redistribute bits across time, is temporal. A single image has no timeline, so there is no sequence of scenes to profile and no place to move bits from or toward. The first-pass-stats to second-pass logic has no single-frame analogue.

What looks like "two-pass" in image encoders is a different animal: an iterative quality search. Encoders like Guetzli and features like q_auto run trial encodes to converge on a Butteraugli or SSIMULACRA target, re-encoding at adjusted settings until the perceptual score lands where you asked (Cloudinary q_auto). That is a search for the right quality setting, not a first pass that plans bit allocation for a second.

We see this conflated constantly, and the confusion leads teams to look for a nonexistent --pass 2 flag for images. The mental model to keep is that video two-pass answers "how should I spread a fixed budget across time," while image iterative search answers "what single quality setting hits my perceptual target." Different questions, different machinery. For a still, the real decision is picking a constant-quality target like cjxl --distance or a metric floor, not adding a pass. The iterative-search machinery is detailed in Butteraugli and SSIMULACRA2 explained.

Side-by-side concept diagram: left, video two-pass with a first-pass stats log feeding a second pass across a timeline; right, a still image with a pass-2 icon crossed out and replaced by an iterative quality-search loop toward a metric target

Video two-pass plans bits across time, while a still runs an iterative quality search toward a Butteraugli or SSIMULACRA2 target (SVT-AV1 docs; Cloudinary q_auto).

The decision rule, in one pass

Two-pass pays only when both conditions hold at once. Condition one: you must hit a target average bitrate or file size, so you are in VBR, not CRF. Condition two: complexity varies a lot across a long timeline, so there is meaningful budget to move from easy scenes to hard ones. Miss either condition and the second pass is overhead you cannot justify.

That rule rules out most workflows cleanly. It does not pay for CRF or constant-quality, because there is no budget to redistribute. It does not pay for short clips, where the delta stays below the ~3-VMAF perceptibility threshold (Ozer, 2023). And it does not pay for live or low-latency encoding, because the first pass cannot see frames that have not arrived yet, and SVT-AV1's two-pass is explicitly latency-tolerant only (SVT-AV1 rate-control docs).

So the honest default is single-pass, and two-pass is the exception you reach for on long, target-bitrate encodes where landing an exact file size matters. On a 90-minute VBR file that buys you plus-or-minus 0.5% bitrate precision instead of plus-or-minus 2% (Fora Soft, 2026), plus the low-frame safety margin, in exchange for +24% time (Ozer, 2023). Everywhere else, one pass is not a compromise. It is the correct answer. At Inverity we treat that as a measurement question first: the number of passes should follow the evidence for your content and mode, not a slogan.

FAQ

Does two-pass encoding beat single-pass?

Only for target-bitrate VBR on mostly long content, and even then modestly. On feature-length files two-pass matched single-pass on average VMAF but gained about 3 low-frame points for +24% time (Ozer, 2023). On short and mid-length clips the difference sat below the ~3-VMAF perceptibility threshold, so it is not worth the extra pass.

Should I use two-pass with CRF?

No. CRF and constant-quality are already single-pass optimal, because with no fixed bitrate budget there is nothing for a second pass to redistribute toward (slhck, 2017). A second pass would re-derive the same per-frame decisions. Reserve two-pass for constrained or target-bitrate VBR workflows where hitting an exact average matters.

How much longer does two-pass take?

It scales with content length. The extra-pass time cost was about +3% on short clips, negligible on mid-length clips, and +24% on feature-length content (Ozer, 2023). The cost rises with length alongside the benefit, so the content where two-pass helps most is also where it is most expensive to run.

What does the first pass actually measure?

Source complexity and its location on the timeline. The first pass analyzes the video and writes a stats log identifying high-complexity scenes, which the second pass uses to allocate bits per frame for the best overall result (Wikipedia, Multi-pass encoding). It produces no usable video, only the plan the second pass follows to redistribute bits.

Do image encoders have a two-pass mode?

Not in the video sense. Stills are single-pass, because the two-pass rationale of redistributing bits across time has no single-frame analogue. What looks like two-pass in tools like Guetzli or q_auto is an iterative quality search: repeated trial encodes converging on a Butteraugli or SSIMULACRA target (Cloudinary q_auto), not a stats pass feeding a second one.