Skip to content
Tool · Encoder comparison

Video Encoder Comparison Report

Built by Raul Vecchione

Here you will find a simulated source video frame and two FFmpeg-transcoded variants of the same video. This simulates the impact you can obtain by tweaking encoder configurations, in this case, the Constant Rate Factor (CRF) by 2 points.

The point is the question, not the codec. The highest-payoff moves are usually small and cheap: one setting, 21% fewer bits, nothing anyone can see. Measure a first move the same way: what it cost, what it returned, whether anyone noticed.

The objective is not to demonstrate a production transcoding setting but the potential impact on bitrate and consequently CDN savings. Subjectively check visual quality vs. bitrate for potential savings. Objective data is also provided below to back improvement statements.

bitrate reduction, CRF 22 vs source
32.26%bitrate reduction, CRF 22 vs source7817.724 kbps to 5295.443 kbps
PSNR at frame 100
43.01 dBPSNR at frame 100above the ~40 dB range where differences stop being visible at this size — row 101 of the 150-frame series below, which is 1-indexed
between the two encodes
1.21 dBbetween the two encodesCRF 20 44.22 dB, CRF 22 43.01 dB

Compare the frames

Comparison View

Wipe view: Move the wipe across a specific area to compare two frames directly and spot compression artifacts or quality differences.

Source Image: Source, h264, 1920x1080
CRF 20 Image: CRF 20, h264, 1920x1080

LeftSource

Codec
h264
Resolution
1920x1080
Bitrate
7817.724 kbps
PSNR vs source (frame 100)
N/A
Open the 1600px frame for Source in a new tab

RightCRF 20

Codec
h264
Resolution
1920x1080
Bitrate
6686.158 kbps
PSNR vs source (frame 100)
44.22 dB
Open the 1600px frame for CRF 20 in a new tab

Frames are shown at up to 960px wide here and re-encoded near-losslessly for delivery (AVIF quality 92, WebP quality 95) rather than at the aggressive settings used elsewhere on this site, so the artifacts you are judging are the video encoder's and not this page's.

Reveal the measurements

Technical Details

ImageDescriptionCodecResolutionBitrate (kbps)Bitrate Difference (vs Source)Bitrate Difference (vs CRF 20)PSNR vs Source (Frame 100)Vision model MOS (1 to 5)
Image 1Sourceh2641920x10807817.724 kbpsN/Anot reportedN/A4.2
Image 2CRF 20h2641920x10806686.158 kbps-14.47%N/A44.224.2
Image 3CRF 22h2641920x10805295.443 kbps-32.26%-20.80%43.014.3

Vision model MOS: a vision language model (gpt-5.5-2026-04-23, run 13 October 2026) scored each frame alone, 1 to 5, without the source or the PSNR. It rated all three about the same. A 0.1 gap from one frame each is not a ranking: the model cannot see the 2 CRF points either. The same pipeline, on three clips: AI video-quality scoring.

Average PSNR Comparison (vs Source)

ComparisonAverage PSNR (dB)
Image 2 (CRF 20) vs Image 1 (Source)46.22
Image 3 (CRF 22) vs Image 1 (Source)44.52

These are the original report's own averages. The mean of the 150 sampled frames listed below is 46.48 dB and 44.66 dB, so the two are measured over different spans.

Per-Frame PSNR Comparison (vs Source)

Per-frame PSNR against the source, frames 1 to 150, for the CRF 20 and CRF 22 encodesBoth encodes are at their highest on frame 1 — 50.31 dB for CRF 20 and 47.4 dB for CRF 22 — and decline unevenly to their lowest on frame 150, 43.22 dB and 41.8 dB. CRF 20 stays above CRF 22 on every one of the 150 frames, and the gap between them narrows from about 2.9 dB at the start to about 1.4 dB at the end. From roughly frame 61 the CRF 20 line saws between about 43 and 46.7 dB as periodic frames dip sharply. Exact values for every frame are in the table below the chart.42444648501255075100125150Frame NumberPSNR (dB)
  • PSNR (CRF 20 vs Source)
  • PSNR (CRF 22 vs Source)
Show all 150 per-frame values
Per-frame PSNR against the source, in decibels
FramePSNR, CRF 20 vs source (dB)PSNR, CRF 22 vs source (dB)
150.3147.4
249.2146.85
348.1446.28
448.6746.6
548.6646.47
649.0446.77
748.145.77
848.5446.18
948.3645.93
1048.5246.08
1148.2945.83
1248.3945.86
1347.9145.42
1448.846.27
1548.2745.83
1648.646.17
1748.0445.55
1848.2945.83
1948.245.75
2048.4145.91
2148.0745.55
2248.4346.06
2348.2645.75
2448.4145.91
254845.46
2648.6646.12
2748.3845.85
2848.6146.02
2947.4844.92
3048.1145.72
3147.8945.46
3248.0345.57
3347.5345.01
3448.1145.7
3548.0945.61
3648.3245.88
3747.545.07
3848.2945.86
3947.7745.45
404845.66
4147.2644.91
4247.9945.64
4347.6545.28
4447.9645.58
4547.244.82
4647.8545.48
4747.7645.58
4847.9145.55
4947.1244.75
5047.5845.3
5147.2445.01
5247.4745.27
5347.0844.86
5447.8545.63
5547.745.46
5647.9545.64
5746.6544.34
5847.3645.36
5946.3144.68
6046.5144.84
6144.5943.23
6246.4344.78
634644.52
6446.1644.6
6544.3243.05
6646.2644.66
6745.9144.44
6846.0344.49
6944.4143.12
7046.1844.56
7146.1844.69
7246.2644.68
7344.343.1
7446.5944.97
7546.4844.98
7646.544.98
7744.4643.29
7846.4344.9
7946.4444.98
8046.2844.82
8144.2943.19
8246.4744.93
8346.3944.92
8446.5444.94
8543.9842.85
8646.2144.67
8746.2344.74
8846.244.65
8944.4843.26
9046.2644.72
9146.2144.71
9246.2144.71
9344.4243.24
9446.3744.79
9546.244.71
9646.1444.57
9744.2743.09
9846.3144.74
9945.9944.53
10046.0844.55
10144.2243.01
10246.1844.62
10345.8744.44
10446.0744.51
10544.2243
10646.1544.51
10746.0644.48
10846.6644.84
10945.9644.2
11046.7244.82
11146.2344.47
11246.2844.52
11343.7942.45
11445.6343.98
11545.3343.86
11645.5443.99
11743.842.46
11845.7244.08
11945.3543.89
12045.5243.95
12143.7442.49
12245.8544.27
12345.4944.03
12445.8144.25
12543.8842.62
12645.9244.35
12745.6344.17
12845.9344.39
12944.0942.83
13045.9844.41
13145.6944.24
13245.844.27
13344.0242.78
13445.8444.27
13545.5444.03
13645.7144.17
13743.942.66
13845.7744.2
13945.4344.03
14045.6444.12
14143.4442.24
14245.2443.74
14344.9843.58
14445.1543.65
14543.5842.29
14644.8243.34
14744.3442.97
14844.7943.28
14943.5942.17
15043.2241.8

FFmpeg Resources

Download the following resources to learn more about the FFmpeg commands used in this project: