Accessibility advice for social media usually arrives as an exhortation. Write alt text. Describe your images. It is rarely accompanied by any measurement of what accounts actually do, which makes it easy to assume the answer is “most people try, some forget”.
That is not what the data says. Over the 90 days to 5 September 2026 I collected every post published by 60 public brand and publisher accounts on Bluesky, straight from the public API with no login. That is 45,026 posts, of which 4,422 carried images. Bluesky was the platform to measure this on for one specific reason explained below: it is the only major network where a missing description stays missing.
18.3 percent of those image posts carried alt text on every image.
The more useful finding is underneath that number. Alt text does not vary the way effort varies. It varies the way a setting varies.
The protocol makes the field compulsory and the content optional
In the AT Protocol lexicon that defines a Bluesky image embed, app.bsky.embed.images, each image object lists alt as a required property, described as “Alt text description of the image, for accessibility.”
Required, in this context, means the field must be present. An empty string satisfies it. So every image post in this dataset technically has alt text, and 3,609 of 4,422 have it set to nothing at all. The question was never whether the field exists. It is whether a human typed into it.
This also rules out the most common excuse, which is that the tooling makes it hard. The field is a required part of the record. Any client that posts an image is already filling it in, with something or with nothing.
Eleven accounts at zero. Five above ninety percent. Almost nothing in between.
Restricting to the 25 accounts that published at least 25 image posts in the window, here is the distribution of per-account rates:
- 11 accounts at exactly 0 percent
- 5 accounts below 10 percent
- 2 accounts between 10 and 50 percent
- 2 accounts between 50 and 90 percent
- 5 accounts at 90 percent or above
The median account rate is 0.4 percent. The mean across all image posts in those accounts is 18 percent, and that gap between mean and median is the whole story: a handful of accounts do it on essentially everything, most do it on essentially nothing, and the middle is nearly empty.

| Account | Image posts | With alt text on every image | Rate | Followers |
|---|---|---|---|---|
iFixit (ifixit.com) | 30 | 30 | 100% | 4,092 |
Crunchyroll (crunchyroll.com) | 204 | 202 | 99% | 9,374 |
Internet Archive (archive.org) | 103 | 100 | 97% | 433,725 |
The Verge (theverge.com) | 87 | 84 | 97% | 361,674 |
Electronic Frontier Foundation (eff.org) | 70 | 63 | 90% | 164,322 |
Wikipedia (wikipedia.org) | 100 | 88 | 88% | 57,176 |
The New York Times (nytimes.com) | 280 | 153 | 55% | 1,344,969 |
Netlify (netlify.com) | 68 | 33 | 49% | 2,260 |
Wired (wired.com) | 61 | 14 | 23% | 467,753 |
PlayStation (playstation.com) | 32 | 3 | 9% | 170,168 |
Tailscale (tailscale.com) | 42 | 1 | 2% | 6,217 |
IGN (ign.com) | 248 | 2 | 1% | 208,199 |
The Economist (economist.com) | 272 | 1 | 0% | 163,493 |
Semafor (semafor.com) | 448 | 1 | 0% | 42,041 |
NBA (nba.com) | 491 | 0 | 0% | 119,946 |
Rolling Stone (rollingstone.com) | 416 | 0 | 0% | 170,349 |
The Atlantic (theatlantic.com) | 320 | 0 | 0% | 402,144 |
Bloomberg (bloomberg.com) | 318 | 0 | 0% | 491,759 |
The Wall Street Journal (wsj.com) | 268 | 0 | 0% | 250,551 |
The New Yorker (newyorker.com) | 216 | 0 | 0% | 412,731 |
PostHog (posthog.com) | 99 | 0 | 0% | 379 |
Reuters (reuters.com) | 51 | 0 | 0% | 347,609 |
Patagonia (patagonia.com) | 29 | 0 | 0% | 2,129 |
The Associated Press (apnews.com) | 29 | 0 | 0% | 350,114 |
Vox (vox.com) | 25 | 0 | 0% | 230,053 |
Followers do not predict it. Nothing about size does.
Of the 25 qualifying accounts, the 17 with more than 100,000 followers have a median alt text rate of 0 percent. The 8 with fewer than 100,000 followers have a median rate of 25.5 percent.
iFixit, with 4,092 followers, described every one of its 30 image posts. The Wall Street Journal, with 250,551 followers, described none of its 268. The Verge described 84 of 87. Rolling Stone described 0 of 416.
Resourcing is not the variable. A newsroom with a social team of ten is not short of the twenty seconds it takes. What separates these accounts is whether describing the image is part of the posting step or a thing someone is supposed to remember afterwards. The accounts at 97 and 99 percent are not more diligent post by post. They decided once.
When accounts do write it, they write it properly
This was the finding that surprised me most. I compared every non-empty alt string against the text of the post it belonged to, expecting a lot of copy and paste.
Of 1,058 non-empty alt strings, 1,041 (98 percent) are a distinct description rather than a repeat of the post text. Eleven are identical to or contained in the caption. Six are near duplicates. The median alt string is 156 characters long, with a tenth percentile of 45 and a ninetieth of 383.
Here is one from The New York Times, on a post about Naomi Osaka:
Naomi Osaka wearing a sweatshirt adorned with press clippings of her career highlights over a full tulle skirt. She walked out with her hair in cornrows, Iverson’s style of choice, wearing the sweatband, arm sleeve and headband he often wore to play.
The post text next to it says something else entirely, that the outfit paid homage to Allen Iverson and that Iverson replied. The alt describes what is in the frame; the post says why it matters. That is the correct division of labour, and the accounts doing this are doing it well.
So the practical problem in this dataset is not quality. Nobody is writing bad alt text. They are writing none.
Video is worse, and captions are almost non-existent
The same 90 days produced 1,306 video posts across these accounts. The video embed has its own alt field.
- 43 of 1,306 video posts carry alt text, which is 3.3 percent.
- 1 of 1,306 carries a caption file. One.
Twenty two of those 43 described videos belong to a single account, iFixit. Take out iFixit, The New York Times, The Onion and The Verge and the number for the remaining 51 accounts combined is two.
The link card is where the question quietly disappears
Something else in the data explains why so many large publishers sit at zero without anyone noticing: 38,447 of the 45,026 posts, or 85 percent, are link cards rather than uploaded media. A link card pulls its image from the destination page’s own metadata, and it takes no alt text at all, on any account, ever.
For a newsroom posting headlines with link previews all day, the alt text field genuinely never appears. Then the occasional native image post goes out through the same automated pipeline, with the field left as an empty string, and no human ever sees the prompt. That is the mechanism. It is not indifference, it is a publishing pipeline that never asks.
Which is exactly why it stays at zero rather than drifting up and down. Nobody is deciding post by post.
What the other platforms do, and why that hides the problem
Bluesky writes nothing into the field for you. Two of the platforms most social teams use every day do.
Instagram describes automatic alt text in its own help centre: “Automatic alt text uses object recognition technology to provide a visual description of photos for people with visual impairments. You can replace this text to provide a better description of a photo.”
LinkedIn’s help page on adding alternative text says: “LinkedIn may automatically add alt-text to images that don’t have it. When uploading an image from a desktop computer, you’ll be alerted if alt-text is automatically assigned. You won’t be alerted if you’re uploading an image from a mobile device.”
Read that second sentence again from a workflow point of view. If your team posts from phones, an automatic description can be attached to your image, and you will not be told. Object recognition can tell a screen reader that a photo contains “text and a person”. It cannot tell it what the chart says, which brand is on the packaging, or what the joke is.
So on Instagram and LinkedIn the field is never visibly empty, which is precisely why the habit never forms. On Bluesky the same team’s output shows up as an empty string, which is what makes it measurable at all. The 18.3 percent is not a Bluesky problem. It is the same team’s real habit, on the one platform that does not paper over it.
What to actually do about it
- Move the description into the posting step, not the review step. The accounts at 97 percent are not remembering. Their process does not let a post leave without it.
- 156 characters is the working length, based on what accounts that do this consistently actually write. Not a sentence fragment, not a paragraph.
- Describe the frame, not the caption. The post says why it matters. The alt says what is in the picture. The 98 percent finding above says the people who write alt text already understand this.
- Video is the open gap. Alt text on a video is 3.3 percent across 1,306 posts and caption files are one in 1,306. If you want a differentiator that costs almost nothing, this is currently it.
- Watch the automated pipeline. If posts leave your organisation through a scheduler, a CMS integration or an RSS bridge, check what it puts in the alt field. In this dataset, every account at exactly zero looks like a pipeline that never asks.
What this cannot tell you
- One platform, one 90 day window, one collection date. Bluesky’s account mix skews to news publishers, technology companies and United States English. It is not a sample of brand social at large.
- Nine high-volume news accounts hit the collection page cap of 2,500 posts, so their totals are floors and their windows are shorter than 90 days. Per-post rates are unaffected.
- Per-account rates are only reported for the 25 accounts with 25 or more image posts in the window.
- The data cannot say who wrote any given post, whether an account uses a scheduler, or whether alt text was suppressed by a tool rather than skipped by a person. The pipeline explanation above is the most plausible reading of a bimodal distribution, not a proven cause.
- Nothing here measures whether the alt text is any good for a screen reader user. It measures whether it exists and whether it differs from the caption.
Source ledger
- Post, image and video records: the public Bluesky AppView API (
public.api.bsky.app), endpointsapp.bsky.actor.getProfile,app.bsky.feed.getAuthorFeedandapp.bsky.feed.getPosts, read without authentication on 5 September 2026. 118 candidate handles, 74 resolved, 60 collected, 55 with posts in the window, 45,026 posts, 4,422 image posts, 1,306 video posts. - Field definition:
app.bsky.embed.imageslexicon, AT Protocol repository, read 5 September 2026, HTTP 200. - Edit the alternative text for a post on Instagram, Instagram Help Centre, read 5 September 2026. The page blocks plain automated requests and was read in a browser.
- Add alternative text to images for accessibility, LinkedIn Help, marked “Last updated: 3 years ago”, read 5 September 2026, HTTP 200.
- Every account in the table above is linked by handle and can be recounted from the same public API.



