A smart CLI that diagnoses, audits, repairs, standardizes, and optimizes your media to ensure Direct Play on Jellyfin.
🇬🇧 English | 🇧🇷 Português (Brasil)
- 🔍 Compatibility Analysis — Compatibility matrix for Direct Play per Jellyfin client (Chrome, Firefox, Android TV, etc.).
- 🚀 Cleanup (Remux) — Re-wraps to MKV without re-encoding, preserving the original quality.
- 🔄 Conversion (Transcode) — Converts to Direct Play codecs (H.264 8-bit / AAC, EAC3, or FLAC) with configurable fallback rules.
- 🔧 Forced Repair — Fixes files with corrupted timestamps via an intermediate pipeline (
.w64/.mp4). - 🔬 Quick Scan + Deep Scan — Checks container integrity and analyzes frame by frame looking for artifacts and errors.
- 🔬 Myopic Scan — Deep Scan restricted to selected tracks.
- 🎛️ Track Selection — Choose which video, audio, and subtitle streams to keep in the final file.
- ⏱️ Sync Adjustment / End Cut — Defines time offset and end cut to avoid lip-sync issues.
- 🔀 File Merging — Merges tracks from two files into a single MKV, with automatic/manual sync and Strict Mode.
- 🏷️ Tag Editing — Edits language (e.g.,
por,eng,jpn) and title for each track. - 🌐 Internationalization — Interface in English (en-US) and Brazilian Portuguese (pt-BR).
⚠️ Embedded Junk Detection — Detects and removes covers/thumbnails and PGS subtitles that force transcoding.
- FFmpeg & FFprobe (Installed globally on the system)
Important
Make sure FFmpeg and FFprobe are installed globally on your system, as JellyCC strictly depends on them to perform analysis and conversions.
Run the installation script:
curl -fsSL https://raw.githubusercontent.com/parkejunior/jellycc-cli/main/install.sh | bashTo analyze a video file, run the command:
jellyccOr if you prefer, you can open the file directly in the terminal:
jellycc check [path/to/file]
# or
jellycc [path/to/file]If you want to run the full analysis, include the --deep-scan parameter:
jellycc check [path/to/file] --deep-scanTo merge multiple files into a single MKV, run the command:
jellycc mergeIf you want to change the interface language, run the command:
jellycc langTip
Drag and drop the video file directly into the terminal to automatically fill in the path.
Note
The result is saved in the same folder as the original media with the suffixes .jellycc.mkv or .jellycc_merged.mkv.
After analyzing a file, an interactive menu is displayed with the following options:
- 🚀 Cleanup (Remux) — Re-wraps without re-encoding.
- 🔄 Conversion — Converts incompatible codecs for Direct Play.
- 🔧 Forced Repair — Re-encoding via an intermediate pipeline for files with corrupted timestamps.
- 🎛️ Modify tracks — Selects which video, audio, and subtitle streams to keep.
- ⏱️ Adjust Sync / End Cut — Defines time offset and end cut.
- 🔍 Deep Scan — Frame-by-frame analysis of all tracks.
- 🔬 Myopic Scan — Deep Scan only on selected tracks.
- 🏷️ Edit Tags — Edits language and title of each track.
JellyCC uses two main configuration files:
jellyfin-codec-support.yaml— Compatibility matrix per client (Chrome, Firefox, Android TV, etc.) based on the official Jellyfin documentation.fallback_rules.yaml— Conversion rules (container, video and audio codec).
You can edit these files according to your needs. Language preferences are automatically saved in ~/.jellycc.json.
JellyCC is licensed under the terms of the MIT + Commons Clause.
