Back to Blog

FormatFusion: Getting File Conversion Off the Web and Onto Your GPU

Converting a video or an audio file often means uploading it to some website, waiting behind a queue of other people's files, and hoping the "free" tier doesn't clip your file size or quality. FormatFusion is a Windows desktop app built to make that whole detour unnecessary: images, audio, and video, all converted locally, faster than most upload times alone.

The problem

Online converters solve the "I don't want to install anything" problem, but they trade away speed, privacy, and reliability to do it — your file leaves your machine, waits in someone else's queue, and comes back through the same upload/download round trip. A single desktop app that handles all three common media types (image, audio, video) removes the need for that trade entirely.

How it's built

FormatFusion is a PyQt6 app with an MVVM architecture — models, views, and viewmodels kept separate from the conversion logic itself, which lives in a dedicated conversion service. Drag a file onto the dark-themed interface and it detects what to do:

  • Images — PNG/JPG/JPEG/BMP/TIFF/GIF/WebP in, PNG/JPG out, with resizing and KB-based size limiting via Pillow.
  • Audio — WAV/M4A/FLAC/OGG/MP3/AAC/WMA converted to MP3 at a chosen bitrate (128-320kbps) via a bundled FFmpeg binary.
  • Video — MKV/MOV/AVI/WebM/FLV/MP4/WMV/M4V converted to H.264/AAC MP4, with quality presets (480p/720p/1080p/original).

The standout piece is video: FormatFusion auto-detects available NVIDIA, Intel, or AMD hardware encoders and uses them when present, cutting encoding time by 3-5x compared to software-only encoding — with an "ultrafast" preset as the default speed/quality tradeoff. The whole thing is packaged into a standalone Windows executable with PyInstaller, FFmpeg bundled in.

The unglamorous part that actually mattered

Bundling a third-party binary like FFmpeg inside a packaged executable sounds simple until you actually have to make PyInstaller find it reliably across different machines and install locations. That discovery/bundling problem — making sure FFmpeg is found whether it's sitting in the project root, a bin/ folder, alongside other resources, or on the system PATH — turned out to be the recurring source of friction in getting this from "works on my machine" to "works as a distributed .exe."

Try it

The code is on GitHub. If your GPU is sitting idle while a browser tab uploads your video somewhere, this is the alternative.