Free tool

Website image gallery

Give it a domain. It reads the sitemap, opens up to 50 pages, and collects every image on them into one gallery you can click through — each one captioned with its alt text, and flagged when it hasn't got any.

Reads /sitemap.xml to find pages, then opens each one. Up to 50 pages.

Every image on a site, in one request

The backend is one endpoint: read the sitemap as XML, and for each of the first fifty URLs open the page, walk its body, and record every image element's source and alt text. Relative sources are resolved against the page they were found on, and duplicates — the logo that appears on all fifty pages — are collapsed to one entry here in the browser.

Describe an endpoint in a sentence, and the Hyperlambda Generator writes and deploys it — then it is a tool your own AI agents can call over MCP. Want the pages' text as well? Website to JSON returns that, and the llms.txt generator turns the same crawl into a file models can read. Run the platform yourself:

curl -fsSL https://hyperlambda.dev/docker-compose.yaml | docker compose -f - up

The whole backend, printed

No crawler service, no image API. This page calls one endpoint, which reads your sitemap, walks the pages in it, and collects every image with its alt text. This is that endpoint in full:

.arguments
   url:string
validators.mandatory:x:@.arguments/*/url
validators.url:x:@.arguments/*/url
strings.concat
   get-value:x:@.arguments/*/url
   .:/sitemap.xml
http.get:x:-
xml2lambda:x:@http.get/*/content
.result
for-each:x:@xml2lambda/*/urlset/*/url/*/loc/*/#text
   if
      lt
         get-count:x:@.result/*
         .:int:50
      .lambda
         http.get:x:@.dp/#
         html2lambda:x:@http.get/*/content
         for-each:x:@html2lambda/*/html/*/body/**/img
            unwrap:x:+/*/*/*
            add:x:@.result
               .
                  .
                     page:x:@for-each/@.dp/#
                     src:x:"@.dp/#/*/\\@src"
                     alt:x:"@.dp/#/*/\\@alt"
return-nodes:x:@.result/*

Note the @for-each/@.dp/# in there — that is the inner loop reaching back out to the outer one to name the page an image was found on. Describe an endpoint in a sentence, and the Hyperlambda Generator writes and deploys it — then it is a tool your own agents can call over MCP.

More free tools

Collecting a site’s images is one of nine free tools here, each with the handful of backend lines that powers it printed on the page. See all of them — no signup on any of it.

Questions

What is the red "no alt" badge for?

It marks images that carry no alt text. Those are invisible to screen readers and to anything else reading the page without eyes, so the badge turns this from a gallery into a quick accessibility audit — build the gallery for your own site and the gaps are the ones wearing badges.

Why do some images not appear?

Images that fail to load are dropped rather than shown as broken tiles — hotlink protection, images behind authentication, and dead sources all vanish quietly. Anything loaded by JavaScript after the page renders is never seen either, since the crawl reads server-rendered HTML. CSS background images are not img elements and are out of scope.

Are the images copied to your server?

No. Only the addresses are collected. Your browser loads each image directly from the site it came from, exactly as it would if you visited the page.

How do I move through the gallery?

Click any image to open it. The arrow keys move back and forth, Escape closes it, and each image shows its alt text and a link to the page it was found on.