Keyboard Driven, AV1/H265/Lossless, MPV Video Cutter.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-20 16:29:30 +02:00
assets feat: Wrote a new README 2026-09-08 15:06:12 +02:00
src fix: Progress % is now accurate in all cases 2026-09-16 03:47:18 +02:00
AGENTS.md feat: AGENTS.md now forces agents to follow the existing code style 2026-09-05 14:26:21 +02:00
CLAUDE.md feat: Added AGENTS.md 2026-09-05 13:15:17 +02:00
LICENSE init 2026-08-05 22:48:45 +02:00
main.lua feat: Added Trash as a global bind 2026-09-20 16:29:30 +02:00
README.md feat: Added Trash as a global bind 2026-09-20 16:29:30 +02:00
tachytome.conf feat: Changed default font size, some UIs were overlapping 2026-09-07 08:17:19 +02:00

Tachytome

Tachos (τάχος) – Speed
Tome   (τομή)  – Cut

Keyboard Driven, AV1/H265/Lossless, MPV Video Cutter.

Click the image to view a quick showcase of Tachytome capabilities.

Table of Contents

Why Tachytome?

Cutting clips was always an exhausting chore for me.
I would clip something, navigate to it, open a video editor/cutting utility, drag and drop or paste the path, and so on.
Now consider the fact I have ~1TB of clips.
I built Tachytome to make cutting clips fun, easy and fast.
You run into a good clip, and Tachytome is right there, ready to cut the important part with the settings of your choice.
No more copying paths, no more external software with poor UX, it's all there, right in your video player.

Installation

Dependencies

  • ffmpeg - needed for all the video operations.
  • gio/trash - needed on Linux for trashing files.

gio is preinstalled on most distributions

  • Arch
sudo pacman -S ffmpeg
  • Mac
brew install ffmpeg
  • Windows
winget install -e --id Gyan.FFmpeg

Clone

You may clone the repo directly to your config:

  • Unix
git clone https://git.nnstdios.com/nnra6864/tachytome ~/.config/mpv/scripts/tachytome
  • Windows (Powershell)
git clone https://git.nnstdios.com/nnra6864/tachytome "$env:APPDATA/mpv/scripts/tachytome"

Submodule

If you are source controlling your dotfiles, consider adding Tachytome as a submodule:

  • Unix
git submodule add ../../nnra6864/tachytome ~/.config/mpv/scripts/tachytome
  • Windows (Powershell)
git submodule add ../../nnra6864/tachytome "$env:APPDATA/mpv/scripts/tachytome"

Note

../../ in the link makes git use the same server as your root repo.
For example, if your dotfiles are hosted on https://github.com/name/dotfiles, double ../ will make it go up twice in the URL, ending up with https://github.com/, and then appending nnra6864/tachytome to that, resulting in https://github.com/nnra6864/tachytome

Usage

Tachytome is entirely keyboard driven.
All the binds are isolated into a submap (Tachytome menu), which you can access by pressing t by default.
This is done to avoid global bind conflicts.

Quickstart

  • t to open the Tachytome menu.
  • g and type in 10 to go to 10 seconds of your video.
  • i to mark in.
  • g and type in 90% to go to 90% of your video.
  • o to mark out.
  • I and O to make sure mark in and out are good.
  • p to set the name of your video.
  • Enter to start the render.
  • r to access the render queue.

Keymap

Keybind Action Description
t Menu Open the Tachytome menu.
nil Go To Open the Go To menu.
nil Trash Trash current file.

Menu

Keybind Action Description
i Mark In Mark the start of the video.
o Mark Out Mark the end of the video.
I Go To In Go to Mark In.
O Go To Out Go to Mark Out.
g Go To Go to a precise location in the video.
Learn more about Go To.



e Encoder Set the video encoder.
q Quality Set the video encoder quality parameter.
P Preset Set the video encoder preset parameter.
F FPS Set the FPS of the video.



l Lossless Cut Toggle the lossless cut option.
a Accurate Cut Toggle accurate cut.
Makes cuts millisecond precise, but may cause a slight delay before rendering starts.
c Combine Audio Toggle the combine audio option.
t Trash Source Toggle trashing of the source file on render completion.



_ Space Replacement Set the character to replace spaces with.
p Path Set Output path.
Learn more about Path.



Enter Render Start the render of the output file.
R Pause Render Pause the current render and render queue.
Can only pause the render queue on Windows.
r Render Queue Open the render queue menu.
d Trash Source Now Trash the source file.
s Stats Display Tachytome stats.



Esc Close Close the currently active menu.

Render Queue

Keybind Action Description
Enter Pause Render Pauses the current render and render queue.
Can only pause the render queue on Windows.
p Change Path Change output path.
d Delete Deletes the item from the render queue.

Path

Keybind Action Description
Up/ctrl+k Previous Select previous item in history.
Down/ctrl+j Next Select next item in history.

Lists (Render Queue, Preset etc.)

Keybind Action Description
Up/ctrl+k Navigate Up Navigates to item above.
Down/ctrl+j Navigate Down Navigates to item below.

Config

You can configure Tachytome with the mpv/script-opts/tachytome.conf file.
It should get automatically generated on the first launch.
You can find that same example config here.
The example config contains detailed explanations of all the settings, I would highly suggest reading it.

To access exposed Tachytome functions, add the following to your mpv/input.conf:

t script-binding tachytome/menu
g script-binding tachytome/goto
d script-binding tachytome/trash

Replace t, g and d with keys of your choice.

Recovery

Tachytome gracefully handles crashes and accidental closes.
Render queues are stored as files tied to the mpv PID.
Every time you start a new mpv instance, the script checks if any of these are present without an active mpv instance.
It then asks you whether you want to recover, discard or ignore the queue.

Go To

Tachytome includes a really powerful Go To implementation.
On top of many input types, it also supports relative jumps.

Prefix

You can prefix + or - to make go to relative to the current time.

HH:MM:SS.MS

This is arguably the most versatile format as you can do 30 to go to 30 seconds, but also 1:2.50 to go to 1 minute 2 seconds 500 milliseconds.

Suffix

This is a convenient format to jump across minutes, hours etc.
Instead of having to type 1:0, you simply type 1m to go to 1 minute.

Suffix Value
ms millisecond
s second
m minute
h hour
d day
f frame
% percent

Examples

Input Goes To
+30 30 seconds ahead
2:0 2 minutes
1:13 1 minute 13 seconds
3m 3 minutes
50ms 50 milliseconds
-60f 60 frames back
5% 5%

Path

Tachytome offers powerful path resolution.
Config includes the output_dir option which you can set to the path you most commonly use, by default ~/Videos/Tachytome.

Prefixes

Prefix Resolves To
Relative to the configured output_dir.
~ Home on Unix, user directory on Windows.
/ Root directory.
./ Directory where the source file is.
../ Parent directory of the configured output_dir.

Examples

Input Resolves To
CutClip ~/Videos/Tachytome/CutClip.mkv
~/CutClip ~/CutClip.mkv
/CutClip /CutClip.mkv
./CutClip /path-to-source/CutClip.mkv
../CutClip ~/Videos/CutClip.mkv

Contributing

If you are interested in contributing, feel free to just open a PR.
The only thing I ask you to do is follow the commit naming convention.
AI is allowed as long as you fully review, understand and, most importantly, test the code.

Donations

Whilst Tachytome is entirely free, both as in speech and beer, I do highly appreciate donations as they are my only source of income.

AI

AI was heavily used in the making of Tachytome.
As I am not yet familiar with Greek, I asked AI for Greek Eastern Orthodox words that would fit my app, and then combined the 2 suggestions.
On top of that, AI wrote most of the code for me as I genuinely don't enjoy Lua.
To be precise:

  1. I gave it my original fish script, spc.
  2. Wrote instructions in pseudocode style that it translated to Lua.
  3. Dictated the exact structure of the code.

In short, whilst AI did write the code itself, the logic/structure, README and the original idea came from me, not the AI.
If that doesn't sit well with you, this repo is CC0 licensed, so feel free to do whatever you want with the code and the idea, it's a gift.

☦

   Ὤ
 Ὁ   Ν
Ι̅Ϲ̅ │ Χ̅Ϲ̅
───┼───
ΝΙ │ ΚΑ
   ☦

Εἰς δόξαν τοῦ Θεοῦ
To the glory of God

Τῇ Ὑπεραγίᾳ Θεοτόκῳ δόξα
Glory to the Most Holy Theotokos

Δόξα τῷ Θεῷ πάντων ἕνεκεν
Glory to God for all things

ΑΜΗΝ

☦