How to extract album art without uploading — browser tool
- Step 1Open the extractor — Go to /audio-tools/album-art-extractor. On first visit the FFmpeg WebAssembly core downloads and caches; after that the tool can run with no network.
- Step 2Optionally go offline — For maximum assurance with a sensitive file, disconnect from the network after the engine has cached. Extraction will still work — proof that nothing is being uploaded.
- Step 3Drop the sensitive file — The file is read into page memory only. It is never POSTed. One file at a time on Free.
- Step 4Extract locally — WebAssembly FFmpeg runs
-an -vcodec mjpeg -frames:v 1in the tab. No options panel — nothing to misconfigure or accidentally share. - Step 5Preview and download the cover — The cover renders inline; click Download to save
<track>-cover.jpgto your device. The file was generated locally. - Step 6Close the tab to clear memory — Closing the tab discards the in-memory copy of your audio. Nothing persists server-side — there was never an upload to delete.
Where your file goes (and doesn't)
The privacy model: processing is local; the only server touchpoint is an optional anonymous counter.
| Data | Leaves your device? | Detail |
|---|---|---|
| Your audio file | No | Read into page memory; processed by WebAssembly FFmpeg locally |
| The extracted cover JPEG | No | Generated locally; saved to your device on Download |
| FFmpeg engine | Downloaded once | The WebAssembly core loads from JAD's origin, then is cached |
| Usage counter | Yes (if signed in) | A single anonymous increment with no file content; opt-out in account settings |
Fixed, no-options behaviour
With no options, there is no setting that could expose or transmit your file.
| Aspect | Behaviour |
|---|---|
| Processing location | Your browser tab (WebAssembly) |
| Command | -an -vcodec mjpeg -frames:v 1 |
| Output | Local JPEG, native dimensions |
| Options | None |
| No art | No embedded album art found in this file. |
| After close | In-memory file discarded; nothing on a server |
Tier limits (audio family)
Local processing still respects per-file caps.
| Tier | Max file size | Max duration | Files at once |
|---|---|---|---|
| Free | 50 MB | 30 min | 1 |
| Pro | 200 MB | 120 min | 10 |
| Pro-media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | 100 |
Cookbook
Privacy-sensitive scenarios where keeping the file local is the whole point.
Unreleased master with final cover
A pre-release single needs its cover pulled for the press kit, but the audio cannot leak. Local extraction keeps it on your machine.
Input: Single (FINAL master).wav/mp3 (APIC: 3000x3000 cover) Processing: local WebAssembly FFmpeg, no upload Output: Single (FINAL master)-cover.jpg (3000x3000 JPEG)
Verify nothing uploads (airplane mode)
After the engine caches on first load, disconnect the network and extract. Success while offline proves the file never goes anywhere.
1. Load page online (FFmpeg core caches) 2. Turn off Wi-Fi / go offline 3. Drop the file → extraction succeeds → download cover → confirms 100% local processing
Personal archive on a shared computer
Extracting on a shared or public machine? Closing the tab clears the in-memory file, and nothing was uploaded to a service that retains it.
Drop archive-track.flac → extract → download cover.jpg Close tab → in-memory copy gone No server-side temp file exists to be recovered
Network panel check
Open DevTools → Network while extracting. You'll see the engine load but no request body carrying your audio file.
Network during extraction: GET /ffmpeg-core/... (engine, cached) (no POST with your file as the payload)
File with no embedded cover
Even privacy-sensitive files sometimes lack art. The tool reports it locally — no file ever left the device to find that out.
Input: private-recording.wav (no embedded picture) Result: "No embedded album art found in this file." (determined locally — nothing was uploaded)
Edge cases and what actually happens
File has no embedded art
No artworkWhen there's no embedded picture, FFmpeg produces a 0-byte file and the tool reports No embedded album art found in this file. — all determined locally, with no upload. Embed a cover with the ID3 tag editor if needed.
First load requires a network connection
ExpectedThe WebAssembly engine must download once before it can run. After that it's cached and works offline. For a sensitive file, load the page (and the engine) first, then go offline before dropping the file if you want airtight assurance.
Signed-in usage counter
Anonymous metadata onlyIf you're signed in, a single anonymous counter increments to power your dashboard stats — it carries no file name, no audio, no cover. You can opt out in account settings. The audio itself is never transmitted regardless.
Embedded PNG cover
Re-encoded to JPEGThe fixed mjpeg encoder outputs JPEG, so a PNG cover is re-encoded locally — same dimensions, transparency flattened. This happens entirely on your device; the conversion is not a server step.
Multiple embedded pictures
First picture only-frames:v 1 extracts only the first picture (front cover). A back cover or additional picture isn't returned. No file leaves your device in either case.
DRM-protected file
Cannot processDRM-encrypted streaming downloads can't be demuxed by the local FFmpeg, so extraction fails — locally, with no upload. Only DRM-free files yield art.
File exceeds the tier limit
RejectedFree caps a file at 50 MB / 30 min. Long masters or mixes can exceed the duration limit. Pro raises it to 200 MB / 120 min — still processed locally, never uploaded.
You want the original byte-identical cover
By designThe local engine re-encodes the picture with mjpeg rather than copying raw bytes. Dimensions match; compression is FFmpeg's. Byte-for-byte extraction isn't provided, but everything still stays on your device.
Frequently asked questions
Is my file uploaded anywhere?
No. FFmpeg runs as WebAssembly inside your browser tab, so the audio is read into page memory and processed locally. No file body is sent to any server. You can verify this in the browser's network panel — the engine loads once, but your file is never POSTed.
Can I prove nothing is being uploaded?
Yes. After the first page load caches the FFmpeg engine, disconnect from the network and extract a cover. If it works offline, the file is being processed entirely on your device. You can also watch DevTools → Network during extraction and confirm there's no request carrying your file.
What about the usage counter — does that send my file?
No. If you're signed in, a single anonymous counter increments for dashboard stats. It contains no file name, no audio, and no cover image — just a count. You can opt out in account settings. The audio is never transmitted regardless of sign-in state.
Does anything get stored on a server temp disk?
No. Because there's no upload, there's no server-side temp file. Everything lives in your browser's memory and is discarded when you close the tab. Unlike upload-a-file sites, there's nothing on someone else's disk that could be retained or recovered.
Can I extract from an unreleased master safely?
Yes — that's the intended use. The master never leaves your device; the cover is pulled locally and saved as <track>-cover.jpg. For extra assurance, go offline after the engine caches, then extract.
Are there options that could leak data?
No. The tool has no options at all. There's no cloud setting, no share toggle, nothing to misconfigure. It runs one fixed local command and produces a local JPEG.
Does it work offline?
After the first load (which downloads and caches the WebAssembly engine), yes — extraction works with no network. This is a useful side effect of the no-upload architecture and a good way to verify privacy.
What if the file has no cover?
You'll see No embedded album art found in this file., determined locally with no upload. To add a cover, use the ID3 tag editor, which also runs entirely in your browser.
What format is the output, and is it modified?
Output is a JPEG at the embedded picture's native dimensions. A PNG cover is re-encoded to JPEG locally (transparency flattened). The conversion happens on your device — there's no server processing step.
Does extracting change my original audio file?
No. The tool is read-only — it decodes the file in memory to pull the picture and writes a new JPEG. Your original file is untouched, and the in-memory copy is cleared when you close the tab.
Can it handle DRM-protected downloads?
No. DRM-encrypted streaming files can't be demuxed even locally, so extraction fails — but no file was uploaded to discover that. Only DRM-free files work.
What's the file-size limit for private extraction?
Free allows one file up to 50 MB / 30 min, processed locally. Pro raises it to 200 MB / 120 min with 10 files at once; Pro-media removes the duration cap. All tiers keep processing on your device — the limit is about local resources, not upload bandwidth.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.