A photo or voice note is not showing
Why an image, document or voice note in a conversation shows as unavailable, which cases are recoverable, and which are permanently gone.
On this page
A customer sent a photo and the thread shows a placeholder. There are four causes, and two of them cannot be undone — so it matters which one you have.
First: WhatsApp deletes media, and it is not slow about it
WhatsApp keeps a file for roughly 30 days after the message. The link behind it expires in minutes and needs the account's own token. This is why a platform has to fetch the bytes and keep its own copy at the time the message arrives — and why a gap found two months later is a gap forever.
Juno downloads inbound media on delivery and stores it privately, serving it to the console through short-lived signed links.
The four cases
| What you see | Cause | Recoverable? |
|---|---|---|
| Unavailable, on a recent message | Storage was not configured when it arrived | Only within ~30 days |
| Unavailable, on imported history | It only ever existed on the owner's phone | No |
| Unavailable, on one large file | Over the size limit | No — ask for a smaller one |
| Nothing renders, everywhere | A configuration problem, not a media one | Yes |
Storage was not configured
Media that arrives before the storage bucket is set up keeps only its provider id. Inside Meta's ~30-day window it can be fetched retroactively; after that the file is gone for everyone, including Meta.
This is why configuring media storage is on the checklist for before the first number connects, not after.
It came from an imported history
When a coexistence number is onboarded, WhatsApp replays the owner's past conversations. Some of those messages carry a real media id and the file is fetched normally. Others arrive as a placeholder with no id at all — those files only ever existed on the phone, and no platform can retrieve them. They show with a note saying the file is unavailable rather than as a broken image. See coexistence.
It was too large
There is a size ceiling (25 MB by default) on what gets pulled in. WhatsApp accepts files considerably larger than that, and a single holiday video held whole in memory on a worker is everyone's outage — so the cap is deliberate rather than a limitation. The message is kept; the file is marked unavailable.
Nothing renders at all
If every image in every conversation is missing, it is not the media pipeline:
- The signed link may have expired — reload the page.
- A content blocker or corporate proxy may be stripping the image requests.
- Check one conversation in a private window before reporting it.
Sending, not receiving
If your own attachment fails to send, that is a different path: the file goes to WhatsApp first and the message is only created once the upload succeeds, so a failed upload leaves no message at all. Check the size against the per-kind ceilings Juno enforces — 5 MB image, 16 MB video or audio, 20 MB document — which the refusal names. They sit at or below WhatsApp's own limits, so a file that passes here passes there.