How to Use the Aac Validator: Step-by-Step Tutorial
The Aac Validator runs entirely in your browser โ your audio file is never sent to any server, no account is required, and nothing leaves your machine. This tutorial walks through every step of using the tool: loading an AAC file, reading each results panel, understanding what the validator checks, and diagnosing the issues it reports.
Follow along with the tool open: Open the Aac Validator in a second tab, then work through each step below.
Open Aac Validator โTable of Contents
Step 1 โ Open the Tool
Navigate to /developer-tools/aac-validator/. The tool loads entirely in the browser โ after the initial page load, validating a file makes zero outbound network requests. You can confirm this in the browser's DevTools Network panel: drop a file and watch the network tab remain idle.
The tool is accessible from the Developer Tools hub, the command palette (press Ctrl+K or โK and type "Aac Validator"), or directly via the URL above.
Step 2 โ Load Your AAC File
Drag your .aac file from your file manager and drop it anywhere on the drop zone. The drop zone is labeled with an audio icon and prompts you to drop a .aac file. A visual highlight confirms the file is being received.
If you drop a file that is not an AAC file โ an MP3, FLAC, WAV, or any other format โ the tool shows a type error message identifying the actual file extension and explaining why it was rejected. Only .aac files are accepted.
Once a valid file is dropped, the validator scans the ADTS frame structure and produces results within a second for most files. You do not need to click any button โ validation runs automatically on drop.
Removing a file: Once a file is loaded, an โ button appears next to the filename. Click it to clear the file and reset the tool so you can load a different file.
Step 3 โ Read the Status Bar
After validation runs, a status bar appears below the drop zone. It is colour-coded to give you an immediate answer:
- Green โ "Valid AAC โ no issues found." The file passed all checks: valid ADTS sync frames were found, the MPEG version, profile, sample rate, and channel configuration are consistent across frames, and no structural anomalies were detected.
- Yellow โ "Valid AAC โ N warning(s). See details below." The file is structurally valid but the validator found conditions worth noting โ for example, missing ID3v2 tags or an unusual but technically valid sample rate. See the Warnings panel for specifics.
- Red โ error message. The file failed a required check. The status bar shows a concise description of the first fatal error detected. More detail appears in the Error panel below.
Step 4 โ Review the Error Panel
If validation fails, the Error panel appears below the status bar with a red header. It describes what went wrong with enough detail to diagnose the root cause. Common error messages and what they mean:
"No valid ADTS sync frames found"
The validator scanned the file and found no bytes matching the ADTS sync word pattern (0xFFF). This means the file is either not a raw AAC/ADTS file, is an AAC file stored in an MP4/M4A container (which has a different structure that the ADTS parser does not handle), or has been severely corrupted. If you expected an ADTS file but this error appears, check the file's actual format: an M4A file opened with a hex editor will show the bytes 66 74 79 70 (the MP4 ftyp box) near the start rather than an ADTS sync header.
"Frame count is zero โ file appears empty or unreadable"
The file exists but contains no readable ADTS frames. This can indicate a file that was created but never populated (an empty export from a failed encoder), a file whose ADTS data was stripped, or a download that was truncated before any audio data was written. Check the file size โ a valid AAC file should be at minimum several kilobytes even for a very short clip.
"Inconsistent sample rate across frames"
The sample rate index changed between frames. In a valid AAC stream, every frame must declare the same sample rate. A mixed-rate stream indicates the file was incorrectly assembled โ for example, two separate AAC files were concatenated at the byte level without re-encoding. The file may play in tolerant decoders but will produce incorrect output in strict parsers and audio analysis tools. Re-encode from the source to produce a uniform stream.
"Inconsistent channel configuration across frames"
The channel configuration field changed between frames. Like sample rate, channel configuration must be constant throughout a valid ADTS stream. This indicates a corrupt or improperly concatenated file.
"Invalid sample rate index in frame header"
A frame header contains sample rate index 15, which is reserved and invalid per the AAC specification. This indicates a corrupt frame header โ the file structure cannot be trusted. Re-encode from the source if available.
Step 5 โ Review the Warnings Panel
If warnings were detected, a yellow Warnings panel appears listing each one. Warnings do not mean the file is broken โ the AAC stream is structurally intact โ but they flag conditions that may cause issues in specific contexts:
"No ID3v2 tag found"
The file has no embedded ID3v2 metadata block. It will play correctly in any AAC decoder, but music players, podcast clients, and media servers will have no track title, artist, or album to display โ the track will appear as "Unknown" or use the filename as a fallback. Add tags using a tag editor such as Kid3, Mp3tag, or MusicBrainz Picard (which supports AAC/M4A tagging).
"Non-standard sample rate: [value] Hz"
The declared sample rate is valid per the AAC specification but is not a widely used standard rate (44,100, 48,000, 22,050, or 16,000 Hz for most consumer and podcast contexts). An unusual rate like 44,056 Hz may indicate a conversion artefact. Most decoders will handle it, but some streaming platform ingestors and broadcast systems may resample or reject it.
"MPEG-2 AAC detected โ MPEG-4 is preferred for modern systems"
The ADTS frame header declares MPEG-2 (bit value 1 in the ID field). While valid, MPEG-2 AAC is less widely supported than MPEG-4 AAC. Some podcast platforms and streaming ingestors accept only MPEG-4 AAC. If compatibility is a concern, re-encode using an MPEG-4 AAC encoder such as the AAC encoder in FFmpeg (-c:a aac).
Step 6 โ Read the Valid File Details
When a file passes validation (green or yellow status), a teal "Valid AAC" panel appears showing the audio parameters read from the ADTS frame headers:
- MPEG Version. Either MPEG-2 or MPEG-4. MPEG-4 is the current standard used by virtually all modern encoders.
- AAC Profile. The encoding profile used โ almost always AAC-LC (Low Complexity). Other profiles (Main, SSR, LTP) are rare in practice.
- Sample Rate. In Hz โ e.g., 44100 Hz or 48000 Hz. Verify this matches what you expect for the recording or the platform's requirements.
- Channels. The number of audio channels โ 1 (mono), 2 (stereo), or multi-channel configurations. A channel configuration of 0 means the layout is specified inside the bitstream rather than the ADTS header.
- Frame Count. The total number of ADTS frames found in the file. Each standard AAC-LC frame contains 1024 audio samples.
- Duration. Calculated as frame count ร 1024 รท sample rate, displayed in minutes:seconds format. Compare this against the expected duration to detect truncation.
- File Size. The total file size in KB, reported for reference.
Cross-check the sample rate and channel count against your expectations. If a supposed stereo file shows 1 channel, it was downmixed to mono at some point in the processing chain. If the duration is shorter than expected, the file may have been truncated during download or export.
Step 7 โ Inspect the ID3v2 Tags
If the file contains an ID3v2 metadata block, a purple "ID3v2 Tags" panel appears. It shows:
- ID3v2 Version. The version of the ID3v2 specification used โ typically ID3v2.3 or ID3v2.4. Both are widely supported. ID3v2.2 (an older, 3-character frame ID format) is occasionally seen in files tagged by legacy software.
- Tag Size. The total size of the ID3v2 block in bytes. A very large tag block may contain embedded album art or other binary data.
- Tag frame table. All ID3v2 frames found in the block, displayed with their frame ID and decoded content. Standard frames include TIT2 (title), TPE1 (artist), TALB (album), TRCK (track number), TYER/TDRC (year), TCON (genre), and COMM (comment). Other frames such as APIC (album art) are listed by name but their binary content is not displayed.
Use this panel to confirm the tags are present and correctly populated before ingesting the file into a library or distribution system. Common things to check:
- TIT2 (title) is not blank or set to a raw filename
- TPE1 (artist) and TPE2 (album artist) are present and spelled consistently
- TRCK (track number) uses the format
NorN/Total - TYER or TDRC (year) is present and correctly formatted
- No unexpected frames from previous tagging tools
Worked Examples
Example 1: AAC podcast episode with no player metadata
Situation: You exported a podcast episode to AAC from your DAW. The file plays correctly in your player but appears as "Unknown" in your podcast client.
What to do: Drop the file into the Aac Validator. If the Warnings panel shows "No ID3v2 tag found", your DAW did not write metadata tags on export. Open the file in a tag editor such as Kid3 or Mp3tag, add the episode title (TIT2), show name (TPE1 or TPE2), episode number (TRCK), and publication date (TDRC), then save. Re-validate to confirm the ID3v2 panel now shows the correct frames.
Example 2: AAC file rejected by a streaming platform
Situation: You uploaded an AAC file to a streaming platform or podcast host and received an error about an unsupported audio format or incorrect bitstream.
What to do: Drop the file into the Aac Validator. Check the MPEG Version (must be MPEG-4 for most platforms), the AAC Profile (must be AAC-LC), and the Sample Rate (most platforms require 44,100 Hz or 48,000 Hz). If the file shows MPEG-2 or a non-standard sample rate, re-encode using FFmpeg: ffmpeg -i input.aac -c:a aac -ar 44100 output.aac. Re-validate the output to confirm MPEG-4, AAC-LC, and 44,100 Hz before re-uploading.
Example 3: Confirming a downloaded AAC file is complete
Situation: You downloaded an AAC audiobook chapter from a service. You want to confirm the download is complete before archiving it.
What to do: Drop the file into the Aac Validator. The Duration shown in the Valid AAC panel is the computed duration from ADTS frame count โ it reflects the actual audio data present in the file, independent of any container or tag metadata. Compare this against the expected chapter duration from the service listing. A discrepancy of more than a few seconds indicates the file was truncated. Re-download the chapter before archiving.
Example 4: Verifying an AAC file exported from a video editor
Situation: You stripped the audio track from a video as an AAC file using a video editor. You want to confirm the exported audio is structurally correct before distributing it.
What to do: Drop the exported .aac file into the Aac Validator. If the validator reports "No valid ADTS sync frames found", the video editor may have exported the audio in an MP4/M4A container rather than raw ADTS format โ in which case the file has a .aac extension but is actually an M4A container. Use FFmpeg to convert it to raw ADTS: ffmpeg -i input.aac -c:a copy -f adts output.aac. Re-validate the output to confirm ADTS sync frames are now found.
Tips and Edge Cases
- M4A files renamed to .aac. Apple's M4A format uses an MP4 container holding AAC audio. If a file is named
track.aacbut was actually an M4A file, the validator will report no ADTS sync frames โ because the MP4 container structure is not ADTS. Useffprobe track.aac(if available) or open in a hex editor to confirm: M4A files begin with the bytes for an MP4ftypbox rather than an ADTS sync word. - AAC files with an ID3v2 preamble. Some encoders prepend an ID3v2 block before the first ADTS frame. The validator handles this correctly: it scans past the ID3v2 block to find the first ADTS sync word, then reads the frame structure from there.
- HE-AAC and AAC-LD files. High-Efficiency AAC (HE-AAC, also known as AAC+) and Low-Delay AAC use extensions to the base AAC specification. The ADTS header profile field only encodes the base AAC object type โ HE-AAC is signaled in the audio-specific config inside the bitstream, not in the ADTS header. The validator reads and reports the ADTS header profile; HE-AAC files will typically appear as AAC-LC in the ADTS profile field.
- Very short files. Files shorter than a few ADTS frames (e.g., under 100 KB) validate the same way as longer files. The frame count and computed duration will simply be small.
- Privacy. The file bytes are processed entirely in JavaScript running in your browser tab. No data is sent to any server. The tool works offline once the page has loaded.
- After fixing a file. If you re-encode or re-tag an AAC file based on the validator's output, drag the new version onto the drop zone to re-validate. Click the โ button first to clear the previous result.
