A Windows app for getting TV episodes and anime ready for Plex / Jellyfin: find and remove intros and credits (or mark them with Skip Intro chapters), export theme songs, even out loudness across a season, and check that nothing was lost or broken along the way. Built on FFmpeg.
Successor of the original single-file Intro & Credits Toolkit. Version 2.0 is a near-complete rewrite: frame-exact detection (with or without templates, by sound and picture), a review-before-encoding workflow, a HandBrake-style converter, Plex-ready presets, audio tools, an mpv-based player, a job queue, a modern Fluent UI with 13 themes and 19 languages.
Download from Releases:
MediaPrep-Toolkit-Portable-2.0.1.exe- single file, run it anywhere; your data goes into amediaprep-datafolder next to it. The first start unpacks the app once (a few seconds), later starts take under a second.MediaPrep Toolkit v2.0.1.zip- unzip anywhere and runMediaPrep Toolkit.exe(fastest start).
FFmpeg and mpv are included - nothing else to install.
- Finds intros, credits, pre-intros and after-credits by sound, picture or both, then places every edge frame-exact using the picture (sound can't tell where a silent gap belongs). Edges that can only be approximate (fades, no picture cut) are marked ⚠.
- Template matching follows the template's own first/last frame; template- free scans add a 1-frame safety margin (0-5) so no single intro frame flashes at the join. Works across releases (720p, shifted, 25 fps PAL).
tools/accuracy_test.py- reusable accuracy test suite.
- Cut template - frame-accurate preview player (with sound), Set the current frame as a boundary, Snap it to the nearest silence / black frame, cut pre-intro / intro / credits / after-credits template clips.
- Auto-detect - point it at a season (2+ episodes): it finds the intro and credits without any template by spotting audio that recurs across episodes. Shows with several openings/endings (anime!) get one row per variant. Audition a row across episodes before cutting it.
- Templates manager - list, play, rename, import, reveal or trash templates.
- Auto-detect batch - match every episode in
Media\videosagainst all template variants and process the whole folder. - Review first (detect only) - dry run: every episode lands in the Multi cut list with its detected times, weak matches flagged ⚠, so you can fix them before hours of encoding.
- Manual cut with Auto-detect: fills the boxes from the best template match, a ▾ list offers the other candidates (other OP/ED variants), then nudge to the exact frame with Set / Snap / arrow keys.
- Multi cut - many files, each with its own times; Up/Down flicks between episodes at the same timestamp.
- Run modes: Cut, Inject keyframes, or Add chapter markers (stream copy - no re-encode - Plex/Jellyfin offer Skip Intro).
- Codecs: Plex-ready HEVC / H.264 (near-lossless, bitrate capped below the source so files never grow, Plex-friendly audio, MKV), H.264, H.265, AV1, NVIDIA NVENC (automatic CPU fallback without an NVIDIA GPU), or Auto.
- Seamless joins: audio is built in one pass over all kept pieces, so there is no dropout at the cut points and sound stays in sync.
- Every audio track kept (5.1 stays 5.1, DTS → E-AC3), subtitles kept with
their forced/default flags (optional language filter), a
[VERIFY]check after each file, finished sources moved tovideos\done. - Per-show presets and Add to queue for overnight runs.
- Queue of files/folders, built-in and own presets (Plex-ready HEVC/H.264, high quality, small file, AV1, archive, fast GPU).
- H.264 / HEVC / AV1 (CPU or NVENC), CRF/CQ or bitrate, never-bigger cap, resize, auto crop, deinterlace, denoise, deblock, HDR→SDR.
- Per-track audio (copy/AAC/AC3/E-AC3/Opus/FLAC, downmix) and subtitles (keep, default, forced, burn-in), MKV or MP4.
- Preview: encode a 10 s sample, compare it A/B, see the estimated size and time first.
- Theme Audio - export the intro as
theme.mp3for Plex, with fades, optional -16 LUFS normalisation and a preview. - Audio Gain - gain by dB, two-pass LUFS (per track, true-peak ceiling) or peak, for one file or a whole season with a LUFS / peak / gain table, per-language track picker and "only fix outliers".
- Dual Player - original vs cleaned side by side, linked seeking.
- Compare - tracks (dropped tracks/languages, flags, attachments) and picture quality (SSIM, PSNR, VMAF) with auto-alignment.
- Check - quick or full-decode check of files/folders for corruption.
- Video player powered by mpv (GPU decoding, instant frame stepping, 16:9 preview); falls back to OpenCV if mpv is missing.
- Fluent design: sidebar navigation, info icons instead of walls of text, fixed pages that scroll instead of reflowing, progress always visible.
- "Limit CPU use" (on by default): low priority + thread cap for all encodes.
- Job queue with status bar, Windows notifications when long jobs finish, update check (GitHub releases), per-tab ? help.
- 13 themes incl. Follow Windows, Plex, Gold on Dark, Nord, Dracula, Solarized; all pass WCAG 4.5:1 text contrast.
- 19 languages: English, Svenska, Español, Deutsch, Français, Português (BR), Italiano, Русский, 日本語, 简体中文, Norsk bokmål, Dansk, Suomi, Polski, Nederlands, Türkçe, 한국어, हिन्दी, Bahasa Indonesia.
- Nothing is ever deleted outright - "delete" means
Data\temp\trash.
Created next to the app on first start:
| Folder | Contents |
|---|---|
Media\videos |
episodes to process (done\ = finished sources) |
Media\output |
cleaned episodes |
Media\templates\{intro,credits,preintro,aftercredits} |
template clips |
Media\Audio Gain\{input,output} |
Audio Gain batch |
Data\ |
settings.json, presets\, logs\, temp\ (+ trash\), backups\ |
Upgrading from 1.x: the old folders are moved into Media\ / Data\
automatically on first start (nothing is deleted).
Requires Windows, Python 3.10+ and FFmpeg on PATH.
Install Requirements.bat
Start Toolkit.battools\Start Toolkit (debug console).bat shows Python errors in a console.
Build the exe with python tools\build_exe.py (PyInstaller).
intro_credits_toolkit.py launcher
app/
app.py config.py i18n.py migrate.py jobs.py notify.py updater.py
presets.py helpdocs.py applog.py selftest.py
engine/ ffmpeg/ffprobe work, no UI: probe, process, files, encode,
detect, recurring, cut, chapters, subs, loudness, snap
ui/ widgets, player, playback, dual player, dialogs, themes, cleanup
tabs/ templates*, cut_*, theme_audio, audio_gain*, compare, check, log
locales/ one JSON catalog per language (tools/i18n_extract.py --check)
assets/ icon
tools/ build script, PyInstaller spec, i18n extractor, debug launcher
UI strings are English keys wrapped in tr(). Run
python tools\i18n_extract.py --check to see missing keys per language;
corrections to app/locales/<lang>.json are welcome.
MediaPrep Toolkit is free software under the GNU General Public License v3.0 or later - see LICENSE.
The release builds bundle FFmpeg (gyan.dev full build, GPLv3) and mpv
(GPLv2+) - see _internalfmpeg\README-ffmpeg.txt and
_internal\mpv\README-mpv.txt for their licenses and source links.