Audio file mutual conversion tool (MP3/WAV/M4A compatible) | ZeroTools

Decode audio files (MP3, WAV, M4A, OGG) directly in your browser, batch-convert them to WAV or WebM format, and save the converted files locally.

Loading tool interface...

When to use this tool

Back to the tool ↑

Useful for converting browser-decodable audio into uncompressed 16-bit PCM WAV or WebM containers directly inside the client workspace.

Try it first

Upload a short supported audio file, choose WAV conversion, and inspect the resulting channel count, duration, and format summary.

Before you start

Codec compatibility depends on your browser. MP3 encoding, ID3 tag retention, and volume normalization are not supported; WebM encodes in real-time.

Local Audio Processing and Network Notice

Audio decoding, format conversion, and file downloads run locally inside the browser without uploading audio files to a server. However, this component-level behavior does not eliminate all external network activity, as general website assets, analytics, and advertisements communicate separately.

ZeroTools: Browser Processing & Privacy

ZeroTools focuses on tools that process input on your device. Check each tool’s scope and limitations before use.

Processing and privacy policy
Chapter 1

Adding Multiple Files and Individual Saving

This tool allows you to add multiple audio files and convert them sequentially into either WAV or WebM format. Files can be added to the list by clicking inside the dashed border to select them or by dragging and dropping them into the designated area.

While the file input accepts audio/*, the format check does not rely solely on filename extensions; subsequent steps confirm whether the browser can genuinely decode the data as audio.

After files are added, each item is analyzed asynchronously to display its original file size, playback duration, decoded sample rate, and channel count in its respective row.

Audio is indicated as monaural for 1 channel, stereo for 2 channels, or as a numerical channel count such as 6ch for 3 or more channels.

Files being analyzed cannot be converted immediately, returning to a ready state once decoding completes. Corrupted files or unsupported formats display an error, helping users determine whether to test a different input format.

The output options consist of two choices: WAV (PCM 16-bit) and WebM (Compressed). Individual convert buttons process a single row, whereas Batch Convert Selected Files targets rows that are currently waiting, errored, or already converted to a format different from the currently selected one.

Although named batch conversion, files are processed sequentially one by one using await rather than in parallel. In particular, WebM encoding requires a waiting period close to real-time playback, meaning total processing time increases when multiple long files are added.

Successfully converted rows display the resulting format, generated file size, percentage change relative to original size, preview audio player, and a save button.

Converted files are downloaded individually per row; there is no feature to bundle multiple outputs into a ZIP archive. The downloaded filename strips the final extension from the input name and appends the actual generated extension, .wav or .webm.

Switching the format selection afterward does not save old Blob data under a new extension, allowing files to be reconverted to the currently active selection instead.

Chapter 2

Input Compatibility Determined by Browser Decoding

Audio loading relies on AudioContext.decodeAudioData() from the Web Audio API. The entire file is read into an ArrayBuffer, and if the format is supported by the browser, it is decoded into linear PCM within an AudioBuffer.

Format names shown on screen such as MP3, WAV, M4A, OGG, and FLAC are input examples rather than an exhaustive guarantee of compatibility across every browser and operating system.

Even with identical extensions, decoding results vary based on internal codecs, file corruption, and browser implementation details.

The sample rate shown in the analysis row is not extracted directly from the original file container header; it reflects AudioBuffer.sampleRate after decodeAudioData() has executed.

In the Web Audio API, if the input sample rate differs from that of the AudioContext, the decoded audio may be resampled, meaning the displayed rate and the generated WAV sample rate might not match the original file native sample rate.

This page provides no setting to pick custom rates such as 44.1 kHz, 48 kHz, or 96 kHz.

The channel count is likewise obtained from AudioBuffer.numberOfChannels. The tool does not perform mono-to-stereo upmixing, stereo-to-mono downmixing, or left-right channel swapping; it passes the decoded channels directly to the output encoder.

Furthermore, while the code imposes no fixed caps on file count, byte size, or duration, the entire file and its uncompressed PCM samples reside in client device memory, meaning memory exhaustion and processing failures can occur with long recordings or numerous large files.

If decoding fails, an error message stating Failed to decode audio. is displayed and the associated AudioContext is closed. Renaming a file extension does not alter its internal encoding; if decoding fails, try using a compatible browser or convert the file to a standard format using another application.

Detailed technical specifications can be referenced in the W3C Web Audio API specification.

Chapter 3

Constructing 16-bit PCM WAV Files

When WAV is selected, a RIFF/WAVE file is constructed directly in JavaScript from the decoded AudioBuffer. The output is fixed to uncompressed 16-bit signed PCM, with no configuration options for bit depth, compression algorithm, or quality levels.

The required total byte length is calculated as 44-byte header + sample frames × channel count × 2 bytes. Consequently, output size increases directly with duration, sample rate, and channel count.

The initial 44-byte header contains the RIFF, WAVE, fmt, and data chunk identifiers, format code 1 for PCM, channel count, AudioBuffer sample rate, byte rate, block align, and 16-bit depth values.

The audio payload interleaves Float32 samples from each channel on a per-frame basis. Values are clamped between -1 and 1, quantized to 16-bit integers using 32768 for negative values and 32767 for non-negative values, and stored in little-endian byte order.

Because this process does not play back audio in real time to capture it, it does not require waiting for the full audio duration like WebM encoding does.

However, instantaneous completion is not guaranteed, and required processing time varies depending on file duration, channel count, and client CPU and memory performance.

When converting compressed MP3 or M4A files, uncompressed PCM WAV files will generally be significantly larger than original inputs.

Even when the input is already a WAV file, the output size may differ if bit depths or decoded sample rates do not match.

AudioBuffer provides no metadata pathway to transfer track titles, artist names, album titles, lyrics, or cover art, and the WAV generation routine does not write these tags.

As a result, converted files contain only raw audio samples and a standard WAV header, making this tool unsuitable for music library migrations that require preserving embedded tags.

Chapter 4

Real-Time WebM Generation with MediaRecorder

WebM output is produced by playing the decoded AudioBuffer through an AudioBufferSourceNode, routing the stream into a MediaStreamAudioDestinationNode, and capturing the stream via MediaRecorder.

Before processing begins, the tool verifies the presence of MediaRecorder and browser support for audio/webm; if unsupported, it does not masquerade as another format and instead displays an error prompting the user to select WAV.

Once recording starts, Blob chunks emitted by dataavailable events are gathered into an array. When the source node finishes playback, recording stops and the chunks are assembled into a single Blob.

Because of this architecture, processing duration corresponds roughly to the actual playback length of the audio track. Background tab throttling, power-saving profiles, device load, and browser recording quirks can affect processing; keep the page open and active to verify completion for long audio files.

The code specifies only the audio/webm container without enforcing specific codecs like Opus, constant or variable bitrates, or bits per second.

The browser decides the underlying codec and bandwidth allocation. Even if isTypeSupported() returns true, recording may fail due to runtime resource constraints.

This behavior operates strictly within the scope of W3C MediaStream Recording.

Although WebM provides compressed output, the generated file is not guaranteed to be smaller than the input, especially when the source is already heavily compressed or depending on browser-selected encoding parameters.

Similar to WAV export, input metadata tags are not carried over, and users cannot manually configure output sample rates or channel topologies.

Chapter 5

Preview, Size Comparison, and Format Switching

The preview playback button plays the original input file prior to conversion and switches to the generated output Blob once conversion succeeds.

Each playback request generates a temporary Object URL from the targeted Blob, and references to the URL are revoked when stopping, reaching track end, playing a different file, deleting a row, clearing all files, or starting a reconversion.

If an input file is previewed before conversion, the play button correctly updates to reference the new output upon completion.

The percentage displayed beside the converted file size is calculated as (converted size - original size) / original size × 100.

A positive value indicates file growth, while a negative value indicates a size reduction. This metric is not a score of acoustic quality or a guaranteed compression ratio.

For example, converting a short MP3 to WAV illustrates the expansion of uncompressed PCM, whereas switching to WebM and reconverting allows comparing uncompressed audio against browser-managed compression.

Inspect actual files to verify size outcomes.

Switching to WebM after converting to WAV re-enables both the batch conversion button and individual row conversion buttons. When reconversion begins, previous converted Blobs and size figures are cleared and replaced with the new results.

The download file extension is determined by the actual convertedFormat recorded upon successful conversion rather than the dropdown currently selected on screen, preventing mismatches between file content and extensions caused by selecting another format.

Chapter 6

File Lifecycle and Unsupported Capabilities

This audio converter manages selected File objects, decoded buffers, generated Blobs, and UI states as in-memory React state and references during the page session.

It issues no requests to upload audio files to external conversion servers, and downloads are initiated directly from local browser Object URLs.

Clicking Clear All or removing individual rows discards UI references, and reloading the page resets the list, though the exact timing of memory garbage collection depends on browser runtime management.

This notice applies strictly to the client-side audio conversion component. The host page communicates separately for website analytics and advertising, and this does not serve as an absolute guarantee that no external network traffic occurs across browser extensions or local environments.

For sensitive audio materials, avoid shared devices and manage storage destinations and browser environments under your own supervision.

Unsupported features include exporting to MP3, M4A, OGG, or FLAC, custom sample rates, bitrates, or bit depths, volume normalization, metadata tagging, noise reduction, trimming, pitch and speed adjustments, channel editing, parallel conversions, percentage progress bars, and bundled ZIP archiving.

Use the audio cutter to trim segments, the audio pitch and speed editor to adjust tempo and pitch, or the stereo/mono editor to modify channel assignments.

This page is dedicated exclusively to converting browser-decodable audio into 16-bit PCM WAV or browser-supported WebM.

Frequently Asked Questions (FAQ)

A.
Loading compatibility depends on whether the browser and operating system can decode the internal audio codec. Even with matching extensions, decoding can fail depending on device environments or file corruption. The formats listed in the UI are representative input examples, not a guaranteed compatibility list.
A.
Output is limited to 16-bit PCM WAV, as well as WebM if the browser MediaRecorder supports audio/webm. Although MP3, M4A, OGG, and FLAC are valid input candidates, exporting to these formats is not supported.
A.
WebM conversion plays decoded audio through a Web Audio API stream and records it using MediaRecorder. Because batch processing also handles files sequentially one by one, total processing time increases when multiple long files are queued.
A.
No, metadata is not preserved. This tool generates a fresh WAV or WebM file directly from decoded audio sample data and does not write source tags, artist information, or album cover artwork back into the output file.
A.
The conversion component does not transmit audio to conversion servers or store conversion history; files and results exist only as in-memory state during the page session. However, this does not guarantee zero communication across host page analytics, advertisements, or browser extensions.