Free, private recovery tests for wet AirPods.
Open the browser tool · Use the macOS terminal · Install the Codex skill
A free, no-cost one-page tool for wet or water-damaged AirPods, one AirPod not working, uneven left/right volume, muffled sound, crackling, or distortion. Sound never autoplays and no device data leaves the browser.
Important
Dry first, test second. Apple says to wipe exposed AirPods with a soft, dry, lint-free cloth and let them dry completely for at least two hours before use or returning them to the case. This project cannot guarantee liquid removal or repair damaged hardware.
Open the recovery page, choose a moisture pulse or left/right test, complete both safety checks, and press Start.
git clone https://github.com/aryanputta/airpods-recovery-kit
cd airpods-recovery-kit
./skills/recover-airpods-audio/scripts/airpods-recovery.sh diagnose
./skills/recover-airpods-audio/scripts/airpods-recovery.sh battery
# Only after 2+ hours of drying, with both AirPods out of your ears.
./skills/recover-airpods-audio/scripts/airpods-recovery.sh \
pulse --confirm-out-of-ears
# Only after setting system volume below 20 percent.
./skills/recover-airpods-audio/scripts/airpods-recovery.sh \
channels --confirm-low-volumeThe route check reports only AirPods or not AirPods. The battery command
prints only the left, right, case, or overall percentages macOS exposes. It
never prints a personal device name or Bluetooth address.
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R skills/recover-airpods-audio \
"${CODEX_HOME:-$HOME/.codex}/skills/"Then ask:
Use $recover-airpods-audio to diagnose my quiet left AirPod.
- User initiated: sound never autoplays.
- Bounded: duration and gain limits live in code and tests.
- Private: no account, analytics, cookies, upload, or device identity.
| Guard | Bound | Verification |
|---|---|---|
| Automatic playback | 0 |
Start stays disabled until both confirmations pass |
| Moisture-pulse duration | ≤ 20 seconds |
JavaScript and WAV tests |
| Web Audio gain | ≤ 0.03 |
Constant-bound unit test |
| Terminal volume | Never raised; capped at 12% only when higher, then restored |
Shell contract test |
| Personal device files | 0 |
Working-tree and Git-history privacy audit |
| Browser data upload | 0 |
Fully static GitHub Pages site |
These are measured safety contracts, not repair-success claims.
wet, quiet, or distorted
│
├── strange only with Noise Control → microphone or vent path
├── quiet in every mode → mesh, charge, balance, or driver
└── moisture suspected → dry for 2+ hours first
│
confirm output and position
│
bounded 165 Hz pulse
│
left / right comparison
The browser audio tests work with any AirPods generation selected as the output. The optional battery snapshot is best-effort because macOS does not expose every percentage on every hardware and system combination.
npm test
python3 -m unittest discover -s tests -p 'test_*.py'
./scripts/audit-public.shFocused fixes are welcome. Read CONTRIBUTING.md before opening an issue or pull request.
- 2026-07-25: Shorter demo-first README, live star count, Google-focused metadata, current Apple drying guidance, and crawler validation.
- v0.1.1, 2026-07-25: Restoring volume cap, exact battery allowlist, browser re-entry guard, and Git-history privacy scan.
MIT. AirPods is a trademark of Apple Inc. This independent project is not affiliated with or endorsed by Apple.