How to share a photo gallery as a link

Most photo sharing asks the recipient to sign in, install something, or accept an album invitation. A page asks for nothing and opens on whatever they are holding.

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.

A photo gallery in a browser. A grid of images with consistent spacing, captions underneath.
A photo gallery in a browser. A grid of images with consistent spacing, captions underneath.

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.

The same gallery on a phone. A single column of images with captions, loading as it scrolls.
The same gallery on a phone. A single column of images with captions, loading as it scrolls.

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.

Questions people ask

Why not use a cloud album?

Cloud albums work well when both people already use that service. They fail when the recipient does not: they hit a sign-in wall, or an invitation that expires, or a download that arrives as a zip. A page has no account step at all, which is the whole reason to prefer it for one-off sharing with clients, family or press.

How many photos can I put on one page?

The limit is patience, not capacity. Thirty screen-sized images load comfortably if they are sized properly and load lazily. Two hundred camera originals will not, no matter how the page is built. If you need hundreds, split by event or by day rather than making one page carry everything.

Can people download the originals?

Yes, if you want them to. Show a screen-sized version on the page and link each one to a full-resolution file. That keeps the gallery fast for browsing and still gives the printer or the designer what they need.

Does the link expire?

Not unless you make it expire, which is the main advantage over transfer services. Those exist to move a file once and delete it after a week. A gallery someone comes back to in six months should still be there, and with an address that you control, it is.

How do I stop the layout jumping while images load?

Set width and height on every image. The browser then reserves the correct space before the file arrives, so text below does not shift. Without those attributes, a gallery reflows several times while loading, which is the single most common thing that makes a photo page feel cheap.

Keep reading