LAME Official Logo

Detailed command line switches

Options ordered by feature

Setting Brief description
Input options
By default, LAME accepts a PCM audio sample inside a .WAV container as the input file, in 8, 16, 24 and 32 bits integer and in IEEE FLOAT. If it is compiled with libsndfile, then it also supports the extra formats that the library supports.
There is also support for RAW PCM data and and piped input
- For piped/streamed Input, use "-" as the input and/or output file name.
--out-dir path If no explicit output file is specified, a file will be written at given path. Ignored when using piped/streamed input
--mp1input1 Input file is an MPEG layer I file. Implicit if extension is .mp1
--mp2input1 Input file is an MPEG layer II file. Implicit if extension is .mp2
--mp3input1 Input file is an MPEG layer III file. Implicit if extension is .mp3
--scale number Scale input (multiply PCM data) by number.
--scale-l number Scale channel 0 (left) input (multiply PCM data ) by number
--scale-r number Scale channel 1 (right) input (multiply PCM data) by number
--gain number apply Gain adjustment in decibels, range -20.0 to +12.0.
--swap-channel Swap Left and Right channels
--nogap file1 file2 ... Gapless encoding for a set of contiguous files
--nogapout dir Output dir for gapless encoding (must precede --nogap)
--nogaptags Allow the use of VBR tags in gapless encoding
Input options for RAW PCM
-r Assume input file is raw PCM.
-s number Input sampling frequency in kHz (Default is 44.1Khz)
--signed / --unsigned Input is signed (default) or unsigned
--bitwidth w Input bit width is w (default 16)
-x Force byte-swapping of input stream
--ignorelength Ignore the length given in the WAVE header and read to the end of the input
--little-endian / --big-endian Input is little-endian (default) or big-endian
-a Downmix from stereo to mono file for mono encoding. Needed with RAW input for the -mm mode to do the downmix.
Constant Bit Rate (CBR)
-b number Set the bitrate in kbps, default 128 kbps
--cbr Enforce use of constant bitrate
--comp ratio Choose bitrate to obtain the specified compression ratio
--freeformat Produce a free format bitstream instead of the standard one. Supported bitrates between 8 and 640 kbps. Scarce support by decoders.
Variable Bit Rate (ABR)
--abr number Specify average bitrate desired (instead of quality)
Variable Bit Rate (VBR)
-V number Quality setting for VBR. default number=4.
Decimal values can be specified, like: 4.51
0=highest quality, bigger files. 9.999=lowest quality, smaller files
--vbr-old Use old variable bitrate (VBR) routine
-b number Specify a minimum allowed bitrate. default 32 kbps (See -F setting below)
-B number Specify a maximum allowed bitrate. default 320 kbps
-F Enforce -b option for digital silence frames too, rather than encoding them at 8 or 32 kbps.
-t Disable VBR informational tag
-T Enable and force writing LAME Tag
-Y Allows -V2, -V1 and -V0 to not to encode the highest frequencies accurately, if doing so causes disproportional increases in bitrate. This is the same that CBR and ABR modes do.
Operational options
--preset type Enables some preconfigured settings. Check below for each of the valid values
--priority number Sets the process priority:
0,1 = Low priority
2 = normal priority (default)
3,4 = High priority
--flush Flush output stream as soon as possible
--preserve-modtime Give the output file the date and time of the input file
--decode Input=mp3 file, output=wav
--decode-mp3delay samples Set the encoder delay to use to decode the input .mp3 file
-t Disable writing wav header when using --decode
--vector name Which set of vector routines the encode runs
--noasm type Deprecated, use --vector
Noise shaping & psycho acoustic algorithms
-q number number = 0...9. Default -q 3
-q 0: Highest quality, very slow
-q 9: Poor quality, but fast
Please, see notes in the detailed description
-m mode joint, simple, force, dual-mono, mono, left, right. default is j.
joint = joins the best possible of MS and LR stereo
simple = force LR stereo on all frames
force = force MS stereo on all frames.
Filter and resampling options:
--resample sfreq Sampling frequency of output file(kHz)- default=automatic
--lowpass number Frequency(kHz), lowpass filter cutoff above freq. Range [0.001..50]kHz or [50..50000]Hz
--lowpass-width number Frequency(kHz), lowpass window width. Range [0.001..16]kHz or [16..50000]Hz - (See further restriction in the detailed explanation)
--highpass number Frequency(kHz), highpass filter cutoff below freq. Range [0.001..16]kHz or [16..50000]Hz (See further restriction in the detailed explanation)
--highpass-width number Frequency(kHz), highpass window width - (See further restriction in the detailed explanation)
ID3 tag Information
--tt title Audio/song title (max 30 chars for version 1 tag)
--ta artist Audio/song artist (max 30 chars for version 1 tag)
--tl album Audio/song album (max 30 chars for version 1 tag)
--ty year Audio/song year of issue (1 to 9999)
--tc comment User-defined text (max 30 chars for v1 tag, 28 for v1.1)
--tn track[/total] Audio/song track number and (optionally) the total number of tracks on the original recording.
(track and total each 1 to 255. just the track number creates v1.1 tag, providing a total forces v2.0).
--tg genre Audio/song genre (name or number in list)
--ti file Audio/song albumArt (jpeg/png/gif file, 128KB max, v2.3)
--tv id=value Text or URL frame specified by id and value (v2.3 tag). User defined frame. Syntax: --tv "TXXX=description=content"
--add-id3v2 Force addition of version 2 tag
--id3v1-only Add only a version 1 tag
--id3v2-only Add only a version 2 tag
--id3v2-latin1 Add following options in ISO-8859-1 text encoding
--id3v2-utf16 Add following options in unicode text encoding
--id3v2-utf8 Add following options in UTF-8 text encoding
--space-id3v1 Pad version 1 tag with spaces instead of nulls
--pad-id3v2-size n Adds ID3v2 tag with n padding bytes
--genre-list Print alphabetically sorted ID3 genre list and exit
--ignore-tag-errors Ignore errors in values passed for tags
Note: A version 2 tag will NOT be added unless one of the input fields won't fit in a version 1 tag (e.g. the title string is longer than 30 characters), or the '--add-id3v2' or '--id3v2-only' options are used, or output is redirected to stdout.
MP3 header/stream options:
-e mode De-emphasis n/5/c (obsolete)
-c Mark as copyright
-o Mark as non-original
-p Error detection. adds 16 bit checksum to every frame (the checksum is computed correctly)
--strictly-enforce-ISO Comply as much as possible to ISO MPEG spec
ReplayGain
ReplayGain proposes a per-track gain that plays every track at one perceived loudness. LAME measures it while encoding, as the ReplayGain specification describes: the signal passes an equal-loudness filter, its RMS level is taken over 50 ms blocks, and the level 95 % of the blocks fall below is compared with the reference volume of 89dB. Note: the reference volume has been changed from 83dB on transition from version 3.95 to 3.95.1. Only the track gain ("Radio" gain in the specification's terms) is computed.
The value does not change the encoded audio: it is written into LAME's own tag in the first frame, and with --replaygain-id3v2 also into the ID3v2 tag, where players read it.
By default the measurement is taken on the input samples, after the volume scaling and resampling asked for on the command line, which is --replaygain-fast; --replaygain-accurate measures the decoded data instead and also finds the peak sample, --noreplaygain turns the measurement off, and --clipdetect reports whether the encoded audio would clip.
The specification is at https://wiki.hydrogenaud.io/index.php?title=ReplayGain_1.0_specification
--replaygain-fast Measure ReplayGain on the input samples (default)
--replaygain-accurate1 Measure ReplayGain on the decoded data, and find the peak sample
--noreplaygain Disable ReplayGain analysis
--replaygain-id3v2 Write ReplayGain to the ID3v2 tag as well as to LAME's own
--clipdetect1 Enable --replaygain-accurate and print a message whether clipping occurs and how far the waveform is from full scale
Verbosity:
--disptime secs Print progress report every secs seconds
--nohist Disable VBR histogram display
--silent / --quiet Don't print anything on screen
--verbose Print a lot of useful information
--version / --license Print License information
--help / --usage Shows the common list of switches. Add id3 or dev to get help for a specified topic
--longhelp Shows the complete list of switches
Experimental switches for developers. Only enabled in alpha/debug versions. Can change from version to version
--nores Disables the bit reservour. Each frame will become independent from previous ones, but the quality will be lower.
--buffer-constraint x available values for x: default, strict, maximum
--noath turns ATH down to a flat noise floor
--athshort ignore GPSYCHO for short blocks, use ATH only
--athonly ignore GPSYCHO completely, use ATH only
--athtype x selects between different ATH types [0-4]
--athlower x Lower the ATH by x.x dB's
--athaa-type n ATH auto adjust: 0 'no' else 'loudness based'
--athaa-sensitivity x activation offset in -/+ dB for ATH auto-adjustment
--short Allow the use of short blocs (default)
--noshort Disable use of short blocks
--allshort Use only short blocks
--shortthreshold x[,y] short block switching threshold, x for L/R/M channel, y for S channel
--temporal-masking x x=0 disables, x=1 enables temporal masking effect
--notemp Alias of --temporal-masking 0
--nssafejoint M/S switching criterion
--nsmsfix x M/S switching tuning [effective 0-3.5]
--ns-bass x Adjust masking for sfbs 0 - 6 (long) 0 - 5 (short)
--ns-alto x Adjust masking for sfbs 7 - 13 (long) 6 - 10 (short)
--ns-treble x Adjust masking for sfbs 14 - 21 (long) 11 - 12 (short)
--ns-sfb21 x Change ns-treble by x dB for sfb21
-Z [n] always do calculate short block maskings
--substep use pseudo substep noise shaping method types 0-2
-X n[,m] selects between different noise measurements n for long block, m for short. if m is omitted, m = n
--vbr-new In LAME 3.98, the new VBR was made default, and this switch may be used for experimental tweaks.
Aliases and removed settings
-f Alias of -q 7.
-h Alias of -q 2.
-v Alias of -V 4
-S Alias of --silent
--alt-preset Alias of --preset
--r3mix Alias of -V 3
--vbr-mtrh Alias of LAME 3.98 default vbr mode
--pad-id3v2 Alias of --pad-id3v2-size 128
-d No longer supported
-k No longer supported
--cwlimit No longer supported
--ogginput No longer supported. Compile with libsndfile instead
--brief Currently unused
--interch x Currently unused
--nspsytune Currently unused

Detailed description in alphabetical order

-a Downmix

mix the stereo input file to mono and encode as mono.

This option is only needed in the case of raw PCM stereo input (because LAME cannot determine the number of channels in the input file). To encode a stereo PCM input file as mono, use "lame -m m -a"

For WAV and AIFF input files, using "-m m" will always produce a mono .mp3 file from both mono and stereo input.

--abr n Average bitrate encoding (aka Safe VBR)

turns on encoding with a targeted average bitrate of n kbps, allowing to use frames of different sizes. The allowed range of n is 8...320 kbps, you can use any integer value within that range.

--add-id3v2 Force addition of version 2 tag

Tells LAME to add the tag information as id3v2. This implies adding both, a version 1 and a version 2 tag, if the values fit on a version 1 tag. See --id3v1-only and --id3v2-only if you want a more fine-grained control.

-b n Bitrate

Codec sample frequencies (kHz) bitrates (kbps)
MPEG-1 layer III 32, 48, 44.1 32 40 48 56 64 80 96 112 128 160 192 224 256 320
MPEG-2 layer III 16, 24, 22.05 8 16 24 32 40 48 56 64 80 96 112 128 144 160
MPEG-2.5 layer III 8, 12, 11.025 8 16 24 32 40 48 56 64

The bitrate to be used. Default is 128kbps in MPEG1 (64 for mono), 64kbps in MPEG2 (32 for mono) and 32kbps in MPEG2.5 (16 for mono).

When used with variable bitrate encodings (VBR), -b specifies the minimum bitrate to use. This is useful only if you need to circumvent a buggy hardware device with strange bitrate constrains. (You will need the -F setting too for digital silence).
Default for ABR/VBR is the minimum allowed bitrate for the MPEG version. (i.e. no limit)

-B n Max bitrate

see also option "-b" for allowed bitrates.

Maximum allowed bitrate when using VBR/ABR.

Using -B is NOT RECOMMENDED. A 128 kbps CBR bitstream, because of the bit reservoir, can actually have frames which use as many bits as a 320 kbps frame. ABR/VBR modes minimize the use of the bit reservoir, and thus need to allow 320 kbps frames to get the same flexibility as CBR streams. This is useful only if you need to circumvent a buggy hardware device with strange bitrate constrains.
Default value is the maximum allowed bitrate for the MPEG versio (i.e. no limit)

--big-endian Set the byte order to big-endian.

This switch tells LAME that the RAW pcm input is encoded in big-endian instead of little-endian.

--bitwidth Sets the bitwidth value

With RAW pcm input, this switch lets specify the bitwidth of the same (8 bits, 16 bits...)

-c copyright flag

mark the encoded file as copyrighted

--cbr Enforce constant bitrate encoding

This switch disables the VBR encoding. Examples:

lame -V 0 --cbr sample.wav sample.mp3
Will encode at -b 128 (ignore completely -V and encode at default bitrate)
lame --preset 160 --cbr sample.wav sample.mp3
Will encode at -b 160 (ignore ABR and use the specified bitrate)
lame --abr 200 --cbr sample.wav sample.mp3
Will encode at -b 192 (ignore ABR and use the nearest bitrate to the one specified)

--clipdetect Clipping detection

Enable --replaygain-accurate and print a message whether clipping occurs and how far in dB the waveform is from full scale.

This option is not usable if the MP3 decoder was explicitly disabled in the build of LAME.

See also: --replaygain-accurate

--comp x Indicate a compression ratio instead of a bitrate

Use this in place of the -b setting if you prefer to indicate a compression ratio (integer value). The ratio is the value of original-filesize/desired-filesize

--decode MP3 decode capability

This uses LAME's HIP2 decoder to decode an MP3 (layers 1, 2 and 3) file to a wav file.

If -t is used (disable wav header), LAME will output raw pcm in native endian format (use -x to swap bytes).

This option is not usable if the MP3 decoder was explicitly disabled in the build of LAME.

--decode-mp3delay x Indicate a different encoder delay for decoding

When decoding an mp3 file, LAME automatically corrects for the start delay that the encoder had to put into it.
This setting lets you specify a different delay than LAME's own one, so that it is possible to compensate for the delay of mp3's generated with other encoders.

--disptime secs Update the display each secs

Use this setting to change the frequency that LAME updates the display when encoding a file. Allows decimal values (like 0.5)

-e n/5/c Write the de-emphasis flag

n = (none, default)
5 = 50/15 microseconds
c = ccitt j.17

All this does is set a flag in the bitstream. If you have a PCM input file where one of the above types of (obsolete) emphasis has been applied, you can set this flag in LAME. Then the mp3 decoder should de-emphasize the output during playback, although most decoders ignore this flag.

A better solution would be to apply the de-emphasis with a standalone utility before encoding, and then encode without -e.

-F Enforce the minimum bitrate

Enforces the minimum bitrate. Without this option, passages of analog silence will be encoded at the minimum bitrate possible (32 or 8, depending on MPEG version).

--flush Flush the output stream as soon as possible

This setting forces a flush of the data written as soon as the operation has finished. This is mostly useful in case of streams. With files, it may degrade performance, since the OS has to write to disk in smaller chunks.

--preserve-modtime Give the output file the date and time of the input file

The output file is given the date and time the input file carries, rather than the time the run finished, so that a re-encoded collection keeps sorting by date the way the originals did. Both the modification time and the access time are copied, when encoding and when decoding alike.

The option has no effect when the input or the output is a pipe, there being no file to read the times from or to give them to.

--freeformat Encode to freeformat stream

LAME will produce a fixed bitrate, free format bitstream. User must specify the desired bitrate in kbps, which can be any integer between 8 and 640.

Not supported by most decoders. Compliant decoders (of which there are few) are only required to support up to 320 kbps.

Decoders knwon to handle free format:

Supports up to
MAD 640 kbps
"lame --decode" 640 kbps
l3dec 310 kbps

--gain Apply gain in decibels.

Apply Gain adjustment in decibels, range -20.0 to +12.0. 0dBFS means no amplification.

--genre-list Print alphabetical ordered list of known genres

Tell LAME to print the list of genres with their index to be used with the --tg setting.

123 Acappella
34 Acid
74 Acid Jazz
73 Acid Punk
99 Acoustic
20 Alternative
40 Alternative Rock
26 Ambient
145 Anime
90 Avantgarde
116 Ballad
41 Bass
135 Beat
85 Bebob
96 Big Band
138 Black Metal
89 Bluegrass
0 Blues
107 Booty Bass
132 BritPop
65 Cabaret
88 Celtic
104 Chamber Music
102 Chanson
97 Chorus
136 Christian Gangsta
61 Christian Rap
141 Christian Rock
32 Classical
1 Classic Rock
112 Club
128 Club-House
57 Comedy
140 Contemporary Christian
2 Country
139 Crossover
58 Cult
3 Dance
125 Dance Hall
50 Darkwave
22 Death Metal
4 Disco
55 Dream
127 Drum & Bass
122 Drum Solo
120 Duet
98 Easy Listening
52 Electronic
48 Ethnic
54 Eurodance
124 Euro-House
25 Euro-Techno
84 Fast Fusion
80 Folk
115 Folklore
81 Folk-Rock
119 Freestyle
5 Funk
30 Fusion
36 Game
59 Gangsta
126 Goa
38 Gospel
49 Gothic
91 Gothic Rock
6 Grunge
129 Hardcore
79 Hard Rock
137 Heavy Metal
7 Hip-Hop
35 House
100 Humour
131 Indie
19 Industrial
33 Instrumental
46 Instrumental Pop
47 Instrumental Rock
8 Jazz
29 Jazz+Funk
146 JPop
63 Jungle
86 Latin
71 Lo-Fi
45 Meditative
142 Merengue
9 Metal
77 Musical
82 National Folk
64 Native US
133 Negerpunk
10 New Age
66 New Wave
39 Noise
11 Oldies
103 Opera
12 Other
75 Polka
134 Polsk Punk
13 Pop
53 Pop-Folk
62 Pop/Funk
109 Porn Groove
117 Power Ballad
23 Pranks
108 Primus
92 Progressive Rock
67 Psychedelic
93 Psychedelic Rock
43 Punk
121 Punk Rock
15 Rap
68 Rave
14 R&B
16 Reggae
76 Retro
87 Revival
118 Rhythmic Soul
17 Rock
78 Rock & Roll
143 Salsa
114 Samba
110 Satire
69 Showtunes
21 Ska
111 Slow Jam
95 Slow Rock
105 Sonata
42 Soul
37 Sound Clip
24 Soundtrack
56 Southern Rock
44 Space
101 Speech
83 Swing
94 Symphonic Rock
106 Symphony
147 SynthPop
113 Tango
18 Techno
51 Techno-Industrial
130 Terror
144 Thrash Metal
60 Top 40
70 Trailer
31 Trance
72 Tribal
27 Trip-Hop
28 Vocal

--help Print the command line help.

Print the short command line help and exit.

--highpass number Use a highpass filter when encoding

Enables a highpass filter of the specified frequency when encoding the source. Range [0.001..50]kHz or [50..50000]Hz.
This is usually not required, and the gains are usually minimal. May be useful to remove an interference signal on 50Hz or 60Hz, or a DC offset. (default: disabled)
Note: The current implementation has a minimum highpass frequency of (67.5/62)% of the sample rate (I.e. 481Hz at 44Khz).

--highpass-width width Set the width of the decaying curve.

Specify the width in Hz of the decaying curve of the highpass. Range [16..50000]Hz
The minimum (and default) width is 75% of a band's width (which is 1/64th of the sample rate).
Note: See the remark in the --highpass command above.

--id3v1-only Disable the use of id3v2.

Put it before any tag setting.
This setting tells LAME to use ID3 v1 tag only, and not create an ID3v2 even if it thinks it should.

--id3v2-only Disable the user ov id3v1.

Put it before any tag setting.
This setting tells LAME to use ID3 v2 tag only. An ID3 v1 tag would not be written.

--ignore-tag-errors Ignore tag information errors

Put it before any tag setting.
This tells lame to ignore the tag information that sees as erroneous and continue encoding without those. Without this setting, errors are reported and encoding does not start.

--id3v2-latin1 Write following tag options in ISO-8859-1

Put it before the tag settings it applies to.
Text given for the tag options that follow is written to the ID3v2 tag in ISO-8859-1, which every version of the tag standard allows and which no reader will refuse. Characters the encoding cannot represent are dropped, with a message. See also: --id3v2-utf16, --id3v2-utf8

--id3v2-utf16 Write following tag options in Unicode

Put it before the tag settings it applies to.
Text given for the tag options that follow is written to the ID3v2 tag as UTF-16 with a byte order mark, which the version 2.3 tag standard allows and which most readers understand. This is what LAME does by default where it can convert the text at all. See also: --id3v2-latin1, --id3v2-utf8

--id3v2-utf8 Write following tag options in UTF-8

Put it before the tag settings it applies to.
Text given for the tag options that follow is written to the ID3v2 tag in UTF-8, which the version 2.4 tag standard allows. Readers that understand only earlier versions of the standard will not read it. See also: --id3v2-latin1, --id3v2-utf16

--ignorelength Ignore the length in the WAVE header

A WAVE header states how much audio follows it. A file still being written, or one arriving over a pipe, may carry a length that is wrong or zero, and encoding then stops early. With this setting the header's figure is disregarded and the input is read until it ends.

--license Print the license page

Prints version and license information about LAME encoder.

--little-endian Set the byte order to little-endian.

This switch tells LAME that the RAW pcm input is encoded in little-endian. It is the default setting.

--longhelp Shows the detailed help

Prints a help page with all of the command-line switches and a brief explanation of them.

--lowpass number Use a lowpass filter when encoding

Enables a lowpass filter of the specified frequency when encoding the source. Range [0.001..50]kHz or [50..50000]Hz

Using a lowpass filter helps reducing the amount of data to encode. This is important in MP3 due to a limitation in very high frequencies (>16Khz). The default value depends on the target bitrate/quality. It is not recommended to change it as a general basis.

--lowpass-width width Set the width of the decaying curve.

Specify the width in Hz of the decaying curve of the lowpass. Range [0.001..16]kHz or [16..50000]Hz
The lowpass is in the center of this curve. The minimum (and default) width is 75% of a band's width (which is 1/64th of the sample rate).

-m x Channel modes

-m m mono
-m l get only the left channel of a stereo signal for a mono output
-m r get only the right channel of a stereo signal for a mono output
-m s forced L/R stereo
-m j /
-m a
automatic switch between L/R and M/S stereo
-m f forced mid/side stereo
-m d dual (independent) channels.

MONO is the default mode for mono input files. If "-m m" is specified for a stereo input file, the two channels will be averaged into a mono signal. (Note: See comments about the -a switch for RAW PCM streams)

FORCED L/R STEREO encodes the left and the right signals independently, and gives more or less bits to each, depending on the currently available.

JOINT STEREO is the default mode of encoding. jstereo means the encoder can use (on a frame by frame basis) either L/R stereo or mid/side stereo. In mid/side stereo, the mid (L+R) and side (L-R) channels are encoded, and more bits are allocated to the mid channel than the side channel. When there isn't too much stereo separation, this effectively increases the bandwidth, so having higher quality with the same amount of bits.
Using mid/side stereo inappropriately can result in audible compression artifacts. Too much switching between mid/side and regular stereo can also sound bad. To determine when to switch to mid/side stereo, LAME uses a much more sophisticated algorithm than the one described in the ISO documentation.

FORCED MID/SIDE STEREO forces all frames to be encoded with mid/side stereo. It should only be used if you are sure every frame of the input file has very little stereo seperation.

DUAL CHANNEL mode is similar to encode the left and right as two mono signals. Its purpose was meant for Dual language streams where only one of them should be decoded. Most decoders just decode them as a stereo stream

--mp1input --mp2input --mp3input MPEG layer I, II or III input file

Assume the input file is an MP1/2/3 file. LAME will decode the input file before re-encoding it. Since MP3 is a lossy format, this is not recommended in general. But it is useful for creating low bitrate mp3s from high bitrate mp3s. If the filename ends in ".mp3" LAME will assume it is an MP3. For stdin or MP3 files which don't end in .mp3 you need to use this switch.

--vector name Which set of vector routines the encode runs

The vectorized versions of a few hot routines are built into every x86 binary and used whenever the processor running it supports them, in tiers: an SSE2 tier used on any processor of the last two decades, an AVX2 tier used on top of it where available, and an AVX-512 tier above that. This setting says which of them an encode uses. auto, the default, takes the widest set the processor offers; none runs the plain C code; and naming a set - sse2, avx2, avx512 - pins the encode to it even on a processor that has a wider one. That is how a set and the plain C path are compared against each other, for a speed measurement or to rule the vector code out when tracking down a problem.

The tiers do not all cover the same routines. avx512 carries the constant-bitrate routines only: the one variable-bitrate routine that could have used it was written and measured, and it was slower there than the narrower code, so it is not built. A variable-bitrate encode asking for avx512 therefore runs the widest set that does cover its routines, which is what --verbose will report.

--vector none also leaves the processor unasked about its capabilities, nothing depending on the answer any more. On a machine where that query is itself what fails - a few old processors get it wrong badly enough to take the program down with them - this is what lets the encoder start at all.

Which names a binary accepts depends on how it was built and on the processor it runs on. lame --longhelp lists them, and lame --verbose reports the set an encode ended up using. A name the binary cannot honour is an error, not a fallback, so a measurement never quietly reports on a different set than the one asked for. The paths can differ in the last bits of the output; measured audio quality does not change.

--noasm type Deprecated, use --vector

Still accepted, with a message naming the replacement. sse means --vector none and avx2 means --vector sse2, while mmx and 3dnow select nothing, there being no code of either kind to disable. Where both options are given, --vector wins.

--nogap file1 file2 [...] Encodes multiple continuous files.

Encodes multiple files (ordered by position) which are meant to be played gaplessly.

By default, LAME will encode the files with accurate length, but the first and last frame may contain a few erroneous samples for signals that don't fade-in/out (as is the case of continuous playback).

This setting solves that by using the samples from the next/previous file to compute the encoding.

--nogapout dir Specify a directory for the output of the files encoded with --nogap

This setting should precede --nogap, and is used to specify the alternate directory where to store the encoded files. The default one is the input file directory.

--nogaptags Enables the use of VBR tags with files encoded with --nogap

Tells LAME to put VBR tags to encoded files if they are encoded in VBR or ABR modes. Else, using the --nogap option doesn't generate it.

--nohist Disable bitrate Histogram

By default, LAME will display a bitrate histogram while producing VBR mp3 files. This will disable that feature.

--noreplaygain Disable ReplayGain analysis

By default ReplayGain analysis is enabled. This switch disables it. See ReplayGain above.

See also: --replaygain-fast, --replaygain-accurate

-o non-original

Mark the encoded file as a copy

-p CRC error detection

Turn on CRC error protection. It will add a cyclic redundancy check (CRC) code in each frame, allowing to detect transmission errors that could occur on the MP3 stream. However, it takes 16 bits per frame that would otherwise be used for encoding, and then will slightly reduce the sound quality.

--pad-id3v2 Pad ID3v2 tag.

Pads the ID3v2 tag with extra 128bytes to allow it to expand.

--preset x Enable one of the presets

Setting Meaning
--preset medium -V 5 --vbr-old
--preset standard -V 2 --vbr-old
--preset extreme -V 0 --vbr-old
--preset insane -b 320 --vbr-old
--preset fast xxx In versions older than LAME 3.98, "fast" was needed to enable the vbr-new routine. It is no longer needed.
 
--preset number --abr number
--preset cbr number -b number
Old compatibility settings. Meaningless
--preset phone -b 16 -m m
--preset phon+ / lw / mw-eu -b 24 -m m
--preset mw-us -b 40 -m m
--preset voice -b 56 -m m
--preset fm / radio -b 112
--preset hifi -b 160
--preset cd -b 192
--preset studio -b 256

--priority value Set process priority

(Windows and OS/2 only)

Sets the process priority for LAME while running under Windows and/or IBM OS/2. This can be very useful to avoid the system becoming slow and/or unresponsive. By setting LAME to run in a lower priority, you leave more time for the system to update basic processing (drawing windows, polling keyboard/mouse, etc). The impact in LAME's performance is minimal if you use priority 0 to 2.

The valid parameters are:

Priority Windows OS/2
0 Low priority IDLE_PRIORITY_CLASS IDLE, delta = 0
1 Medium priority IDLE_PRIORITY_CLASS IDLE, delta = +31
2 Regular priority NORMAL_PRIORITY_CLASS REGULAR, delta = -31
3 High priority HIGH_PRIORITY_CLASS REGULAR, delta = 0
4 Maximum priority HIGH_PRIORITY_CLASS REGULAR, delta = +31

Note that if you call '--priority' without a parameter, then priority 0 will be assumed.

-q n Algorithm quality selection

Bitrate is of course the main influence on quality. The higher the bitrate, the higher the quality. But for a given bitrate, we have a choice of algorithms to determine the best scalefactors and Huffman coding (noise shaping).

For CBR, ABR and --vbr-old modes, the following table applies

-q 0 Use the best algorithms (Best Huffman coding search, full outer loop, and the highest precision of several parameters).
-q 1 to -q 4 Similar to -q 0 without the full outer loop and with decreasing precision of parameters the further from -q 0. -q 3 is the default
-q 5 and -q 6 Same as -q 7, but enables noise shaping and increases subblock gain
-q 7 to -q 9 Same as -f. Very fast, OK quality. Psychoacoustics are used for pre-echo and mid/side stereo, but no noise-shaping is done.

For CBR and ABR, amplified noise shaping is disabled at the moment: it degraded the result instead of improving it. As it was the only difference between -q 3 and -q 4, and between -q 1 and -q 2, each of those pairs selects the same encoding for these two modes. --vbr-old is not affected.

For the default VBR mode since LAME 3.98, the following table applies

-q 0 to -q 4 include all features of the other modes and additionally use the best search when applying Huffman coding.
-q 5 and -q 6 include all features of -q7, calculate and consider actual quantisation noise, and additionally enable subblock gain.
-q 7 to -q 9 This level uses a psymodel but does not calculate quantisation noise when encoding: it takes a quick guess.

--quiet Don't print any output in the screen

Disables the screen output. Useful for job processing or other times where screen output is undesirable.

-r Input file is raw pcm

Assume the input file is raw pcm. Sampling rate and mono/stereo must be specified on the command line. Without -r, LAME will perform several fseek()'s on the input file looking for WAV and AIFF headers.

Not supported if LAME is compiled to use LIBSNDFILE.

--replaygain-accurate ReplayGain on the decoded data, and the peak sample

Measure ReplayGain on the decoded data instead, decoding the encoded stream on the fly, and find the peak sample, which is stored beside the gain. See ReplayGain above.

The knowledge of the peak sample can be useful to decoders (players) to prevent a negative effect called 'clipping' that introduces distortion into the sound. Decoding on the fly significantly slows down the encoding process, for a gain value that is usually within 0.5dB of the default one.

This option is not usable if the MP3 decoder was explicitly disabled in the build of LAME. (Note: if LAME is compiled without the MP3 decoder, ReplayGain analysis is performed on the input data after user-specified volume scaling).

See also: --replaygain-fast, --noreplaygain, --clipdetect

--replaygain-fast ReplayGain on the input samples

Measure ReplayGain on the input samples, after the volume scaling and resampling asked for on the command line. This is the default; see ReplayGain above for what is measured and where it is stored.

Tests have shown that the difference between the ReplayGain values computed on the input data and on the decoded data is usually not greater than 0.5dB, although the minimum volume difference the human ear can perceive is about 1.0dB.

See also: --replaygain-accurate, --noreplaygain

--replaygain-id3v2 ReplayGain in the ID3v2 tag too

Write the ReplayGain figures to the ID3v2 tag as well as to LAME's own tag, as the user-defined text frames REPLAYGAIN_TRACK_GAIN and REPLAYGAIN_TRACK_PEAK.

The peak is written only where it was measured, which means together with --replaygain-accurate or --clipdetect. The gain is written to two decimals and is accurate to one, that being what LAME's own tag holds, so a file also analysed by another tool can differ by up to 0.05 dB.

The frames are left out, with a message saying so, when the output is a pipe, when the input is an MP3 whose tag is passed through unchanged, and when ReplayGain analysis has been switched off.

See also: --replaygain-fast, --replaygain-accurate, --noreplaygain

--resample n Output sampling frequency in kHz

where n = 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48

Output sampling frequency. Resample the input if necessary.

If not specified, LAME may sometimes resample automatically when faced with extreme compression conditions (like encoding a 44.1 kHz input file at 32 kbps). To disable this automatic resampling, you have to use --resample to set the output sample rate equal to the input sample rate. In that case, LAME will not perform any extra computations.

-s n Sampling frequency in kHz

where n = sampling rate in kHz.

Required for raw PCM input files. Otherwise it will be determined from the header information in the input file.

LAME will automatically resample the input file to one of the supported MP3 sample rates if necessary.

--scale arg --scale-l arg --scale-r arg Scale the amplitude of the input file

Scales input by arg. This just multiplies the PCM data (after it has been converted to floating point) by arg.

arg > 1: increase volume
arg = 1: no effect
arg < 1: reduce volume

Use with care, since most MP3 decoders will truncate data which decodes to values greater than 32768.

The l and r variants apply the scaling only to left (channel 0) or right (channel 1) respectively.

--signed Input RAW uses signed values

Use with RAW pcm to indicate if the data is signed (values centered at zero) or unsigned (all positive values). This is the default value.

--silent Don't print any output in the screen

Disables the screen output. Useful for job processing or other times where screen output is undesirable.

--space-id3v1 Use spaces for padding.

Use spaces instead of null values for padding data in an ID3v1 tag.

--strictly-enforce-ISO Strict ISO compliance

With this option, LAME will enforce the 7680 bit limitation on total frame size. This results in many wasted bits for high bitrate encodings. Some decoders need it.

-t Disable VBR tag or disable WAV header

This setting has two different uses:

When encoding to VBR, this setting disables writing the VBR Tag (also known as XING tag). This tag is embedded by default in the frame 0 of the MP3 file. It lets VBR aware players to correctly seek and compute playing times in such files.

When decoding MP3 to WAV using --decode, this flag will disable writing the WAV header. The output will be raw pcm, native endian format. Use -x to swap bytes.

-T Force the usage of the LAME tag

By default, LAME already adds a LAME tag when encoding. This setting overrides the -t setting, and implies --nogaptags.

--tt title Song title

The title of the piece. At most 30 characters reach a version 1 tag; a version 2 tag has no such limit.

--ta artist Artist

Who performed it. Same length rule as --tt.

--tl album Album

The release the piece belongs to. Same length rule as --tt.

--ty year Year of issue

A year from 1 to 9999.

--tc comment Comment

Free text. A version 1 tag holds 30 characters of it, and 28 if a track number is also being written, since the track number is stored in what would otherwise be the last two.

--tn track[/total] Track number

The track's position on the original recording, and optionally how many tracks there were, each from 1 to 255.

A track number on its own produces a version 1.1 tag. Giving a total as well requires a version 2 tag, because a version 1 tag has nowhere to put it.

--tg genre Genre

Either a genre name or its number in the list --genre-list prints. A version 1 tag can hold only a number from that list; a version 2 tag takes any text.

--ti file Album art

Attach a picture, from a JPEG, PNG or GIF file of at most 128 KB. It is written as a version 2.3 frame, so there is nothing of it in a version 1 tag.

--tv id=value Any other frame

Write an ID3v2 frame this program has no option of its own for, naming it by its four-character identifier: --tv TPE2=Various Artists sets the album artist.

The user-defined text and URL frames take a description as well as a value, and are written with two separators: --tv "TXXX=description=content". Setting the same identifier and description twice replaces the frame rather than adding a second one.

See also: --id3v2-latin1, --id3v2-utf8, --id3v2-utf16

--unsigned Input RAW uses unsigned values

Use with RAW pcm to indicate if the data is signed (values centered at zero) or unsigned (all positive values).

--usage Print the command line help.

Print the short command line help and exit.

-V n Enable VBR encoding

Encodes using the VBR algorithm, at the indicated quality.
0=highest quality, bigger files. 9.999=lowest quality, smaller files. Decimal values can be specified, like: 4.51
On average, the resulting bitrates are as follows:

Setting Average bitrate (kbps)
0 245
2 190
3 175
4 165
5 130

Using -V 7 or higher (lower quality) is not recommended. ABR usually produces better results.

--vbr-old Uses the old VBR method of encoding

Tells LAME to encode to VBR using the old (slower) method of encoding.

--verboseProgram verbosity

Print a lot of information on screen.

--version Prints the license page

Prints version and license information about LAME encoder.

-x Swap input bytes

swap bytes in the input file (and output file when using --decode). For sorting out little endian/big endian type problems. If your encodings sound like static, try this first.

-Y Ignore noise in sbf21, like CBR mode does

Allows -V2, -V1 and -V0 to not encode the highest frequencies accurately, if doing so causes disproportional increases in bitrate. This is the same that CBR and ABR modes do.
Due to the design of the MP3 format, to keep precision in the last scalefactor band, an encoder needs to increase the precision in all the bands (not only in this one).
The consequence is an increase of bitrate (+60kbps in some cases) compared to not keeping that precision. Generally, this band should allow for distortions, so using this switch shouldn't cause harm.

 

  1. If compiled with decoding capabilities
  2. HIP stands for Hip Isn't a Player and is based off of Michael Hipp's mpglib 0.2a