# FFMetrics: a Windows front end for ffmpeg video quality metrics

> FFMetrics is a Windows desktop program that drives ffmpeg to compute PSNR, SSIM, VMAF and XPSNR across a reference file and up to 24 distorted files, then plots per frame curves you can zoom, pan and export. It suits a video engineer who wants numbers and graphs without hand writing ffmpeg commands, and it is Windows only and depends on an ffmpeg build you supply.

**fifonik/FFMetrics** — Visualizes Video Quality Metrics (PSNR, SSIM, XPSNR & VMAF) calculated by ffmpeg.exe

- Repository: https://github.com/fifonik/FFMetrics
- Stars: 1,039 · Forks: 33
- Language: Unknown
- License: not declared
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/fifonik-ffmetrics

## What the program does for you

FFMetrics is a GUI for ffmpeg, and its purpose is to visualise the quality metrics that ffmpeg calculates.

The problem it addresses is concrete. ffmpeg can calculate PSNR, SSIM, VMAF and XPSNR, but you have to know the filter syntax, the model paths and the right scaling, and the output is a log file with aggregate numbers. When you are comparing one reference against twenty encodes, the command line stops being practical and the log stops being readable.

The program's answer is to let you select files without dealing with the command line, calculate and visualise the metrics for all of them in one go, and give you interactive graphs, as the README puts it, shiny interactive graphs of course.

That framing matters for the limitations. This is a tool for a person at a desk, looking at a handful of files, wanting to understand where the quality fell off. It is not a batch encoding pipeline and it is not a service.

The releases move fast for a desktop utility, with v1.8.0 beta 2 on 2026-05-13, v1.8.0 beta 1 on 2026-05-11 and the stable v1.7.0 on 2026-05-06, and the last push to the repository was on 2026-05-13.

## The four metrics, and the one that needs extra setup

Four metrics are supported, and they do not all have the same cost.

PSNR, SSIM and XPSNR are computed with no limitation on frame size, while VMAF is limited to Full HD and 4K. The reason is in the requirements section rather than the feature list. VMAF requires a special ffmpeg build, and the program has supported it since ffmpeg 4.3 stable, though the author recommends ffmpeg 4 or newer.

VMAF also needs model files, and the program looks for them in a sub-folder called vmaf-models, with the most common models already included in the archive. Other models come from the Netflix VMAF project. And there is a shortcut for current builds: if you use the most recent ffmpeg, the VMAF models may be built in, in which case you do not need separate model files at all.

The model is selected automatically based on the reference media information, and the README says it can be changed through the interface. The type of model is detected automatically too, whether it is in-build, a json file or a pkl file.

So the metric that produces the most useful number for perceptual quality is also the one with the most ways to fail to run. That is the first thing to check when VMAF produces nothing.

## The working loop in the interface

Using the program is five steps, and the interface is the point of the tool.

You unpack it into a folder, put ffmpeg.exe there, along with the accompanying dll files if you use a shared build, or make it available through the system %PATH%. Then you run the program, add a reference file and at least one distorted file, select the metrics you want calculated, and press Start.

The file entry is deliberately forgiving. You can drag and drop files from Explorer onto the Reference field and the Files list, or use the file choosers.

What you get back is per frame data, and the graph interaction is the feature that justifies the program. The frames graphs can be zoomed in and out with the mouse wheel, over the graph or over the graph's axes, panned with the right mouse button, and saved as SVG or PNG. The graphs are optional and can be turned off in the menu or with a command line option, which matters when you are processing many files and only want the summary.

Around the metrics there is supporting information. The program shows brief media info for the reference and the distorted files, and a thumbnail for the reference file. And the frames that scored badly can be extracted and saved as PNG images for further analysis, which is the feature that turns a number into a debugging session, since you can look at the frame the encoder ruined.

## The command line side, and the project file

Most of the program options can be supplied as command line parameters, which is what turns a GUI tool into something you can put in a script.

The invocation takes a reference file followed by the distorted files.

```
FFMetrics.exe \[options\] ref.mp4 file1.mp4 \[file2.mp4\] \[file3.mp4\] \[...\]
```

The options cover the metrics themselves, with -metric=PSNR|SSIM|VMAF|XPSNR defaulting to all, the VMAF model with -vmaf-model, -vmaf-phone-model, -vmaf-pool and -vmaf-subsample, and -vmaf-upscale-to-model for rescaling the reference and the distorted file to the model resolution, which is on by default.

They also cover what to process, with -duration and -skip to analyse only part of a stream, -ffmpeg-dir to point at the ffmpeg location, and -temp-dir for the working files. There is a -project option that reads the options from a file with the .ffmproj extension, which is the natural way to keep a repeatable configuration, and a -run option to start the calculation at launch.

The three examples in the README show the shapes you need. A single comparison with a path on a network share, a run that logs frames and computes only SSIM and VMAF, and a run driven entirely by a project file.

```
FFMetrics.exe -log-frames -metric=SSIM -metric=VMAF -run c:\to\ref.mp4 c:\to1\file1.avi c:\to2\file2.avs
```

All options work with a single leading dash or a double one.

## Getting the numbers out: csv, logs and exported graphs

Several export paths are supported, and between them they cover the two different jobs of a measurement, the per frame detail and the summary.

Per frame metrics can be saved as tab-delimited csv files, which the README says can then be opened in Excel. Separately, average metrics, frames statistics, frame size, bitrate, the date and time and the file name can be saved to a tab-delimited csv file, which is appended to, so a run over many files accumulates into one table.

The ffmpeg commands the program issues can be saved to a log file named FFMetrics.log, and the -log-commands option controls that. There is a matching -log-frames option for the per frame csv output and a -log-frames-dir for where those files go.

The graphs can be saved as SVG or PNG, which matters if the result is going into a report or a ticket rather than into a spreadsheet.

The log level is controllable with -log-level=DEBUG|ERROR|INFO, defaulting to INFO, and the plot update frequency is settable with -plot-update-speed, so a large batch can be run with the plotting throttled or switched off entirely with OFF.

The program is free with no registration, banners or tracking, which is worth noting for a tool that is run against unreleased content.

## The requirements, and the limitation that will bite you

The requirements section is short and the first item decides whether the program runs at all.

It is a Windows application, needing.NET Framework 4.8.0 or later. The framework has been included in Windows since version 10 1903, so on a current machine there is nothing to install, but on earlier Windows 10 or on Windows 7 and 8 the program asks you to download and install it. The second requirement is ffmpeg.exe, which you download from the official ffmpeg site. The author suggests a static build for simplicity and recommends a shared build for real usage.

The limitation section is where the practical warning is: you have to be very careful and supply video files in the same colour range, which is the classic full range versus limited range colour mistake.

That is worth spelling out as the pitfall, because it is the one that makes a metric meaningless rather than merely wrong. A limited range video compared against a full range reference produces numbers that are not a small offset, they are a different measurement, and no amount of graph reading will tell you that. The scaling method is settable with -scaling-method, with NEIGHBOR, GAUSS, BILINEAR, BICUBIC, LANCZOS, SINC and SPLINE available and BICUBIC as the default, which is the knob to reach for when the comparison looks wrong for a reason you cannot see.

The repository itself is thin, holding a README, a TODO file and a screenshots directory, so the program source is not part of what is published here.

## Conclusion

Adopt FFMetrics if you compare encoded video against a reference regularly and want the metric computation, the model selection and the per frame graphs in one tool, because the alternative is a pile of ffmpeg command lines and log files to read by hand. Do not adopt it as a batch pipeline component, since it is a Windows desktop application built on the .NET Framework with a GUI at its centre, and it is not a library. Before you start, install an ffmpeg build that has VMAF support and put the vmaf-models folder beside the executable, because VMAF is the metric that most often fails to run for reasons that have nothing to do with your test files.

## FAQ

### What is FFMetrics and what does it calculate?

FFMetrics is a Windows GUI for ffmpeg that visualises video quality metrics. It calculates PSNR, SSIM, VMAF and XPSNR for a reference file and up to 24 distorted files in one run, with no frame size limit for PSNR, SSIM and XPSNR and Full HD or 4K for VMAF.

### What does FFMetrics need installed?

It needs Windows with .NET Framework 4.8.0 or later, which is already included since Windows 10 1903, and an ffmpeg.exe that you place in the program folder or make available through the system %PATH%. VMAF additionally needs a special ffmpeg build, from version 4.3 stable onwards, and model files in a vmaf-models sub-folder unless your ffmpeg has them built in.

### Can FFMetrics be run from the command line?

Yes. The invocation is FFMetrics.exe [options] ref.mp4 file1.mp4 and most options can be given as parameters, including -metric, -duration, -skip, -ffmpeg-dir, -vmaf-model and -project for a saved project file. All options work with a single or a double leading dash.

### How do I get the per frame results out of FFMetrics?

Per frame metrics can be saved as tab-delimited csv files with the -log-frames option and a -log-frames-dir location, while average metrics and frame statistics can be appended to a separate csv file. The graphs themselves can be saved as SVG or PNG, and the ffmpeg commands issued can be logged to FFMetrics.log.

## Sources

- [fifonik/FFMetrics on GitHub](https://github.com/fifonik/FFMetrics)
- [Issues](https://github.com/fifonik/FFMetrics/issues)
- [README](https://github.com/fifonik/FFMetrics/blob/master/README.md)
- [Releases](https://github.com/fifonik/FFMetrics/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/fifonik-ffmetrics
