HandyMKV

A MakeMKV + HandBrake productivity tool.

HandyMKV is a console application that aims to make the process of ripping a disc from MakeMKV and then encoding the resulting file with HandBrake so that I can the resulting files into my media library quicker, more efficient, and less error prone. I am an avid collector of (legally obtained) media. Tools like MakeMKV and HandBrake enable collectors like me to take their disc video media and put it on their home server so applications like Plex or Jellyfin can make consuming it much more convenient. However, both of those applications are GUI-based and clicking through menus (even with HandBrake presets) makes the process more of a chore than I would like.

For example, I would have to start the ripping process in MakeMKV which usually takes about 20 minutes plus. Then once that is done I would have to queue up the HandBrake job on the resulting raw files. The HandBrake process again takes lots of time to complete. Since both of these process take manual steps on my part and involve waiting a considerable amount of time its easy to get distracted and go do something else between steps. Then once everything is the challenge of remembering to delete the usually HUGE unencoded files. Then move the files to my home server. Even when done perfectly this process would take lots of time with lag between the steps. However, if I made a mistake or there was some unforeseen issue then I would likely have to start the process all over again. And remember that I was doing all of this on my main computer which meant (during the HandBrake process at least) I was not really able to do anything else since my system resources were being dedicated to the task.

HandyMKV solves a lot of these problems. Firstly, it allows me to offload the process to my headless home server. No longer do I have to choose between gaming and building up my media collection! Secondly, it couples the ripping and encoding processes so no interaction is needed between them. It also has options to do automatic cleanup of raw MakeMKV output files. Thirdly, it takes advantage of Go's (the programming language HandyMKV is written in) excellent concurrency model to execute ripping and encoding tasks in parallel. This saves considerable amount of time. Finally, I designed MakeMKV to be configuration based, meaning I set up my settings once and forget about it. I just select the titles I want and then start the process.

Here is a screenshot of HandyMKV in action:

HandyMKV

Once I developed HandyMKV to the point where it was saving me hours of time I started to think about releasing the project for anyone to use. I added some functionality with regard to the configuration settings. Users can choose between setting up simple encoding settings by answering a few prompts at config setup time. I tried to choose settings that are likely to be used in the most common use cases. However, users can also opt to use built-in HandBrake presets or a custom HandBrake preset instead. This allows HandyMKV to be simple to use, while still allowing power users to have the flexibility they want when it comes to the encoding phase.

I had a great time developing HandyMKV as it solves a real problem that I was having and has resulting in dozens of hours of saved time. I hope in the future more people use it and provide me with constructive criticism, ideas for more features, or make contributions themselves!

If you are interested in learning more please checkout the project on GitHub.

Written by Daniel Marshall

Published on January 31st 2025