Skip to content

Codec and Language Reference

simonefil edited this page Jul 30, 2026 · 1 revision

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.

Language codes

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

Bibliographic and terminological codes

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.

IETF language tags

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 filters

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.

Dolby

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

DTS

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

Other

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

Matching caveats

  1. Bare DTS does not include DTS-HD MA. Filtering a Blu-ray release for DTS gets you nothing if the track is DTS-HD MA. Use DTS-HD MA, or DTS-HD for MA and HR together.
  2. ATMOS matches TrueHD and E-AC-3, because Atmos ships inside either. If you specifically want the TrueHD track, say TRUEHD.
  3. PCM, LPCM and WAV are the same filter. MediaInfo reports the format as PCM, so all three alias to it.

Lossless detection

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.

Episode matching regex

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

Common causes of failure

Zero-padding. IDs are compared as strings, so S12E0812_08 and S12E812_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.

Split time formats

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

Split output template tokens

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.

Bulk rename tags

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

Next

Clone this wiki locally