Skip to content
ė.ink home

Review 10 · Live Intelligence

Mediawall.

A self-hosted media wall in one PHP file, careful about the plumbing that photo walls usually get wrong. We could test the plumbing. We could not see the pictures.

  • Tested 27 September 2026, 20:20–20:33 UTC
  • Where the work happens on the site’s own server
  • Against PhotoPrism, Immich

Open Mediawall on labs.llc

1What it is, and who it is for

Mediawall puts a folder of photographs and videos on the web as a continuous display: a grid with sorting and adjustable thumbnail size, a full-screen viewer, and a canvas slideshow with named transitions and filter effects. Each folder can be a public wall or a password-protected one. On labs.llc, the public view at ?public=1 shows the site's NYC photo and video collection, and a companion page shows the same archive as a lazy-loading wall with search and a shuffled slideshow.

It is for anyone who wants a folder of pictures on the web without a hosted photo service, and, on labs.llc, for visitors browsing the NYC collection.

2How it works

Server-side PHP with browser code on top. mediawall.php, 412,510 bytes, is both the console and the public view (679–685). Settings and bcrypt password digests live in data/mediawall-config.php, moved there, the comments record, after sharing the name config.php wiped the site's own settings (4–8, 24–60). media-list.php lists media/ as JSON, folder by folder, under the console's own access rules, so a public root no longer announces the names of private sub-folders (media-list.php 1–40).

The wall engine, wall.js, reads only that list. Each tile draws a 480-pixel JPEG thumbnail, and media-thumb.php makes a missing one on demand rather than letting a tile load a multi-megabyte original; the comment works through why twelve 4 MB originals meant fifty megabytes to draw one screen (wall.js 1–27; media-thumb.php 1–12). Tiles lazy-load, the viewer preloads the next image, and the slideshow draws from a shuffled bag so nothing repeats until everything has shown; per-frame randomness, the code notes, repeats a picture about once every four slides (wall.js 28–36). The public page also loads Tailwind from cdn.tailwindcss.com and html2canvas from cdnjs (mediawall.php 2371–2374).

Figure 10 · the drawing
How Mediawall works: a data-flow drawingmedia/ folder, on the hostthe owner's photographs and videosmedia-list.phpJSON per folder,under eachfolder's rulesmedia-thumb.php480 px JPEG,made on demandThird-partyscriptsTailwind andhtml2canvas,from two CDNsYour browser: wall.js and mediawall.phplazy tiles; shuffled-bag slideshow; per-folder passwordsThe wallgrid, viewer, canvas slideshownamesoriginalslistingthumbnailspage code
Figure 10Mediawall, drawn. Unlike the other nine tools, the work here is done on the site's own server; to fill the grid, the browser asks for a list and for thumbnails, never the originals.

3The test

We loaded the public view, the list it reads, the companion wall and the thumbnail maker from the local 537 copy. We did not contact the live site.

  1. Loaded the public view, ?public=1.

    HTTP 200, 278,571 bytes of HTML in 0.004 s; title 'MEDIA WALL'; robots 'noindex, follow'; scripts from cdn.tailwindcss.com and cdnjs (html2canvas 1.4.1). Visible text: '0 FILES' and 'NO MEDIA YET', beside SIGN IN, SLIDESHOW, REGEN, REFRESH and LOCAL controls.

  2. Called media-list.php.

    HTTP 200, 83 bytes: ok, not public, no folders, no items. The build tree ships media/ with only an empty thumbnails folder; the photo archive is not part of the code.

  3. Loaded the companion wall, and called media-thumb.php naming no file.

    Wall HTTP 200, 56,585 bytes; thumbnail maker HTTP 400, 12 bytes.

4Against the field

Each rival was read on its own pages on the test day. Pencil marks what it does better; red, where Mediawall goes further.

PhotoPrism

photoprism.app · checked 27 September 2026, 20:22 UTC

An AI-powered, privacy-first app for browsing, organising and sharing photos and videos, self-hosted on Docker, a Raspberry Pi or a NAS, with a free open-source edition and paid memberships.

In pencil

  • Search by content, faces and places, with automatic classification.
  • A full library manager, with world maps and video and Live Photo support.

In red

  • It runs as PHP files on ordinary shared hosting, with no Docker and no database server.mediawall.php 3–8
  • It is built to be a display: an edge-to-edge wall and a canvas slideshow with transitions, random without repeats.mediawall.php 6309–6340; wall.js 34–36

Immich

immich.app · checked 27 September 2026, 20:23 UTC, from its documentation (the home page gave our fetch only navigation)

Open-source, AGPL v3, self-hosted photo and video management with web and mobile apps, phone backup, external libraries and a command-line bulk uploader.

In pencil

  • Automatic backup from phones, with web and mobile apps.
  • It manages existing libraries and bulk uploads from the command line.

In red

  • Immich documents at least 6 GB of RAM and 2 CPU cores with Docker; Mediawall is PHP files on the site's existing host.mediawall.php 3–8
  • Each folder is a public wall or a separately passworded one, and the listing will not publish a private folder's names.media-list.php 20–40

5Where it falls short

  • We could not see the collection. The archive is not in the code tree, the local copy shows '0 FILES', and we did not fetch the live site.
  • Heavy, and leaning on third parties. 278,571 bytes of HTML before a single picture, plus scripts from cdn.tailwindcss.com and cdnjs.
  • Console clutter. The public view carries SIGN IN, REGEN, REFRESH and LOCAL controls on what is meant to be a display.
  • A wall, not a library. No search by content, faces or places, no albums, no phone backup; it shows a folder and does not organise one.
  • One very large file. 412 KB carries the console, the public view and the slideshow, and its own comments record past defects: a config collision that wiped the site's settings, a root listing that exposed private folder names.

6The verdict

Signed in ink · Mediawall

Mediawall gets a photo wall's hard parts right (thumbnails, per-folder privacy, a slideshow that does not repeat) on hosting anyone can rent; its public face is heavy and cluttered, and on our copy it had nothing to show.

In red ink
Thumbnails made on demand, a shuffled-bag slideshow, per-folder passwords, and no Docker.
In pencil
For search, faces, albums and phone backup: PhotoPrism or Immich.

Try Mediawall on labs.llc