Skip to main contentSkip to navigation

Case Study

Recovering a Voice Memo That Was Unplayable for 14 Years

A 45 MB voice memo recorded on an iPhone 3G on November 14, 2011 arrived at our lab. The file hadn't played since the day it was recorded. Over five commercial repair tools had failed. Every one assumed the wrong codec. We identified the real codec, wrote custom scanning tools, rebuilt the file's metadata from scratch, & recovered all 19 minutes & 32 seconds of audio.

Author
Louis Rossmann
Written by
Louis Rossmann
Founder & Chief Technician
Updated April 2026
12 min read
Pricing

Can corrupted voice memos be recovered?

Yes, if the audio data is still intact inside a broken file container. The metadata index (called a moov atom) that tells players how to read the audio is missing or damaged. Recovery means identifying the codec, scanning for every frame boundary in the raw data, & rebuilding that index from scratch. iPhone data recovery at Rossmann Repair Group costs $500–$750. If we can't recover your data, you don't pay.

45 MB M4A File with a Missing Moov Atom

45 MB M4A File with a Missing Moov Atom

The file was 2_22 AM 11_14_2011.m4a, recorded using Apple's built-in Voice Memos app on an iPhone 3G. The recording was 45,251,298 bytes (45 MB), with SHA-256 hash eb712368ea10ffc3bc6de73d78aed95c7ab8bf1a56218043a600b4a9b0f72783. Two copies of the file existed; the second had a timestamp suffix appended to the filename. SHA-256 confirmed they were byte-identical, so only one needed recovery work.

The iPhone 3G was released in 2008. Voice Memos was introduced with iPhone OS 3.0 in June 2009. The file had been sitting in backups for over 14 years. No one could play it.

Hex inspection confirmed the file contained only three atoms. The moov atom was completely missing.

File Structure: 2_22 AM 11_14_2011.m4a
0x0000
ftyp28 bytes · File type: M4A · intact
0x001C
wide8 bytes · placeholder
0x0024
mdat45,251,262 bytes · raw ALAC audio · size field = 0 (extends to EOF)
EOF
moovMISSING · no codec info, no frame index, no duration

The mdat atom's size field was set to zero. Under the MPEG-4 specification, a zero-length size field means "this atom extends to the end of the file." Valid encoding, but some repair tools interpret a zero-length mdat header as an empty atom rather than a file-spanning one.

What Is a Moov Atom & Why Was It Missing?

What Is a Moov Atom & Why Was It Missing?

An M4A file (MPEG-4 audio container) stores audio data in a hierarchy of structures called atoms. A valid M4A needs three: the ftyp identifies the container format, the mdat holds the raw encoded audio, & the moov contains the codec configuration, sample rate, channel count, frame size table, & byte offset index that maps every frame inside the mdat.

Without the moov, no software knows what codec was used, what the sample rate or bit depth is, where each frame starts & ends, or how long the recording is. The file is a 45 MB blob of compressed audio with no instructions.

How the Moov Gets Lost: Interrupted Recording

On this iPhone 3G, Voice Memos wrote the raw audio frames into the mdat while it was recording.

If the recording had stopped normally, the app would have built the moov atom & added it to the end of the file. This one got cut off. The audio data survived in the mdat, but the moov never got written.

Given the circumstances (a nearly 20-minute recording at 2:22 AM on an aging iPhone 3G in late 2011), the most probable cause was battery death, an out-of-memory crash from iOS's aggressive OOM killer, an app crash in early Voice Memos, or storage exhaustion on the phone's flash. Any of these produces the same result: valid ftyp, valid mdat full of audio, no moov.

Every Approach That Failed

Every Approach That Failed

Phase 1: Standard Diagnosis

ffprobe reported zero playable streams. It could see the ftyp & mdat atoms but couldn't find a moov, so it had no idea what codec was inside. We ran Shannon entropy analysis on the mdat payload & got 7.98 bits per byte, near the theoretical maximum of 8.0, so it wasn't raw PCM.

Phase 2: AAC Codec Testing (All Failed)

Based on the .m4a extension & general knowledge that iPhones record in AAC, every initial attempt assumed the audio was AAC-LC. This was wrong.

  • The mdat was scanned for ADTS sync words (the 0xFFF bit pattern that marks AAC frame headers). None were found.
  • Raw mdat extraction with ADTS header wrapping at various sample rates (8000, 16000, 22050, 44100, 48000 Hz) produced static or silence.
  • Synthetic moov atoms were built with AAC-LC codec configurations at various sample rates & channel configurations (8000, 16000, 22050, 44100, 48000 Hz; mono & stereo; with & without SBR) & appended to the file. ffmpeg's AAC decoder returned zero decoded samples in every case.

Before abandoning the AAC hypothesis, we analyzed the first bytes of the mdat (00 00 00 00 00 13 08 09) bit-by-bit as if they were AAC syntax elements. The byte 0x13 was parsed as an AAC Single Channel Element (SCE) tag with specific element_instance_tag & global_gain values. The analysis appeared plausible on the surface; it produced a coherent AAC parse. But it was wrong.

Wrong: AAC Parse

00 00 00 00 00 13 08 09
0x13 = SCE tag
Result: 0 decoded samples

Correct: ALAC Frame

00 00 00 00 00 13 08 09
ALAC frame header (variable-length)
Codec: Apple Lossless, 44,100 Hz, 16-bit, mono
Result: 4,096 PCM samples per frame

The data was not AAC. Every tool that tried to treat it as AAC returned nothing.

Phase 3: untrunc (Multiple Attempts)

untrunc is an open-source tool designed to repair MP4/M4A files with missing moov atoms by using a healthy "reference file" recorded with the same device & codec. Multiple AAC reference files were generated at various sample rates. Every attempt failed because ffmpeg's AAC decoder returned zero samples from the mdat.

The untrunc source code was examined & two bugs were found in its codec matching logic. Both were patched to be more permissive. After patching, untrunc's matcher accepted the data as "mp4a" audio, but ffmpeg's AAC decoder still returned zero samples. The matcher could be fooled. The decoder could not.

Even after we identified the correct codec, untrunc couldn't help. An ALAC reference file was generated & fed to untrunc. This time it correctly identified the track as "alac" but reported Bad track: 'alac' with a warning that it lacked logic for ALAC frame detection. The file also showed mdat->file_end: 48, suggesting it interpreted the zero-length mdat header as an empty atom rather than a file-spanning one.

Why Over Five Commercial Tools Failed

The commercial M4A repair tools we tried assume the audio codec is AAC.

None of them checked for ALAC when they tried to detect the codec on this file. When their AAC heuristics found nothing recognizable, they reported the file as "severely corrupted" or "unrecoverable."

Identifying the Real Codec

Identifying the Real Codec

After every AAC-based approach failed, we stopped trying to fix the file as AAC & started researching the iPhone 3G's hardware capabilities & the audio subsystem behavior of iOS 3.x.

Our research identified the answer: the iPhone 3G Voice Memos app recorded in Apple Lossless (ALAC), not AAC.

This explained everything. AAC decoders returned zero samples because the data isn't AAC. The entropy was near-maximum because ALAC uses Rice coding & linear prediction, producing high-entropy compressed output despite being lossless.

Proving the Codec Before Building the Scanner

Before committing to a full frame scanner, we built a test moov atom using a constant estimated frame size of 3,780 bytes. ffprobe immediately recognized the file as ALAC, 44,100 Hz, approximately 1,112 seconds, at roughly 326 kbps. ffmpeg decoded frame 0 successfully: 4,096 samples of real, audible audio came out.

Subsequent frames failed with "Syntax element 5 is not implemented" errors because the constant frame boundaries didn't align with the actual variable-length ALAC frames. But that first frame was enough. One frame of real audio proved the codec identification was correct. The remaining problem was finding where each of the other 12,618 frames started & ended.

How the File Was Reconstructed

How the File Was Reconstructed

Once we knew the codec, the recovery took three custom steps, & none of the commercial tools we tried could do them.

ALAC Configuration: The 36-Byte Magic Cookie

ALAC's decoder requires a 36-byte initialization structure called a Magic Cookie (the equivalent of AAC's AudioSpecificConfig). A reference ALAC file was generated using ffmpeg, & the Cookie was extracted & verified:

00 00 00 24 61 6C 61 63 00 00 00 00 00 00 10 00
00 10 28 0A 0E 01 00 FF 00 00 00 00 00 00 00 00
00 00 AC 44

This 36-byte structure encodes the frame length (4,096 samples), bit depth (16), Rice coding parameters (pb=40, mb=10, kb=14), channel count (1, mono), & sample rate (44,100 Hz).

Custom Frame Scanner: Binary Search on 45 MB

A Python script using PyAV (Python bindings for ffmpeg) scanned the entire mdat for ALAC frame boundaries. The algorithm initialized an ALAC decoder with the 36-byte Magic Cookie, then for each frame position, attempted to decode with a large packet & used binary search to find the minimum byte count that still produced a valid decode. That minimum is the exact frame size.

MetricValue
Frames found12,619
Decode errors0
Minimum frame size2,918 bytes
Maximum frame size5,975 bytes
Average frame size3,586 bytes
Total samples decoded51,687,424
Duration19 minutes 32 seconds

The scanner processed all 45 MB in 10.3 seconds at roughly 1 ms per frame. The full decode of all 12,619 frames took 0.9 seconds. Total wall time from start to a complete frame map: 11.2 seconds.

Every byte of the mdat was accounted for as part of a valid ALAC frame. Zero bytes left over. Zero decode errors.

Moov Atom Reconstruction

A second Python script constructed a complete, standards-compliant moov atom from scratch. This isn't a repair or a patch; it's a ground-up build of the entire metadata container.

stsd (Sample Description)
ALAC codec entry with the 36-byte Magic Cookie containing sample rate, bit depth, channel count, & Rice coding parameters.
stsz (Sample Size Table)
12,619 exact frame sizes from the scan, one entry per frame.
stco (Chunk Offset Table)
12,619 absolute file offsets mapping each frame's position in the mdat.
stts (Time-to-Sample)
A single run-length entry mapping all 12,619 frames, each containing 4,096 samples at 44,100 Hz.

The reconstructed moov was combined with the original mdat. The resulting M4A plays in Apple Music, VLC, ffmpeg, & foobar2000.

Before: Corrupted

ftyp28 B
wide8 B
mdat45,251,262 B (size=0)
moovMISSING
ffprobe: "No playable streams"

After: Reconstructed

ftyp28 B · M4A/mp42/isom
moovstsd + stsz(12,619) + stco(12,619) + stts(1)
mdat45,251,262 B · untouched
ffprobe: ALAC, 44100 Hz, mono, 19:32
Recovered Output Formats

Recovered Output Formats

We delivered four copies of the recovered audio in different formats.

FormatSizeSpecsPurpose
ALAC .m4a44 MB44,100 Hz / 16-bit / mono / ~309 kbpsLossless, identical to original audio
FLAC43 MB44,100 Hz / 16-bit / monoLossless, wide compatibility
WAV (PCM)99 MB44,100 Hz / 16-bit / mono / 705.6 kbpsUncompressed, universal
AAC 128k .m4a19 MB44,100 Hz / mono / 128 kbpsCompressed, portable
Professional Mastering of the Recovered Audio

Professional Mastering of the Recovered Audio

The raw recovered audio was complete & technically accurate. It still sounded like a voice memo recorded on 2011-era smartphone hardware in an uncontrolled environment, with audible electrical hum, background hiss, & inconsistent levels.

Louis Rossmann performed professional mastering on the recovered file. He worked at Avatar Studios in New York City back in 2007.

What the Mastering Involved

  1. Spectral noise reduction: Removed electrical hum & background hiss, calibrated to eliminate the noise floor without introducing artifacts or damaging the voice signal.
  2. Gain staging & loudness normalization: Brought the voice memo to a consistent listening level without clipping or distortion, following broadcast & streaming loudness standards.
  3. Targeted EQ & dynamic processing: Improved voice clarity & intelligibility.
Why This Recovery Required a Custom Approach

Why This Recovery Required a Custom Approach

Three things separated this recovery from what the off-the-shelf tools we tried could do.

  1. Correct codec identification through historical research. Determining that the iPhone 3G used ALAC required research into Apple's hardware capabilities circa 2009 & the behavior of iOS 3.x's Voice Memos app. This is obscure historical knowledge that the tools we tried did not encode.
  2. A custom ALAC frame boundary scanner. A purpose-built Python script used ffmpeg's ALAC decoder via PyAV with the correct configuration (44,100 Hz, 16-bit, mono, 4,096 samples per frame) to decode each frame individually. Binary search found the exact size of all 12,619 frames with zero errors.
  3. Manual M4A container reconstruction. With exact frame sizes known, a second script built a complete moov atom from scratch: the ALAC-specific Magic Cookie, a per-frame sample size table (stsz), chunk offset table (stco), time-to-sample mapping (stts), & the full container hierarchy (mvhd, tkhd, mdhd, hdlr, minf, dinf, stbl).

None of the tools we tried performs this sequence.

The AAC investigation alone consumed rounds of ADTS scanning, bitstream parsing, synthetic moov construction, & untrunc source code patching before we stepped back & questioned the codec entirely.

When the Voice Memo Is Trapped on a Phone That Won't Boot

When the Voice Memo Is Trapped on a Phone That Won't Boot

The recovery above solved a container problem: a valid audio file with a missing index, already sitting in a backup. A different situation looks identical to the owner but is entirely a hardware problem. If the recording exists only on an iPhone that won't power on, or that powers on but never mounts to Finder or iTunes, the memo usually isn't gone. The board just can't get it to the computer.

Two Different Problems That Look the Same

A corrupt file that already copied off the phone is a software job: identify the codec, rebuild the moov atom, done. Audio trapped on a phone that won't boot is a board-level microsoldering job. No file tool can reach a recording the board won't hand over, because the phone never presents its storage to a computer in the first place.

Signs the recording is trapped by a board fault, not a file fault:

  • The phone shows no display, no Apple logo, & no response when plugged in to charge.
  • The phone charges but never appears in Finder or iTunes when connected to a computer.
  • The screen lights but the device sticks in a boot loop & never reaches the lock screen.
  • The phone got wet, or took a hard drop, before the recording was ever backed up.

Why There's No Chip-Off Shortcut

On any A7-and-later iPhone, meaning the 5s & everything after it, voice memos sit on a BGA-soldered NAND chip as ciphertext. iOS Data Protection encrypts them, keyed by the Secure Enclave inside the processor. If you desolder that NAND & read it on a programmer, all you get is ciphertext. There's nothing to decrypt it with, because the key material is fused into the original SoC & never leaves it. Chip-off yields a raw dump with no filesystem & no audio, so it isn't a path to the recording.

In-place decryption needs three originals together: the original SoC (Secure Enclave), the paired NAND, & the owner's passcode. A donor NAND, or a blank or foreign chip swapped in, yields nothing. The way in is to microsolder-repair the original board until it boots. Then the owner enters the passcode, the phone decrypts its own data, & the files copy out over USB. We don't do donor-board transplants, so a board that can't be repaired isn't a job we take.

Board Faults That Trap a Recording

Tristar or Hydra is the usual suspect when charging works but nothing appears in Finder. On the iPhone 5 through the iPhone 7, that chip is Tristar. Hydra first shows up on the iPhone 8, where it sits at U6300. A failed Tristar or Hydra can leave charging fully functional while the USB data line stays dead, so the board never handshakes with a computer or the lab's tools until the IC is microsolder-replaced. Tigris is a charging IC, not Tristar or Hydra, & the two aren't interchangeable.

A power fault stops boot earlier. A short-to-ground on a main rail such as PP_VCC_MAIN, common after liquid corrosion creeps under the BGA pads, halts the boot sequence, & a board that won't boot can't decrypt anything. Diagnosis is diode-mode measurement, probing voltage drop pin by pin: a normal reading is 0.3 to 0.7V, & a reading near 0.0V is a short to ground pointing at the dead rail. A hard drop can crack the microscopic BGA joints under the SoC or NAND instead. We reball those joints, & that puts back the electrical path the data was sitting behind the whole time.

These are the same constraints that govern photo recovery, message recovery, & general iPhone recovery. When the board won't boot there's no special software path for audio, & no way around the passcode: the recording comes back only by restoring the original hardware so the owner can unlock it. iPhone board repair here runs $500–$750. No data, no fee. Free evaluation. No diagnostic charges.

Board-level video: a dead logic board with the short on its main rail traced down until the phone boots, & a diode-mode pin-by-pin comparison on an iPhone 6s display connector, a different circuit checked with the same meter setting.

Frequently Asked Questions

Frequently Asked Questions

Can corrupted voice memos be recovered?
Yes, if it's a valid audio file with a missing or damaged moov atom. The raw audio data inside the mdat container is intact; the metadata index that tells players how to read it is gone. Recovery requires identifying the correct codec, scanning for frame boundaries, and rebuilding the moov atom from scratch. Rossmann Repair Group performs this work for $500–$750 depending on complexity.
Can a deleted voice memo be recovered on iPhone?
Look in Voice Memos first. Apple moves a deleted recording to the Recently Deleted folder & keeps it there for 30 days by default, & you can tap Recover to bring it back. Once it's cleared out of there, it's generally not recoverable. Every recording is its own encrypted file, & deleting it destroys that file's unique key while the flash controller clears the space. A corrupted memo is a different problem: the file was never deleted, so the audio is still there to rebuild a moov atom around. People ask about deleted text messages, & those are a narrow exception. Sometimes you can pull a fragment out of unused space inside a message database like sms.db, because that database file was never deleted. That never works for a deleted recording.
Why is my iPhone voice memo not playing?
A missing moov atom is one cause. The moov atom is the metadata index inside an M4A file that tells media players the codec, sample rate, channel count, and the location of every audio frame. If the battery dies, the app crashes, or the phone runs out of storage before the file is finished, the recording can end up with no moov atom. The raw audio survives inside the file, but no player can read it without the index.
What is a moov atom?
A moov atom is the metadata container inside an MPEG-4 audio or video file. It stores the codec configuration (stsd), the byte size of every audio frame (stsz), the file offset of every chunk (stco), and the timing map (stts). Without it, a player sees raw compressed audio data but has no instructions for decoding it. When a codec's frames vary in size, like the ALAC in the file we recovered, we have to know the exact codec and scan every frame boundary to rebuild the moov atom. We then build each sub-atom from what that scan finds.
What codec did iPhone 3G use for voice memos?
Apple Lossless (ALAC), not AAC. That matters for recovery because a tool that assumes AAC can't parse an ALAC bitstream. Finding ALAC frames takes completely different parsing logic.
Can you recover a voice memo from an old iPhone?
Yes, if the raw audio data is intact inside the file. The challenge is identifying the correct codec for that specific iPhone model and iOS version, then building the tools to parse it. iPhone data recovery at Rossmann Repair Group costs $500–$750.
Are voice memos from newer iPhones easier to recover?
A voice memo recorded as AAC is something standard repair tools can sometimes handle when the moov atom is missing. The iPhone 3G file we worked was ALAC, which is what made it hard; the tools we tried defaulted to AAC detection and reported the file unrecoverable.
What happens when an M4A file is missing its moov atom?
Without the moov atom, software can't determine the codec, sample rate, frame boundaries, or duration. Tools like ffprobe report zero playable streams. Repair tools that assume AAC produce static or silence because the data may be encoded with a different codec. Here we fixed it by identifying the actual codec, scanning the raw data for frame boundaries, & reconstructing the entire moov atom from scratch.
Can you recover a voice memo from an iPhone that won't turn on?
On most iPhones that won't boot, the recording isn't erased. It's trapped. The audio sits intact on the BGA-soldered NAND while the logic board can't present it. Recovery is board-level microsoldering. We fix the fault on the original board so it boots, whether that's a failed Tristar or Hydra, a PMIC or power-rail short, or fractured BGA joints. On an A7-or-later iPhone, the phone then decrypts in place once the owner enters the passcode, and the files copy off over USB. There's no chip-off shortcut on those phones, because a desoldered NAND without its original paired processor gives you nothing but ciphertext. iPhone board repair at Rossmann Repair Group runs $500–$750, with no data, no fee.
Does chip-off data recovery work on modern iPhones?
No. On any A7-and-later iPhone (the 5s and everything after), the NAND stores your data as ciphertext under iOS Data Protection, keyed by the Secure Enclave inside the processor. Desoldering that chip and reading it on a programmer returns a raw dump with no filesystem and no audio, because the key material is fused into the original SoC and never leaves it. Decryption is only possible with the original paired SoC, the paired NAND, and the owner's passcode together, on a board repaired so the phone boots and decrypts its own data in place.

Data Recovery Standards & Verification

Our Austin lab operates on a transparency-first model. We use industry-standard recovery tools, including PC-3000 and DeepSpar, combined with strict environmental controls to maintain drive integrity. This approach allows us to serve clients nationwide with consistent technical standards.

Transparent History

Serving clients nationwide via mail-in service since 2008. Our lead engineer holds PC-3000 and HEX Akademia certifications for hard drive firmware repair and mechanical recovery.

Media Coverage

Our repair work has been covered by The Wall Street Journal and Business Insider, with CBC News reporting on our pricing transparency. Louis Rossmann has testified in Right to Repair hearings in multiple states and founded the Repair Preservation Group.

Aligned Incentives

Our "No Data, No Charge" policy means we assume the risk of the recovery attempt, not the client.

LR

Technical Oversight

Louis Rossmann

Our engineers review all lab protocols to maintain technical accuracy and honest service. Since 2008, his focus has been on clear technical communication and accurate diagnostics rather than sales-driven explanations.

We believe in showing the bench rather than just describing it. Open-drive work runs on a 0.02 micron ULPA-filtered laminar clean bench, and we filmed it.

See the particle counter test at the bench

As Featured In

Have a corrupted voice memo or audio file?

We recover data from iPhones, corrupted files, & damaged storage. $500–$750 for iPhone recovery. Free evaluation, no data no fee.

(512) 212-9111Mon-Fri 10am-6pm CT
No diagnostic fee
No data, no fee
4.9 stars, 1,837+ reviews