-
-
Notifications
You must be signed in to change notification settings - Fork 1
Codec and Language Reference
Lookup tables for the values RemuxForge asks you to type: language codes, audio codec filters, episode-matching regexes, split time formats and output template tokens.
Every field that takes a language, Target language, Keep audio, Keep sub, Source language, the metadata LANGUAGE tag, expects ISO 639-2 three-letter codes, comma-separated.
The complete ISO 639-2 set is accepted. These are the ones in common use:
| Code | Language | Code | Language |
|---|---|---|---|
ita |
Italian | pol |
Polish |
eng |
English | tur |
Turkish |
jpn |
Japanese | swe |
Swedish |
spa |
Spanish | nor |
Norwegian |
fra / fre
|
French | dan |
Danish |
deu / ger
|
German | fin |
Finnish |
por |
Portuguese | hun |
Hungarian |
rus |
Russian |
ces / cze
|
Czech |
zho / chi
|
Chinese |
ell / gre
|
Greek |
kor |
Korean |
ron / rum
|
Romanian |
ara |
Arabic |
nld / dut
|
Dutch |
hin |
Hindi | heb |
Hebrew |
Special-purpose codes:
| Code | Meaning |
|---|---|
und |
undefined; the value untagged tracks usually carry |
mul |
multiple languages |
zxx |
no linguistic content |
Several languages have two valid ISO 639-2 codes: a bibliographic one (ger, fre, chi, dut, gre, cze, rum) and a terminological one (deu, fra, zho, nld, ell, ces, ron). RemuxForge accepts both, but they are different strings: a track tagged ger is not matched by a filter for deu.
If a filter comes back empty on a language you know is there, check which of the two the file actually uses. Open the file's MediaInfo from the context menu and read the value.
Invalid codes are rejected at validation time, with a suggestion when the input is close to a real code.
Metadata mode also exposes *_language_ietf fields, which take BCP 47 tags rather than ISO 639-2: it, it-IT, en, en-US, en-GB, ja, fr, de, es, pt-BR. Some players read this field in preference to the ISO 639-2 one, so the two can be set independently.
Audio codec (what to import) and Keep codec (what to keep from the source) accept these names and aliases, comma-separated and case-insensitive. Spaces, hyphens and colons are ignored during matching, so DTS-HD MA, DTS HD MA and dtshdma are the same thing.
| You type | Matches |
|---|---|
AC3, AC-3, DD
|
AC-3 |
EAC3, E-AC-3, DD+, DDP
|
E-AC-3 |
TRUEHD |
TrueHD |
MLP |
MLP |
ATMOS |
TrueHD and E-AC-3 |
| You type | Matches |
|---|---|
DTS |
DTS core only: not DTS-HD MA, not DTS-HD HR |
DTS-HD |
DTS-HD Master Audio and DTS-HD High Resolution |
DTS-HD MA, DTS-HDMA
|
DTS-HD Master Audio only |
DTS-HD HR, DTS-HDHR
|
DTS-HD High Resolution only |
DTS-ES |
DTS-ES |
DTS:X, DTSX
|
DTS:X |
| You type | Matches |
|---|---|
FLAC |
FLAC |
PCM, LPCM, WAV
|
PCM |
ALAC |
ALAC |
AAC, HE-AAC
|
AAC |
MP3 |
MPEG Audio, MP3 |
MP2 |
MP2, MPEG Audio Layer 2 |
OPUS |
Opus |
VORBIS |
Vorbis |
-
Bare
DTSdoes not include DTS-HD MA. Filtering a Blu-ray release forDTSgets you nothing if the track is DTS-HD MA. UseDTS-HD MA, orDTS-HDfor MA and HR together. -
ATMOSmatches TrueHD and E-AC-3, because Atmos ships inside either. If you specifically want the TrueHD track, sayTRUEHD. -
PCM,LPCMandWAVare the same filter. MediaInfo reports the format asPCM, so all three alias to it.
The metadata field audio_quality reports lossless or lossy, derived from the format and MediaInfo's compression mode. Formats treated as lossless include DTS-HD Master Audio, DTS-HD High Resolution, TrueHD, PCM, LPCM, ALAC, APE, MLP, FLAC, WavPack, and anything MediaInfo explicitly marks as lossless.
A rule conditioned on audio_quality Equals lossless matches every format the detector recognises, so it does not need updating when a new codec appears. See Examples: Metadata.
Remux mode pairs source and language files by deriving an episode ID from each filename.
How the ID is built: the pattern is matched against the filename, case-insensitively. If it has capture groups, the ID is the captured groups joined with underscores. Without groups, the ID is the whole matched text. Two files pair when their IDs are the exact same string.
Default: S(\d+)E(\d+)
| Pattern | Matches | ID |
|---|---|---|
S(\d+)E(\d+) |
Bleach.S12E08.1080p.mkv |
12_08 |
(\d+)x(\d+) |
Bleach.12x08.mkv |
12_08 |
[Ss](\d+)[ ._-]?[Ee](\d+) |
Bleach S12 E08.mkv |
12_08 |
[Ee]p(?:isode)?[ ._-]?(\d+) |
Episode 366.mkv |
366 |
- (\d+) |
[Group] Bleach - 366 [1080p].mkv |
366 |
(\d{3}) |
366.mkv |
366 |
(\d+)v\d |
Bleach - 366v2.mkv |
366 |
Zero-padding. IDs are compared as strings, so S12E08 → 12_08 and S12E8 → 12_8 do not pair. Either write a pattern that normalises the difference, or fix one side with Bulk Rename.
Greedy matches on the wrong number. (\d{3}) on Bleach.1080p.366.mkv matches 108, not 366. Anchor on something distinctive, a separator, a prefix, a suffix.
The pattern only fits one side. Check the log after F5: it reports how many source files were found and how many language files were indexed. A language count of 0 means the pattern never matched anything on the donor side.
Scanning is cheap. Change the pattern, press OK, press F5, and read the counts.
Every split time field, Ranges, Split at, Trim start, Trim end, accepts:
| Format | Example | Notes |
|---|---|---|
HH:MM:SS.mmm |
00:21:40.500 |
full timecode; the milliseconds are optional |
MM:SS.mmm |
21:40 |
minutes and seconds |
SS.mmm |
1300.5 |
plain decimal seconds |
f<frame> |
f31200 |
exact frame index, 0-based |
END |
END |
end of the file |
Time values are resolved against the file's actual PTS list, so they land on the right frame even on VFR content. f<frame> sidesteps timecode conversion entirely and is the precise option when you have a frame number from a frame-accurate player.
Ranges are written start-end and separated by commas:
00:00:00-00:21:40,00:21:40-END
f0-f31199,f31200-END
| Token | Value |
|---|---|
{source_name} |
input filename without extension |
{n} |
segment number, starting at 1 |
{n:02d} |
segment number zero-padded to 2 digits |
{n:03d} |
zero-padded to 3 digits |
{n+213:03d} |
number with a positive offset, padded |
{n-1} |
number with a negative offset |
{start} |
segment start timestamp |
{end} |
segment end timestamp |
{chapter_name} |
name of the segment's first chapter |
Defaults per cut mode:
| Mode | Default template |
|---|---|
| Chapter pattern, Ranges, Split at | {source_name}.part{n:02d}.mkv |
| Trim | {source_name}_trimmed.mkv |
| Chapters each | {source_name}.ch{n:02d}.mkv |
The offset form continues an existing numbering. {n+213:03d} starts at 214, since {n} starts at 1. Filenames are sanitised, and a segment that would overwrite the input file aborts the job.
Used by the New Name rename method. See Bulk Rename.
| Tag | Value |
|---|---|
<Name> |
original name without extension |
<Ext> |
original extension without the dot |
<Folder> |
parent folder name |
<Inc:start:step:pad> |
incrementing counter; parameters optional, defaults 1:1:1
|
<Date:format> |
last-modified date, .NET format string |
<Rand:min:max> |
random integer, inclusive |
Bleach.S12E<Inc:214:1:3>.<Ext> → Bleach.S12E214.mkv, …E215, …E216
<Name>_<Date:yyyy-MM-dd>.<Ext> → episode_2026-07-30.mkv
- Remux Mode · Split Mode · Metadata Mode
- CLI Reference: where these values appear as flags
- Metadata Reference: the metadata field and token catalogue