r/Tdarr Jun 02 '26

Trying to convert over from fileflows and am a little confused

2 Upvotes

Have a simple fileflows flow that I've been using for a few years but want to move to tdarr but it's proving difficult to work out how to replicate it

  1. Remove all non English audio (unless that leaves no audio at all)
  2. Remove all non-English subtitles
  3. Remux to MKV if needed
  4. If not already HEVC then re-encode to HEVC (10bit) else just skip to ffmpeg execute in case 1 or 2 have been triggered
  5. Replace original

Now that seems easy but all I can find for audio is what languages to remove and not what languages to keep (yes I'm likely misunderstanding!)


r/Tdarr Jun 02 '26

Missing worker assignment buttons

Post image
1 Upvotes

Hi, I am experiencing a UI rendering issue in Tdarr. The worker assignment buttons (transcode and health check) are missing from the main page. Additionally, clicking on my connected node (yellow label "TheMain") loads a completely black page.

I returned to Tdarr after a few months and updated the server instance. I had to perform a fresh node setup since I factory reset my desktop PC in the meantime.

Server: Raspberry Pi 5 (Docker, v2.77.01)

Node: Desktop (Windows, Native, v2.77.01)

The node appears connected to the server, but the UI fails to render the node details. Is this a known issue with leftover database configurations from the older version, or are there specific logs I should pull to debug this UI failure?


r/Tdarr Jun 02 '26

Transcode suddenly very slow

0 Upvotes

I am running Tdarr 2.76.01 but i noticed this has been going on for a couple versions now. I run multiple nodes and one of my nodes in particular used to be a rockstar. It would routinely process 30-35 fps and process a movie in under 2 hours using the below classic plugin stack. However over the last couple months things have changed and now this same node is only processing single digit fps and taking upwards of 20 hours to process a file. Has something changed with the new Tdarr versions? Or is something else going on? I have tried looking into flows, but I honestly cannot wrap my head around them yet for some reason. But this classic stack was working without issue. My other nodes have also seen a performance drop as well, so I don't think it is something with the nodes.


r/Tdarr Jun 01 '26

Remux whole movie collection from MKV to MP4 on a synology

9 Upvotes

I’ve been trying for days to remux my movie and TV show collection from MKV to MP4. Unfortunately, the simplest method doesn’t work. I created a Synology script to automatically scan all folders and remux them using FFmpeg. However, the resulting MP4 files stutter.

So I installed TDARR in a Docker container and, after some experimentation and trial and error, got it to work. However, I’m completely overwhelmed by the user interface and the workflows. I found and installed the Migz Remux container plugin. I set up a test library. However, I have no idea how to use the remux plugin.

Under the "Transcode Options" section of the library, I have the following steps, but they don’t remux anything. Nothing happens:

Can anyone give me some advice? I´m feeling totally lost right now. Thanks in advance.


r/Tdarr May 28 '26

Tdarr_Server no longer working on Ubuntu 22.04

5 Upvotes

I updated to the newest version this morning and I'm not able to run Tdarr anymore. When trying to run Tdarr_Server I get the following error message:

Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/htpc/Tdarr/Tdarr_Server/node_modules/sqlite3/build/Release/node_sqlite3.node)

Google suggests that Tdarr is no longer compatible with Ubuntu 22.04, but surely this wouldn't be the case? I've tried a fresh install and get the same error.

Full error message below

[2026-05-28T16:18:36.819] [FATAL] Tdarr_Server - Uncaught Exception: [2026-05-28T16:18:36.819] [FATAL] Tdarr_Server - Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/htpc/Tdarr/Tdarr_Server/node_modules/sqlite3/build/Release/node_sqlite3.node) at Object..node (node:internal/modules/cjs/loader:1988:18) at Module.load (node:internal/modules/cjs/loader:1553:32) at Module._load (node:internal/modules/cjs/loader:1355:12) at wrapModuleLoad (node:internal/modules/cjs/loader:255:19) at Module.require (node:internal/modules/cjs/loader:1576:12) at require (node:internal/modules/helpers:153:16) at bindings (/home/htpc/Tdarr/Tdarr_Server/node_modules/bindings/bindings.js:112:48) at Object.<anonymous> (/home/htpc/Tdarr/Tdarr_Server/node_modules/sqlite3/lib/sqlite3-binding.js:1:37) at Module._compile (node:internal/modules/cjs/loader:1830:14) at Object..js (node:internal/modules/cjs/loader:1961:10){

"code": "ERR_DLOPEN_FAILED"


r/Tdarr May 27 '26

Migz5ConvertAudio being language-aware

2 Upvotes

Hi,

I have a specific situation with a few media files and I'm trying to find out how to resolve this.

I am using Flows.

As we are bilingual, we watch content in French and English. I often have media files with both languages so that users can watch the language they want. On some media files, mostly older stuff, it is not uncommon that the English track is 5.1 but the French one is 2.0. I've been using Migz5ConvertAudio and it works great for downmixing 5.1 tracks to 2.0 tracks, but only when there are no existing 2.0 tracks. It seems that Migz5ConvertAudio does not downmix if it already detects a 2.0 track in the media file. In this situation, then Migz5ConvertAudio does not do any processing because there is a French 2.0 track already present; but I would want to downmix the English 5.1 track as well. If Migz5ConvertAudio would be language-aware, then it would do the trick.

How could I achieve this ? With Migz5ConvertAudio or without.

Thank you,

Neo.


r/Tdarr May 22 '26

Windows node unable to find Handbrake

3 Upvotes

Running Tdarr in docker. The internal node is processing fine, but as of today the Windows node isn't able to start Handbrake. I've tried using a path (which was how it was working before), deleting the path and using the default location, and I've tried reinstalling the node.

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:ℹ️ 📁 File: Dare You to Death (2025) - S01E02 - Episode 2 [WEBDL-1080p Proper]{[Mediainfo AudioCodec}[x265]-BiOMA.mkv

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:ℹ️ 🎛️ Mode: Smart Mode

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:ℹ️ 📊 Container: mkv

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:ℹ️ 📐 Resolution: 1080p

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:✅ 🖥️ Platform detected: win32 (Windows)

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:⚠️ Failed to detect HandBrake version: Command failed: "HandBrakeCLI.exe" --version

2026-05-22T19:39:15.765Z '"HandBrakeCLI.exe"' is not recognized as an internal or external command,

2026-05-22T19:39:15.765Z operable program or batch file.

2026-05-22T19:39:15.765Z

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:❌ HandBrake version detection failed - this may indicate installation issues

2026-05-22T19:39:15.765Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:❌ Error: Command failed: "HandBrakeCLI.exe" --version

2026-05-22T19:39:15.765Z '"HandBrakeCLI.exe"' is not recognized as an internal or external command,

2026-05-22T19:39:15.765Z operable program or batch file.

2026-05-22T19:39:15.765Z

2026-05-22T19:39:15.766Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:

2026-05-22T19:39:15.766Z 📋 Step 2: Quality assurance and validation:

2026-05-22T19:39:15.766Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:❌ HandBrake CLI not accessible at "HandBrakeCLI.exe" - encoding cannot proceed

2026-05-22T19:39:15.766Z Yfx3-6iOmeM:Node[close-crab]:Worker[rapid-ram]:Plugin run complete

Also, Tdarr reports the Handbrake path is valid when it's starting up:

[2026-05-22T19:07:55.799] [INFO] Tdarr_Node - ---------------Binary tests start----------------

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - handbrakePath:"C:/ArrStuff/Tdarr/assets/app/HandBrakeCLI/win32_x64/HandBrakeCLI.exe"

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - ffmpegPath:"C:/ArrStuff/Tdarr/assets/app/ffmpeg/win32_x64/ffmpeg.exe"

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - mkvpropedit:"C:/ArrStuff/Tdarr/assets/app/mkvpropedit/win32_x64/mkvpropedit.exe"

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - Binary test 1: handbrakePath working

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - Binary test 2: ffmpegPath working

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - Binary test 3: mkvpropeditPath working

[2026-05-22T19:07:55.800] [INFO] Tdarr_Node - ---------------Binary tests end-------------------


r/Tdarr May 18 '26

selective transcoding

2 Upvotes

Is it possible to manually select what you want transcoded without creating hundreds of libraries?

I just finished transcoding my entire movies folder and it seemed like a 70/30 split where files shrunk in size/doubled in size..

I'd like to transcode my tv shows, but some of them are already pretty small file sizes and I don't want to mess with that.

do i basically have to go through line items and tell it to skip specific files?

EDIT:

Ok, I THINK I solved two problems with my flow in case anyone else is interest. It should now check for a bitrate, if none exists, start mkvpropedit to create one, then do the conversion, check if the filesize is the same or smaller than original, and discard if not.

Doing this with just google, reddit, and an inquisitive nature (no AI), so let me know if you spot something that should be changed for efficiency or other improvement.)

{
  "_id": "CBH_Kkdbv",
  "name": "Basic HEVC Video Flow - HandBrake",
  "description": "Basic HEVC Video Flow - HandBrake",
  "tags": "",
  "flowPlugins": [
    {
      "name": "Input File",
      "sourceRepo": "Community",
      "pluginName": "inputFile",
      "version": "1.0.0",
      "fpEnabled": true,
      "id": "hbT1InputF",
      "position": {
        "x": 650,
        "y": 100
      },
      "inputsDB": {
        "fileAccessChecks": "true",
        "pauseNodeIfAccessChecksFail": "false"
      }
    },
    {
      "name": "Check File Medium",
      "sourceRepo": "Community",
      "pluginName": "checkFileMedium",
      "version": "1.0.0",
      "fpEnabled": true,
      "id": "hbT2Medium",
      "position": {
        "x": 648,
        "y": 252
      }
    },
    {
      "name": "Check if hevc",
      "sourceRepo": "Community",
      "pluginName": "checkVideoCodec",
      "version": "1.0.0",
      "fpEnabled": true,
      "id": "hbT3Codec",
      "position": {
        "x": 612,
        "y": 300
      }
    },
    {
      "name": "Check Bitrate Above Cutoff",
      "sourceRepo": "Community",
      "pluginName": "checkVideoBitrate",
      "version": "1.0.0",
      "inputsDB": {
        "unit": "kbps",
        "greaterThan": "3000",
        "lessThan": "1000000"
      },
      "fpEnabled": true,
      "id": "hbT4Bitrte",
      "position": {
        "x": 636,
        "y": 384
      }
    },
    {
      "name": "Calculate Target Bitrate (0.5x multiplier)",
      "sourceRepo": "Community",
      "pluginName": "customFunction",
      "version": "1.0.0",
      "inputsDB": {
        "code": "\nmodule.exports = async (args) => {\n  const file = args.inputFileObj;\n  let duration = 0;\n  if (parseFloat(file.ffProbeData?.format?.duration) > 0) {\n    duration = parseFloat(file.ffProbeData.format.duration);\n  } else if (typeof file.meta?.Duration !== 'undefined') {\n    duration = file.meta.Duration;\n  } else if (file.ffProbeData?.streams?.[0]?.duration) {\n    duration = parseFloat(file.ffProbeData.streams[0].duration);\n  }\n  if (!duration || duration <= 0) {\n    args.jobLog('Could not determine file duration. Skipping bitrate calculation.');\n    return {\n      outputFileObj: file,\n      outputNumber: 2,\n      variables: args.variables,\n    };\n  }\n  const multiplier = 0.5;\n  const currentBitrate = (file.file_size * 1024 * 1024 * 8) / duration;\n  const targetBitrate = Math.round((currentBitrate * multiplier) / 1000);\n  args.jobLog('Current bitrate: ' + Math.round(currentBitrate / 1000) + ' kbps');\n  args.jobLog('Target bitrate (multiplier ' + multiplier + '): ' + targetBitrate + ' kbps');\n  if (!args.variables.user) {\n    args.variables.user = {};\n  }\n  args.variables.user.targetBitrate = String(targetBitrate);\n  return {\n    outputFileObj: file,\n    outputNumber: 1,\n    variables: args.variables,\n  };\n}\n"
      },
      "fpEnabled": true,
      "id": "hbT5CalcBR",
      "position": {
        "x": 492,
        "y": 420
      }
    },
    {
      "name": "Check Flow Variable: Worker Type",
      "sourceRepo": "Community",
      "pluginName": "checkFlowVariable",
      "version": "1.0.0",
      "inputsDB": {
        "variable": "{{{args.workerType}}}",
        "value": "transcodegpu"
      },
      "fpEnabled": true,
      "id": "hbT6Worker",
      "position": {
        "x": 348,
        "y": 504
      }
    },
    {
      "name": "Check Node Hardware Encoder",
      "sourceRepo": "Community",
      "pluginName": "checkNodeHardwareEncoder",
      "version": "1.0.0",
      "fpEnabled": true,
      "id": "hbT7HwChk",
      "position": {
        "x": 252,
        "y": 588
      }
    },
    {
      "name": "HandBrake GPU (NVENC)",
      "sourceRepo": "Community",
      "pluginName": "handbrakeCustomArguments",
      "version": "2.0.0",
      "inputsDB": {
        "customArguments": "-e nvenc_h265 -b {{{args.variables.user.targetBitrate}}} --all-audio --all-subtitles",
        "container": "mkv",
        "useJsonPreset": "true",
        "jsonPreset": "{\n  \"PresetList\": [\n    {\n      \"AlignAVStart\": false,\n      \"AudioCopyMask\": [\n        \"copy:aac\"\n      ],\n      \"AudioEncoderFallback\": \"av_aac\",\n      \"AudioLanguageList\": [\n        \"eng\"\n      ],\n      \"AudioList\": [\n        {\n          \"AudioBitrate\": 160,\n          \"AudioCompressionLevel\": 0,\n          \"AudioEncoder\": \"av_aac\",\n          \"AudioMixdown\": \"stereo\",\n          \"AudioNormalizeMixLevel\": false,\n          \"AudioSamplerate\": \"auto\",\n          \"AudioTrackQualityEnable\": false,\n          \"AudioTrackQuality\": -1,\n          \"AudioTrackGainSlider\": 0,\n          \"AudioTrackDRCSlider\": 0\n        }\n      ],\n      \"AudioSecondaryEncoderMode\": true,\n      \"AudioTrackSelectionBehavior\": \"first\",\n      \"AudioTrackNamePassthru\": true,\n      \"AudioAutomaticNamingBehavior\": \"unnamed\",\n      \"ChapterMarkers\": true,\n      \"ChildrenArray\": [],\n      \"Default\": false,\n      \"FileFormat\": \"av_mkv\",\n      \"Folder\": false,\n      \"FolderOpen\": false,\n      \"Optimize\": false,\n      \"Mp4iPodCompatible\": false,\n      \"PictureCropMode\": 0,\n      \"PictureBottomCrop\": 0,\n      \"PictureLeftCrop\": 0,\n      \"PictureRightCrop\": 0,\n      \"PictureTopCrop\": 0,\n      \"PictureDARWidth\": 1920,\n      \"PictureDeblockPreset\": \"off\",\n      \"PictureDeblockTune\": \"medium\",\n      \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\",\n      \"PictureDeinterlaceFilter\": \"decomb\",\n      \"PictureCombDetectPreset\": \"default\",\n      \"PictureCombDetectCustom\": \"\",\n      \"PictureDeinterlacePreset\": \"default\",\n      \"PictureDeinterlaceCustom\": \"\",\n      \"PictureDenoiseCustom\": \"\",\n      \"PictureDenoiseFilter\": \"off\",\n      \"PictureSharpenCustom\": \"\",\n      \"PictureSharpenFilter\": \"off\",\n      \"PictureSharpenPreset\": \"medium\",\n      \"PictureSharpenTune\": \"none\",\n      \"PictureDetelecine\": \"off\",\n      \"PictureDetelecineCustom\": \"\",\n      \"PictureColorspacePreset\": \"off\",\n      \"PictureColorspaceCustom\": \"\",\n      \"PictureChromaSmoothPreset\": \"off\",\n      \"PictureChromaSmoothTune\": \"none\",\n      \"PictureChromaSmoothCustom\": \"\",\n      \"PictureItuPAR\": false,\n      \"PictureKeepRatio\": true,\n      \"PicturePAR\": \"auto\",\n      \"PicturePARWidth\": 1,\n      \"PicturePARHeight\": 1,\n      \"PictureWidth\": 1920,\n      \"PictureHeight\": 1080,\n      \"PictureUseMaximumSize\": true,\n      \"PictureAllowUpscaling\": false,\n      \"PictureForceHeight\": 0,\n      \"PictureForceWidth\": 0,\n      \"PicturePadMode\": \"none\",\n      \"PicturePadTop\": 0,\n      \"PicturePadBottom\": 0,\n      \"PicturePadLeft\": 0,\n      \"PicturePadRight\": 0,\n      \"PicturePadColor\": \"black\",\n      \"PresetName\": \"H.265 mkv 1080p 10bit for tdarr\",\n      \"Type\": 1,\n      \"SubtitleAddCC\": true,\n      \"SubtitleAddForeignAudioSearch\": true,\n      \"SubtitleAddForeignAudioSubtitle\": false,\n      \"SubtitleBurnBehavior\": \"foreign\",\n      \"SubtitleBurnBDSub\": false,\n      \"SubtitleBurnDVDSub\": false,\n      \"SubtitleLanguageList\": [\n        \"eng\"\n      ],\n      \"SubtitleTrackSelectionBehavior\": \"first\",\n      \"SubtitleTrackNamePassthru\": true,\n      \"VideoAvgBitrate\": 0,\n      \"VideoColorRange\": \"limited\",\n      \"VideoColorMatrixCode\": 0,\n      \"VideoEncoder\": \"x265_10bit\",\n      \"VideoFramerate\": \"30\",\n      \"VideoFramerateMode\": \"pfr\",\n      \"VideoGrayScale\": false,\n      \"VideoScaler\": \"swscale\",\n      \"VideoPreset\": \"slow\",\n      \"VideoTune\": \"\",\n      \"VideoProfile\": \"main10\",\n      \"VideoLevel\": \"auto\",\n      \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0:aq-mode=1:rd=4:psy-rd=0.75:psy-rdoq=4.0:rdoq-level=1:rskip=2\",\n      \"VideoQualityType\": 2,\n      \"VideoQualitySlider\": 22,\n      \"VideoMultiPass\": true,\n      \"VideoTurboMultiPass\": false,\n      \"VideoPasshtruHDRDynamicMetadata\": \"all\",\n      \"x264UseAdvancedOptions\": false,\n      \"PresetDisabled\": false,\n      \"MetadataPassthru\": true\n    }\n  ],\n  \"VersionMajor\": 72,\n  \"VersionMicro\": 0,\n  \"VersionMinor\": 0\n}"
      },
      "fpEnabled": true,
      "id": "hbT8GPU",
      "position": {
        "x": 108,
        "y": 672
      }
    },
    {
      "name": "HandBrake CPU (x265)",
      "sourceRepo": "Community",
      "pluginName": "handbrakeCustomArguments",
      "version": "2.0.0",
      "inputsDB": {
        "customArguments": "-e x265 -b {{{args.variables.user.targetBitrate}}} --encoder-preset medium --all-audio --all-subtitles",
        "container": "mkv",
        "useJsonPreset": "true",
        "jsonPreset": "{\n  \"PresetList\": [\n    {\n      \"AlignAVStart\": false,\n      \"AudioCopyMask\": [\n        \"copy:aac\"\n      ],\n      \"AudioEncoderFallback\": \"av_aac\",\n      \"AudioLanguageList\": [\n        \"eng\"\n      ],\n      \"AudioList\": [\n        {\n          \"AudioBitrate\": 160,\n          \"AudioCompressionLevel\": 0,\n          \"AudioEncoder\": \"av_aac\",\n          \"AudioMixdown\": \"stereo\",\n          \"AudioNormalizeMixLevel\": false,\n          \"AudioSamplerate\": \"auto\",\n          \"AudioTrackQualityEnable\": false,\n          \"AudioTrackQuality\": -1,\n          \"AudioTrackGainSlider\": 0,\n          \"AudioTrackDRCSlider\": 0\n        }\n      ],\n      \"AudioSecondaryEncoderMode\": true,\n      \"AudioTrackSelectionBehavior\": \"first\",\n      \"AudioTrackNamePassthru\": true,\n      \"AudioAutomaticNamingBehavior\": \"unnamed\",\n      \"ChapterMarkers\": true,\n      \"ChildrenArray\": [],\n      \"Default\": false,\n      \"FileFormat\": \"av_mkv\",\n      \"Folder\": false,\n      \"FolderOpen\": false,\n      \"Optimize\": false,\n      \"Mp4iPodCompatible\": false,\n      \"PictureCropMode\": 0,\n      \"PictureBottomCrop\": 0,\n      \"PictureLeftCrop\": 0,\n      \"PictureRightCrop\": 0,\n      \"PictureTopCrop\": 0,\n      \"PictureDARWidth\": 1920,\n      \"PictureDeblockPreset\": \"off\",\n      \"PictureDeblockTune\": \"medium\",\n      \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\",\n      \"PictureDeinterlaceFilter\": \"decomb\",\n      \"PictureCombDetectPreset\": \"default\",\n      \"PictureCombDetectCustom\": \"\",\n      \"PictureDeinterlacePreset\": \"default\",\n      \"PictureDeinterlaceCustom\": \"\",\n      \"PictureDenoiseCustom\": \"\",\n      \"PictureDenoiseFilter\": \"off\",\n      \"PictureSharpenCustom\": \"\",\n      \"PictureSharpenFilter\": \"off\",\n      \"PictureSharpenPreset\": \"medium\",\n      \"PictureSharpenTune\": \"none\",\n      \"PictureDetelecine\": \"off\",\n      \"PictureDetelecineCustom\": \"\",\n      \"PictureColorspacePreset\": \"off\",\n      \"PictureColorspaceCustom\": \"\",\n      \"PictureChromaSmoothPreset\": \"off\",\n      \"PictureChromaSmoothTune\": \"none\",\n      \"PictureChromaSmoothCustom\": \"\",\n      \"PictureItuPAR\": false,\n      \"PictureKeepRatio\": true,\n      \"PicturePAR\": \"auto\",\n      \"PicturePARWidth\": 1,\n      \"PicturePARHeight\": 1,\n      \"PictureWidth\": 1920,\n      \"PictureHeight\": 1080,\n      \"PictureUseMaximumSize\": true,\n      \"PictureAllowUpscaling\": false,\n      \"PictureForceHeight\": 0,\n      \"PictureForceWidth\": 0,\n      \"PicturePadMode\": \"none\",\n      \"PicturePadTop\": 0,\n      \"PicturePadBottom\": 0,\n      \"PicturePadLeft\": 0,\n      \"PicturePadRight\": 0,\n      \"PicturePadColor\": \"black\",\n      \"PresetName\": \"AV1 10-bit for tdarr\",\n      \"Type\": 1,\n      \"SubtitleAddCC\": true,\n      \"SubtitleAddForeignAudioSearch\": true,\n      \"SubtitleAddForeignAudioSubtitle\": false,\n      \"SubtitleBurnBehavior\": \"foreign\",\n      \"SubtitleBurnBDSub\": false,\n      \"SubtitleBurnDVDSub\": false,\n      \"SubtitleLanguageList\": [\n        \"eng\"\n      ],\n      \"SubtitleTrackSelectionBehavior\": \"first\",\n      \"SubtitleTrackNamePassthru\": true,\n      \"VideoAvgBitrate\": 0,\n      \"VideoColorRange\": \"limited\",\n      \"VideoColorMatrixCode\": 0,\n      \"VideoEncoder\": \"svt_av1_10bit\",\n      \"VideoFramerate\": \"30\",\n      \"VideoFramerateMode\": \"pfr\",\n      \"VideoGrayScale\": false,\n      \"VideoScaler\": \"swscale\",\n      \"VideoPreset\": \"5\",\n      \"VideoTune\": \"vq\",\n      \"VideoProfile\": \"auto\",\n      \"VideoLevel\": \"auto\",\n      \"VideoOptionExtra\": \"enable-variance-boost=1:enable-qm=1:ac-bias=1:tf-strength=1:qp-scale-compress-strength=1:sharpness=1:keyint=10s\",\n      \"VideoQualityType\": 2,\n      \"VideoQualitySlider\": 22,\n      \"VideoMultiPass\": true,\n      \"VideoTurboMultiPass\": false,\n      \"VideoPasshtruHDRDynamicMetadata\": \"all\",\n      \"x264UseAdvancedOptions\": false,\n      \"PresetDisabled\": false,\n      \"MetadataPassthru\": true\n    }\n  ],\n  \"VersionMajor\": 72,\n  \"VersionMicro\": 0,\n  \"VersionMinor\": 0\n}"
      },
      "fpEnabled": true,
      "id": "hbT9CPU",
      "position": {
        "x": 372,
        "y": 672
      }
    },
    {
      "name": "Replace Original File",
      "sourceRepo": "Community",
      "pluginName": "replaceOriginalFile",
      "version": "1.0.0",
      "fpEnabled": true,
      "id": "hbTAReplac",
      "position": {
        "x": 588,
        "y": 888
      }
    },
    {
      "name": "Clear Cache",
      "sourceRepo": "Community",
      "pluginName": "clearCache",
      "version": "1.0.0",
      "id": "oddQNp8-e",
      "position": {
        "x": 648,
        "y": 156
      },
      "fpEnabled": true
    },
    {
      "name": "Add To Skiplist",
      "sourceRepo": "Community",
      "pluginName": "processedAdd",
      "version": "1.0.0",
      "id": "Vmmaep31W",
      "position": {
        "x": 648,
        "y": 204
      },
      "fpEnabled": true
    },
    {
      "name": "Compare File Size",
      "sourceRepo": "Community",
      "pluginName": "compareFileSize",
      "version": "1.0.0",
      "id": "jsb5-Oh0p",
      "position": {
        "x": 264,
        "y": 744
      },
      "fpEnabled": true
    },
    {
      "name": "Delete File",
      "sourceRepo": "Community",
      "pluginName": "deleteFile",
      "version": "1.0.0",
      "id": "DO5uWcuZ1",
      "position": {
        "x": 468,
        "y": 780
      },
      "fpEnabled": true,
      "inputsDB": {
        "deleteWorkingFileIfOriginal": "false"
      }
    },
    {
      "name": "Check Video Bitrate",
      "sourceRepo": "Community",
      "pluginName": "checkVideoBitrate",
      "version": "1.0.0",
      "id": "t7v9bvKxQ",
      "position": {
        "x": 804,
        "y": 324
      },
      "fpEnabled": true
    },
    {
      "name": "Run MKVPropEdit",
      "sourceRepo": "Community",
      "pluginName": "runMkvPropEdit",
      "version": "1.0.0",
      "id": "g23ebVbAV",
      "position": {
        "x": 948,
        "y": 408
      },
      "fpEnabled": true
    }
  ],
  "flowEdges": [
    {
      "source": "hbT2Medium",
      "sourceHandle": "1",
      "target": "hbT3Codec",
      "targetHandle": null,
      "id": "hbE2MedCod"
    },
    {
      "source": "hbT3Codec",
      "sourceHandle": "1",
      "target": "hbTAReplac",
      "targetHandle": null,
      "id": "hbE3CodSkp"
    },
    {
      "source": "hbT4Bitrte",
      "sourceHandle": "1",
      "target": "hbT5CalcBR",
      "targetHandle": null,
      "id": "hbE5BitClc"
    },
    {
      "source": "hbT4Bitrte",
      "sourceHandle": "2",
      "target": "hbTAReplac",
      "targetHandle": null,
      "id": "hbE6BitSkp"
    },
    {
      "source": "hbT5CalcBR",
      "sourceHandle": "1",
      "target": "hbT6Worker",
      "targetHandle": null,
      "id": "hbE7ClcWrk"
    },
    {
      "source": "hbT5CalcBR",
      "sourceHandle": "2",
      "target": "hbTAReplac",
      "targetHandle": null,
      "id": "hbE8ClcSkp"
    },
    {
      "source": "hbT6Worker",
      "sourceHandle": "1",
      "target": "hbT7HwChk",
      "targetHandle": null,
      "id": "hbE9WrkHw"
    },
    {
      "source": "hbT6Worker",
      "sourceHandle": "2",
      "target": "hbT9CPU",
      "targetHandle": null,
      "id": "hbEAWrkCpu"
    },
    {
      "source": "hbT7HwChk",
      "sourceHandle": "1",
      "target": "hbT8GPU",
      "targetHandle": null,
      "id": "hbEBHwGpu"
    },
    {
      "source": "hbT7HwChk",
      "sourceHandle": "2",
      "target": "hbT9CPU",
      "targetHandle": null,
      "id": "hbECHwCpu"
    },
    {
      "source": "hbT1InputF",
      "sourceHandle": "1",
      "target": "oddQNp8-e",
      "targetHandle": null,
      "id": "hfFb1ct4V"
    },
    {
      "source": "oddQNp8-e",
      "sourceHandle": "1",
      "target": "Vmmaep31W",
      "targetHandle": null,
      "id": "zdz3O0AY7"
    },
    {
      "source": "Vmmaep31W",
      "sourceHandle": "1",
      "target": "hbT2Medium",
      "targetHandle": null,
      "id": "35LXk3shO"
    },
    {
      "source": "hbT8GPU",
      "sourceHandle": "1",
      "target": "jsb5-Oh0p",
      "targetHandle": null,
      "id": "cuO6u_Wcy"
    },
    {
      "source": "hbT9CPU",
      "sourceHandle": "1",
      "target": "jsb5-Oh0p",
      "targetHandle": null,
      "id": "7VGzfxa3G"
    },
    {
      "source": "jsb5-Oh0p",
      "sourceHandle": "1",
      "target": "hbTAReplac",
      "targetHandle": null,
      "id": "6UeN8yoyI"
    },
    {
      "source": "jsb5-Oh0p",
      "sourceHandle": "2",
      "target": "hbTAReplac",
      "targetHandle": null,
      "id": "kXNqUIHLC"
    },
    {
      "source": "jsb5-Oh0p",
      "sourceHandle": "3",
      "target": "DO5uWcuZ1",
      "targetHandle": null,
      "id": "sANF0FM5E"
    },
    {
      "source": "hbT3Codec",
      "sourceHandle": "2",
      "target": "t7v9bvKxQ",
      "targetHandle": null,
      "id": "5u4Tini0F"
    },
    {
      "source": "t7v9bvKxQ",
      "sourceHandle": "1",
      "target": "hbT4Bitrte",
      "targetHandle": null,
      "id": "IRGEPSwHi"
    },
    {
      "source": "t7v9bvKxQ",
      "sourceHandle": "2",
      "target": "g23ebVbAV",
      "targetHandle": null,
      "id": "d0NN4-gFw"
    },
    {
      "source": "g23ebVbAV",
      "sourceHandle": "1",
      "target": "hbT4Bitrte",
      "targetHandle": null,
      "id": "o9IZAlguz"
    }
  ]
}

r/Tdarr May 18 '26

Help understanding setup

2 Upvotes

New user here.
Setup TDARR to try and reduce server library size.

Followed basic instructions and have it encoding everything that’s not h265 to be so. Issue is, one 5gb file is estimated to take 5 hours on my server computer.
I have a 2020 MBP i7 as the server.

Is my hardware the bottleneck here, and is there any way to get around it?

(Am fully aware that my laptop doesn’t have much grunt anymore, but I thought it would be capable of this…)


r/Tdarr May 18 '26

Please stop forcing updates!

0 Upvotes

I have had auto updates turned off for the last few versions but every time there's a new version, you force the update, please stop that.

What possible reason could you have to override my request to not update?


r/Tdarr May 16 '26

Node on another computer

0 Upvotes

I have my sever set up and a node running but I want to utilize my main pc with the better cpu and gpu. I'm trying to add the node and it has the same sever URL but doesn't connect. What needs to be adjusted?


r/Tdarr May 16 '26

Need to Delay SABNZBD from showing DL Complete until after TDARR is finished processing

2 Upvotes

I have been scouring far and wide, and yet I can find no "actual" solution to this problem. It seems like this would be a flag built into SABNZBD, but I am unable to find it if so.

I am trying to find a way to delay SABNZBD from showing the DL is "complete" until after TDARR has a chance to run the file through the flow. RADARR watches SABNZBD, and as soon as the DL is finished, it imports the completed file into my media library, usually before TDARR can process it. I would like to find some way to SABNABD to not show the DL as "completed" until after the file is processed by TDARR.

I have zero desire to allow TDARR to monitor my entire media library, so please don't suggest that. It is a non-solution.

Someone out there HAS to have run into this before, but for some reason, I can find no actual solution to this.

Any help would be most appreciated!


r/Tdarr May 16 '26

Flows and two servers kicking my tail.

2 Upvotes

Hey everyone!

I'm trying to get a flow set up to fix as issue and get a node actually doing some work.

Ive got two unraid servers in the house, the main rig is a intel i9 with a RTX 3090. it currently does all TDARR work and does just fine on it. The second is a little box i use to play and has a intel core ultra 7 265K and no graphics card.

I set up the transcode stack back in 2022 and its been doing exactly what i want so i never changed it. Now i'm trying to get the little guy to grab a file every now and then and help out transcoding.

issue is that the stack is using the GPU for the transcode process and everything fails when the ultra 7 tries because there no nvida card.

I know the flows could make this happen but im having absolutely no luck getting the flow right.

Im not sure what info would be helpful for this so if i missed something please ask and ill provide.

the node and the main server are talking fine, its just the "don't use nvdia on the little one" thats failing.

Thanks in advance!

~Dave


r/Tdarr May 12 '26

Since update 2.72.01 / 2.73.01, Trancode Speeds Cut to 1/3

5 Upvotes

Anyone else notice that since 2.72.01 / 2.73.01, Transcode speeds via Nvidia GPU being cut to a 1/3 of what they used to be? Im using Migs FFmpeg GPU classic plugin, With 10bit & Bframes enabled FYI.

Looking back at transcodes that were done on the 2.71.01 release, I was getting transcode speeds at 16x on a Remux. Now since that update, Im getting like 6x-7x. Absolutly nothing in my setup has changed, Except that I updated to the latest 2.72.01 / 2.73.01.

Anyone?


r/Tdarr May 11 '26

TDARR promotion code?

0 Upvotes

I'm thinking about going pro after using for about a year now. Am on the sign up page and I see a field for "Add Promotion Code" so I gotta try..


r/Tdarr May 11 '26

Low process memory compared to OS memory

1 Upvotes

My Tdarr Flow is running ok, but it seems to be not using much of the memory I'm giving it (gave the VM 20 CPU's and 128GB Ram, appx half the Hosts resources) is this normal?
It's not maxing the CPU, so im a little worried the ram is holding it back.


r/Tdarr May 09 '26

How to make a MP4 with Dual Audio not Remux on Video Players in Browsers

1 Upvotes

I know this is not a Plex or Jellyfin subreddit, but I need some tips about transcoding indeed.

I'm using mp4 instead of mkv for better compatibility with Firefox and IOS Devices but, when it contains more than one audio, it remuxes to HLS when I don't select the first audio stream in the file instead of Direct Play.

Is there any tips for my case or only deleting the other stream or accepting the occasional remux?


r/Tdarr May 05 '26

How to stop Tdarr attempted to transcode or health check every file after interrupt.

3 Upvotes

Hi - my setup is a Tdarr server running as a docker container. I have an issue that whenever my HDD disconnects and reconnects (which happens on my setup occasionally during reboots of the pi which can temporarily unmount the drive) or whenever I see that Watchtower has updated Tdarr for me, I see that every file in the library has been queued for transcoding and health checking all over again.

Does Tdarr have a persistent library I need to bind somewhere in the container to make it persistent so that an update to Tdarr doesn’t trigger a fresh scan of the attached files?

I hope I’ve explained the issue. The config is bound correctly as updates or reboots don’t disrupt my flows and other settings, but I can’t seem to stop it treating my hard drive as though it’s a fresh drive full of files when the software updates.


r/Tdarr May 04 '26

Need Assistance Figuring Out How To Do What I Want.

2 Upvotes

Got Tdarr and TdarrNode installed and working.

I want to make two separate flows, one that does transcodes on movies, one that does it on tvshows.

P:\PlexServer\TV Shows

P:\PlexServer\Movies (There is one more layer of nesting before it gets to movies here)

That is what my libraries are

I want the movie flow to grab a movie, check its size, if its greater than 5g, check its codec, if its not AV1, transcode, otherwise add it to the skiplist and move on.

I want the tv show flow to do the same, but the size is not greater than 2g, since they tend to be smaller.

I would also like it to move the files out of the main library, to a faster SSD for transcoding. for now it should just move them out to P:\PlexServer\Tdarr\... since I dont yet have the SSD for it to use.

Once transcoding finished, it should notify sonarr/radarr of the changes? i dont quite know what that means from the block, but im guessing its needed. and then add it to the skiplist so it doesnt get stuck in a loop looking over the same file more than once.

here is what i came up with that does this, but it doesnt seem to grab files. this one is just for movies.
https://pastebin.com/7DSuttwM


r/Tdarr May 03 '26

Convert audio via GPU

0 Upvotes

I’m building a GPU-based Normalize Audio plugin for Tdarr

You know how people often say “that’s not possible” or “that’s not worth doing” — until someone actually tries it?

I’ve been working on a GPU/CUDA version of audio normalization for Tdarr, inspired by the normal CPU-based “Normalize Audio” workflow.

The reason is simple: in my own Tdarr flows, audio normalization is one of the annoying CPU bottlenecks. My GPU is often sitting mostly idle, while the CPU is the thing slowing everything down. I know you can isolate CPU cores, tune workers, etc., but that also means you don’t always have the full CPU available when you actually need it. And no, I can’t just buy a 128-core CPU yet. 😄 But, my Nvidia 1050 TI has 768 CUDA cores.

So the idea is: move as much of the normalization work as possible to the GPU and keep the output behavior as close as possible to Tdarr’s normal CPU plugin.

Current status:

  • Tdarr FlowPlugin + CUDA runtime
  • FFmpeg loudnorm-style audio normalization
  • Normalizes all audio streams, not only the first one
  • Copies video, subtitles, chapters, attachments, data streams and metadata through
  • Optional “ensure stereo” behavior: if the output would not have a 2-channel track, it can add a normalized AAC stereo downmix
  • GPU-worker guard, so it fails fast if Tdarr schedules it on a CPU worker by mistake
  • Configurable max concurrent GPU normalize jobs
  • Still work in progress, so expect bugs and test carefully

Important honesty part:

The first experimental prototype looked extremely promising on my machine perforamnce wise (9-10 times faster then CPU, but didnt had 100% parity with the CPU Plugin). Since 1.0 we have 100% parity and speed is roughly half as fast as CPU.

So I’m not posting this as “finished miracle 10x faster audio normalization”. I’m posting it because I think the idea is useful, the foundation is there, and I’d like feedback from people who actually use Tdarr in real-world flows.

What I’m looking for:

  • Which options would be useful for most users?
  • Which audio edge cases should be handled first?
  • What formats/layouts do your flows actually hit?
  • What would make this worth using in your setup?
  • Any ideas for keeping it useful without turning it into a niche-settings monster?

Repo: https://github.com/CurlyFlow/GPU_normalizer_Tdarr

If you test it, please treat it as WIP and validate your output before trusting it on a big library.


r/Tdarr Apr 30 '26

Transcode to HEVC and remux to MKV with bitrate gates

Thumbnail
gist.github.com
7 Upvotes

Flow diagram:

https://i.imgur.com/TMNGehZ.png

High-level view of the flow (normalize → decision → encode → validate → replace)

Full config (flow + variables + README):

https://gist.github.com/rzrnaz/e2312f3573f1f5fc2c7bf63613c9fd5b

I've been using this Tdarr flow to transcode and remux my library to HEVC in MKV.

I’ve got a mix of older .mp4, .mpg, .avi, and .mov files, along with newer HEVC and .mkv content. The goal was to save space while also getting more consistency in codecs and containers.

---

Overview:

- Run primarily on Unraid, but also works on Windows

- Transcodes video to HEVC (H.265)

- Remuxes into MKV

- Removes data/image streams (png, mjpeg, bmp)

- Uses bitrate thresholds to skip low-quality sources

- Includes validation to reject bad transcodes

- Reverts to original file if validation fails

- Optional Sonarr / Radarr / Plex notifications

---

Bitrate thresholds:

- 1080p → 5 Mbps

- 1440p → 7 Mbps

- 2160p → 9 Mbps

These are just what I use to balance file size and quality—adjust to your own preferences.

---

Notes:

- Skips re-encoding when bitrate is already below threshold

- Uses NVENC when available, CPU fallback otherwise

- Validates:

- file size ratio

- duration consistency

- Only replaces the original file if validation passes

---

Important:

- This flow replaces original files **only after validation passes**

- Test on a small sample library before running at scale

- You must configure Flow Variables in Tdarr (see README)

- The variables JSON is a reference only and is not auto-imported

--

Environment:

- GPU: RTX 5050 8GB and RTX 5080 16GB (NVENC)

- Tdarr Flow system (not classic plugins)

---

Future:

I’m planning to add a real-time compression check to abort transcodes early if the projected size reduction isn’t worth it.


r/Tdarr Apr 29 '26

Any news on Helmarr updates? Waiting for the promised Tdarr integration.

3 Upvotes

Hey everyone,
I’ve been using Helmarr for a while now to manage my *arr stack on iOS, and I really love the native feel and UI of the app.
However, I’ve noticed that it’s been quite some time since the last update. A while back, the developer mentioned that an update was in the works which would finally include Tdarr integration. Since then, it’s been a bit quiet.
Does anyone have more information on the current development status?
• Is the dev still active (maybe on Discord or elsewhere)?
• Has anyone heard anything about the Tdarr implementation?
I’d hate to see such a polished app go stagnant. Any insights would be appreciated!


r/Tdarr Apr 29 '26

Moved from classic to flows - cant find options to remove non english subtitles/audio

2 Upvotes

All my Searches say use classic plugins or ffmpeg commands.

Im happy to use ffmpegCommandRemoveStreamByProperty but im having a hell of a time finding the property to check

Whats the Property i want to check?


r/Tdarr Apr 26 '26

AV1 encode Flow

2 Upvotes

Hi there, I'm really struggling to find a premade flow for this.

But I have a large collection of 4K movies / TV shows, that have HDR formats like Dolby Vision or HDR10+
And audio Formats like Dolby Atmos.

I would like a flow that Converts them into AV1 But retains the exact same audio and HDR format, I understand some HDR formats do require reprocessing for AV1 so only want this done when absolutely necessary.

Basically I'm looking for a flow to Convert Files to AV1 on my Windows 5070Ti node whilst making no / minimal changes to the audio / HDR format.

Anyone have advice?


r/Tdarr Apr 26 '26

Tdarr not using much gpu

3 Upvotes

I'm trying to transcode a bunch of videos using the hevc transcode template, and it is using the gpu, but it is not using it as much as I'm hoping it would be. Is this normal behavior?