Skip to converter

WAV to AAC converter

This is not a listening file: the output is an AAC elementary stream meant for a downstream tool. A muxer that expects an audio track will reject a WAV outright, and wrapping it in MP4 first adds a step the tool does not want.

Sample rate and channel count are carried from the source; ffmpeg does not resample here.

Drop files here or WAV, up to 60 MB
    Add a file to start.

    Processed on your device. Files aren’t sent anywhere.

    No sign-up. Nothing to install.

    The mismatch is a format problem, not a quality problem

    Illustrative: an editor has cleaned-up narration as a 48 kHz stereo WAV and a muxer that expects an AAC audio track. The muxer does not complain about quality; it complains that the input is not the stream type it wants. The fix is one encode, and the choice that matters is bitrate, because the video pipeline already has an audio budget.

    One file per run, up to 60 MiB and 600 seconds of audio.

    1. Drag the WAV onto this page; the local FFmpeg worker loads on first use
    2. Set the bitrate to the pipeline's audio budget — 128 for narration, 192 by default
    3. Convert once and read the reported codec, duration and channel count
    4. Feed the stream to the muxer and test the combined output before committing

    What 'raw' means here

    A container adds metadata and packaging around a codec. An elementary stream is the codec alone, framed so a decoder can find the boundaries. That distinction is the whole reason this route exists separately from WAV to M4A.

    OutputConsumes wellReads poorly
    Raw AAC streamMuxers, streaming encoders, transcode chainsDesktop players that expect a container
    M4A (MP4 + AAC)Phones, apps, players that read metadataTools that want an unwrapped elementary stream
    WAVEditors, measurement tools, importersDelivery contexts with a size limit

    Verifying the stream before handing it over

    The engine probes the encoded file and compares codec and duration with the source; a duration drift beyond a small tolerance is reported as a failure rather than handed over as a shortened stream.

    • Check the reported duration against the narration length, not just the file size
    • Check the reported channel count if the pipeline expects stereo
    • Test the muxed output end to end; a stream that plays alone may still be rejected by the muxer

    The stream is disposable; the WAV is not

    An elementary stream exists to satisfy one tool in one pipeline. Keep the WAV as the source of truth, because a later pipeline change means a fresh encode from the master rather than a repair of the old stream.

    When to prefer a container instead

    If the file has to be listened to, or has to carry a title and artwork, an elementary stream is the wrong shape.

    • Delivery to devices and apps: use WAV to M4A
    • Editing and measurement: keep the WAV, or decode an existing file with MP3 to WAV
    • Archive: use WAV to FLAC, which stores the same samples without spending quality

    Stream questions

    Why is the output not a convenient player file?
    Raw AAC is an elementary stream, typically ADTS-framed, with no container. Many desktop players expect AAC inside MP4, so playback of a bare .aac file is inconsistent. For a deliverable, use the WAV to M4A route.
    What bitrate fits a video pipeline?
    Match the pipeline's audio budget: 128 kbps is common for narration and dialogue, 192 kbps is the default here and suits music-heavy video, 320 kbps is for material that will be edited again.
    Does AAC preserve the WAV?
    No. AAC discards audio information it judges unlikely to be heard, so the original samples are not stored bit for bit. Keep the WAV as the source of truth.
    Will my sample rate be carried through?
    The engine passes your file to the encoder rather than resampling it, and reports the rate and channel count measured on the result. Encoder builds vary in which rates they accept, so read the report instead of assuming.
    Is the audio uploaded?
    No. Decoding and encoding run inside this page through a self-hosted FFmpeg worker; the first run loads the WASM core from this site over http or https.

    Share this converter

    More sharing options