Before you start
You need a Mac running macOS 11 (Big Sur) or newer, and a folder of finished JPEGs — the ones you would hand over. Gallery does not edit, cull or convert anything. It reads what you exported.
Two downloads, one for each kind of Mac. Click the Apple menu, then About This Mac, and read the Chip line: anything saying M1, M2, M3 or newer takes theApple silicon build; an Intel line takes the Intel one. Both are on the download section of the product page.
Open the .dmg, drag the app into Applications, launch it. The app is signed and notarized by Apple, so it opens like any other app — no right-click trick, no security override.
Trial mode and your licence
Until you activate a licence, the app runs in trial mode. Everything works end to end, including a real deploy to real hosting — but a gallery is capped at 25 photosand carries a small trial badge. It is the whole product, in miniature, so you can prove it works on your machine before paying.
When you buy, the licence key arrives by email. In the app, paste it into the licence field and press Activate. That is it — the cap and the badge disappear.
One key activates on three machines. Moving to a new Mac? Deactivate on the old one first and the slot comes back. There is no renewal, no expiry, and nothing that phones home to check on you afterwards.
Your first gallery in five minutes
- Press Choose folder and pick the folder of finished JPEGs.
- Type a Gallery title. This is what the client sees at the top of the page.
- Leave every other setting alone for now — the defaults are sensible.
- Press Build gallery. The app resizes and packs everything locally; a few hundred photos take a couple of minutes.
- Press Open preview to look at the finished gallery in your browser, exactly as the client will see it.
Nothing has left your Mac at this point. Publishing is a separate, deliberate button.
Every setting, explained
Gallery title
The headline on the gallery, and the subject line in the ready-made client email. “Emma & Noah — September” beats “Final export 3”.
Link name
The web address the gallery gets: type emma-and-noah and it lands atemma-and-noah.pages.dev. Lowercase letters, numbers and hyphens. Pick something you would be happy to see in a client's browser bar — you cannot rename it later without publishing a new gallery. It is also the name of the Cloudflare project, which matters if you later put your own domain in front of it.
Password
Optional, and worth understanding properly. When you set one, the gallery's contents are encrypted and the photo addresses only exist inside that encrypted list, so search engines and passers-by see nothing but a lock screen. What it is not: a vault. Anyone your client forwards the password to can open the gallery. Treat it as a lock on a garden gate.
Accent colour, contact, your logo
These make the gallery look like yours instead of ours. The accent colour drives buttons and highlights. The logo sits at the top. Contact takes either an email address or a link — and if you put an email address there, clients get aSend to photographer button that opens a pre-written message with their picks already in it.
Client downloads
Three options. Full resolution hands over the files as delivered.Web size caps downloads at 2048px — good for proofing, useless for printing, which is sometimes exactly what you want. Off means viewing only. Clients can download one photo or zip their whole selection; the zip is built in their browser, so a big download costs you nothing.
Gallery language
What the client sees: English, Spanish, German, French, Portuguese or Hebrew. Hebrew galleries lay out right-to-left properly. The app's own interface stays in English.
Gallery look
Three finishes. Classic is clean and bright, the safe default.Editorial is warm paper and serif type, good for weddings and portraits.Noir is a dark room that makes colour work punch. Switch and rebuild to compare — it costs one build.
Favorites and the selection limit
Leave Favorites / proofing on and clients can star photos. Set aSelection limit and the gallery counts for them — “12 of 30 selected” — so “pick thirty” actually means thirty. Leave it empty for unlimited.
Watermark
Stamps your logo across the grid and lightbox images. Downloads stay clean. Useful for proofing sets that go out before an invoice is paid.
Keep EXIF
Off by default, and that default is doing you a favour: delivered photos get a lossless metadata strip, so a wedding at a private house does not ship its GPS coordinates to everyone with the link. Turn it on only when you actually want camera data published — and know that it includes location if your camera recorded it.
Connecting Cloudflare, once
Galleries are hosted on your own free Cloudflare Pages account, not on a Shutterbench server. That is the reason there is no monthly bill: nothing of yours lives on anything of ours.
- Press Put it online. If you have not connected yet, the app asks for a token.
- Click the link the app gives you. It opens Cloudflare with a token template already filled in — the permissions are pre-selected, so there are no dropdowns to guess at.
- Create the token, copy it, paste it into the app, press Connect.
The token is stored encrypted on your Mac, in your account's keychain-backed storage. It can create and update Pages projects and read your account name. It cannot touch your domains, your DNS, or your email. Disconnect / change token removes it whenever you like.
If you do not have a Cloudflare account yet, make one first — it is free, and the free tier covers client galleries comfortably.
Putting it online and sending the link
With a token connected, Put it online uploads the built gallery and hands you the finished address. First deploy of a new gallery takes a minute or two; later ones are faster because only changed files go up.
Then press Copy email to client. You get a complete message — subject line, gallery address, password if you set one — ready to paste into your mail client. Read it, add your own sign-off, send.
Putting it on your own domain
A gallery lands on emma-and-noah.pages.dev. If your domain is already on Cloudflare, the app puts the gallery on your own address for you — you type it, and it does both halves of the job.
Publish the gallery first; the project has to exist before anything can point at it. Then, on the screen that hands you the link, press Use your own domain, type the address your clients should see — emma.galleries.yourstudio.com — and pressAdd domain. A minute or two later the gallery answers there, with its HTTPS certificate issued automatically. The .pages.dev link keeps working alongside it, so anything you already sent stays alive.
From then on the app hands out your address, not the .pages.dev one —Copy link, the ready-made client email and the QR code all use it. Rebuilding and pressing Put it online again updates the same gallery and your domain stays put.Remove domain, on that same screen, takes it back off and deletes the DNS record the app created.
Three things to know before you start. It has to be a subdomain —galleries.yourstudio.com, not yourstudio.com itself.It is one address per gallery, because every gallery is its own project:emma.galleries.yourstudio.com, then dan.galleries.yourstudio.com. And the domain has to be on Cloudflare, in the same account you connected.If the address you type already points somewhere, the app refuses it rather than overwriting it.
The first time you use this, the app may tell you the connection can't manage DNS yet. That is expected, not a fault: the token you created to publish galleries deliberately cannot touch your DNS, so if you never use a custom domain, the app never has that access at all. It shows you a link to create one that can — on that page set Zone Resources to Specific zone and pick your domain — then disconnect Cloudflare and paste the new token. Three reassurances, because the disconnect step feels bigger than it is: the new token replaces the old one and covers everything it did, galleries you already published are untouched (they belong to your account, not the token), and this is a one-time errand — one token serves every gallery you ever make. Copy the token when Cloudflare shows it; it is shown once. The old token is dead weight afterwards — delete it on the same API Tokens page whenever you like.
The domain you picked as the Specific zone is the only one the app can now write to — galleries can live at emma.yourstudio.com but not at a second domain you also own. Want another later? Edit the same token on Cloudflare's API Tokens page and add the second domain under Zone Resources: the token itself does not change, so there is nothing to re-paste in the app.
If your DNS is not at Cloudflare, the app can't do it for you, but you can still do it by hand: in the Cloudflare dashboard open Workers & Pages, click the project named after your link name, open Custom domains and press Set up a custom domain. Cloudflare shows you the one CNAME record to add at your provider, pointing back at the gallery's .pages.dev address. Done that way the app doesn't know about it, so Copy link still gives you the .pages.devaddress — paste your own over it before you send.
The built folder — hosting it yourself
Every build produces a complete, ordinary website: resized copies of your photos, thumbnails, the pages, your colours and logo — all sitting in one folder on your Mac.Show the built folder opens it in Finder. That folder is the gallery;Put it online just uploads it. This is what owning your work means here — the finished thing is files on your disk, not entries in someone else's database.
The practical use: host it anywhere. Any hosting that serves plain files — the server your studio site already lives on, shared hosting, anything — can serve a gallery: upload the folder's contents and it works. The app is not involved after that, so Copy link and the client email still point at the Cloudflare address; write your own. It is also the folder to archive if you want a copy of the delivered gallery exactly as the client saw it.
One thing the folder is not: double-clickable. Browsers put heavy restrictions on pages opened straight from disk, so index.html opened from the folder shows a polite note asking to be opened at its web address — password or no password. That is browser policy, not a fault. To see a gallery on your own Mac, use the app'sOpen preview; to prove the folder itself works, any tiny local server will serve it — python3 -m http.server in that folder, thenhttp://localhost:8000.
When the favorites come back
Your client stars what they want and presses Copy filenames, orSend to photographer if you filled in a contact email. Either way you end up with a plain list of filenames — one per line, exactly as they are named in your folder.
In Lightroom Classic, paste that list into the Library filter's text search to pull up precisely those frames. No plugin, no import, no service in the middle holding your client's choices hostage.
Updating a gallery you already sent
Add or replace photos in the same folder, open the app, choose that folder again and build. Your settings come back automatically — the app leaves a small settings file inside the folder, so they survive reinstalls and follow the job if you move it to another drive.
Press Put it online again and the same address updates in place. The link you already emailed keeps working; the client sees the new set. No second link, no “version 2 final” confusion.
Deleting a gallery
Press Manage published galleries to see everything you have online, with the date it last went up. Delete removes the whole gallery from your Cloudflare account — the link dies immediately and the photos are gone from the internet.
It does not touch your originals. Your folder on your Mac is never modified by anything Gallery does, deletions included.
If you put the gallery on your own domain from inside the app, you don't have to do anything first — Delete takes the domain off the gallery and removes the DNS record it created, in the same step. A domain you attached by hand in the Cloudflare dashboard is left alone: the app only ever deletes records it made itself, and tells you afterwards if one of yours is still there.
When something goes wrong
“The app won't open”
Check you took the right build. An Intel download on an Apple silicon Mac (or the reverse) is the usual cause. Delete it, grab the other one from thedownload section.
The build stopped partway
Almost always one unreadable file in the folder — a truncated export, or a file that is not really a JPEG. The message names it. Remove or re-export that one and build again; the work already done is kept, so the rebuild is quick.
Publishing failed
The app translates Cloudflare's errors into plain sentences, so read the message first. The two common ones: the token expired or was deleted at Cloudflare's end — pressDisconnect / change token and make a new one; or the link name is already taken by another project in your account — pick a different one.
The client says the photos are old
They are looking at a cached page. A refresh fixes it. If you rebuilt but did not pressPut it online afterwards, the new photos never left your Mac — build and publish are two separate steps on purpose.
“Only 25 photos came out”
That is trial mode. Activate your licence and build again — nothing else changes.
“This gallery can't open from a folder on disk”
You double-clicked index.html inside the built folder. Galleries only run at a web address — browsers restrict pages opened straight from disk — so the page says so plainly instead of half-working. Use the app's Open preview to see it locally, or read the built folder section.
I lost the password I set
Passwords are not recoverable by design; nothing about the gallery is stored anywhere we can read. Set a new one in the app, build, publish, and send the client the new password.
Still stuck?
Use the feedback form — it stamps your version number automatically, which is half of any support answer — or write to[email protected]. A real person reads both.