A photo gallery link is a set of photographs published at one address, so anyone can open them without an account, an app, or an invitation that expires.
Photo sharing is a solved problem for people inside the same ecosystem and an annoying one for everybody else. A page removes the ecosystem.

This guide covers sizing images so the page stays fast, holding the layout while they load, offering originals alongside, and why a link that does not expire matters more than it sounds.
The account wall is the actual problem
The technology for sharing photos is fine. The friction is social.
| Cloud album | Transfer service | A page | |
|---|---|---|---|
| Recipient needs an account | Usually | No | No |
| Works on any device | If the app exists | Yes | Yes |
| Expires | No | Typically 7 days | No |
| Arrives as | An invitation | A zip download | Photographs |
| Still works in six months | Yes | No | Yes |
The zip is worth noting. A recipient who wanted to look at eight photographs on their phone and received a 400 MB archive has not been sent photographs. They have been sent homework.
Size for screens, keep the originals separate
This is the decision that determines whether the page is pleasant or painful.
A camera original is 6-24 MB and several thousand pixels wide. Displaying it at 800 px in a browser means downloading all of it to show a fraction. Forty of those is a page nobody waits for.
Resize to about 1600 px on the long edge for display. That is sharp on any screen including high-density ones, and usually lands between 200 and 400 KB.
<figure>
<a href="/photos/full/0142.jpg" download>
<img src="/photos/web/0142.webp" alt="Ceremony, the vows" width="1600" height="1067" loading="lazy" decoding="async">
</a>
<figcaption>The vows</figcaption>
</figure>
The link around the image gives anyone who needs the full file a route to it without slowing down the people who just want to look.
Width and height stop the page jumping
Without dimensions, the browser does not know how tall an image will be until it arrives. So it lays out the page, the photo lands, everything below jumps down, and it does that once per image.
With width and height set, the space is reserved first and the page holds still. The numbers do not have to match the displayed size; they establish the ratio. Background in keeping image aspect ratio.
Add the lazy loading attribute to everything below the first screen and the gallery opens instantly no matter how long it is.
A grid that works on a phone
Most galleries are viewed on a phone, in one column. Anything clever about the desktop layout has to degrade to that.
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 0.75rem;
}
.gallery img { width: 100%; height: auto; display: block; border-radius: 8px; }
One rule covers every width. The column count falls as the window narrows and reaches one on a phone without a single breakpoint. More on the pattern in CSS grid.

Captions are worth the effort
A gallery of uncaptioned images is a slideshow. A gallery with names, dates and places is a record.
Captions also serve as alt text when the images fail to load, and make the page findable by anyone searching their own name or an event. Write them as plain descriptions rather than titles.
No expiry is the quiet advantage
Transfer services delete after a week by design. That is correct for moving a file to one person once, and wrong for almost everything else.
People come back to photographs. A client returns to pick an image for print months later. A family member looks again at Christmas. A journalist writes a follow-up.
A page at an address you control is still there for all of them, and does not require anyone to ask you to resend it.
Put it at an address
Resize the images for screens, write the gallery as a page, paste it into a document, and create a share link.
The person you send it to taps once and sees photographs. No account, no app, no expiry, and the originals are one click away for anyone who needs them.