Case studiesPhotography
Michael Wilkins Photography
A fine-art photography portfolio and print shop, built from scratch: 268 photographs, each on its own page with its own structured data, a scroll film into the camera on the homepage, and 98 on mobile and 100 on desktop in Google PageSpeed Insights.
Outcome
Mobile performance in Google PageSpeed Insights
Client
Industry
Region
Services touched
- Web
- Search
- Content
01The challenge
Photography sites are heavy by nature. This one still had to be fast, and findable.
Michael Wilkins Photography is our founder's own fine-art practice: wildlife, cityscapes, landscapes, aerial, dogs, action sports and astrophotography, shot on a Canon EOS-1D X Mark II and sold as prints, for licensing and, from London, as commissions in the UK and Europe.
A photography site is one of the hardest to make fast, because the product is the image and every page is heavy by nature. A template gallery usually trades one for the other: full-quality photographs that load slowly, or quick pages that flatten the work. It also gives search engines little to read, since a grid of images with no titles, captions or alt text is invisible to the searches that sell prints. The site is our own, so the brief was ours to set, and we set it where we would set a client's: full-quality photographs, fast on a phone, and every photograph findable on its own.

02The approach
One publishing loop: every photograph in two formats, four sizes and on its own page.
The site is written from scratch in Next.js, with no gallery plugin and no theme, around a single publishing loop. A photograph goes in once. A build step makes AVIF and WebP copies at up to four widths, from 480 to 2,048 pixels, so a phone downloads a size it can actually show, and the photograph gets its own page with its title, place, camera settings and the story behind it. There are 268 of them across seven genres, with seven curated series, 2,080 image files in all, and the print shop sits on the same records.
The build refuses bad content. A photograph without alt text, or without its image files, fails the build on purpose, and one too small to print well can never be sold as a print. Titles and descriptions are written by rules that are themselves tested: a photograph's title adds the place, a print's title leads with the subject a buyer searches for, the description is the alt text rather than a one-line caption, and nothing is ever cut off mid-word. The site carries 67 automated tests in all.
The homepage opens on a film that walks into the camera, through the lens, the aperture and the mirror box, and out into the work, drawn frame by frame as the visitor scrolls: 127 frames, fetched as the visitor approaches them rather than all at once. Under reduced motion the film still follows the visitor's scroll, but its zoom, its drifting text and any autoplay are switched off.

03The result
Structured for search, photograph by photograph. 98 on mobile.
Every one of the 311 pages in the sitemap has its own title and description, a canonical address and a single H1. Structured data is written only for what the site actually holds, so there are no invented ratings and no address it doesn't have: ImageObject on all 268 photograph pages, Product on the 15 prints, CollectionPage on the galleries, the series and the print shop, BreadcrumbList on 300 pages, and the photographer and the site described on every one. An llms.txt file describes the site for AI assistants, and the robots file admits every crawler.
The print shop shows prices in the visitor's own currency, set by hand for each market rather than converted on the fly, and shows each print to scale on a wall before anyone chooses a size.
The site is too new to judge on rankings. What can be measured now is how it performs, and a site made of full-quality photographs scores 98 for Performance on mobile and 100 on desktop in Google PageSpeed Insights, medians of five runs, with 100 for Accessibility, Best Practices and SEO in every run and both applicable Agentic Browsing checks passed. Its performance budgets are written into the project itself (2.5 seconds for the largest paint, 300 milliseconds of blocking time, 400 KB of images on a page), with a Lighthouse CI check to hold it to them.
Performance on mobile in Google PageSpeed Insights, on a site made of full-quality photographs
Photographs published
268Image files the build makes
2,080Performance · desktop
100Accessibility
100Best practices
100SEO
100Agentic browsing checks
2/2Google PageSpeed Insights, Lighthouse 13.5.0, homepage, 27 September 2026: the median of five runs on each device (mobile runs 88–98; desktop 100 in all five). Accessibility, Best Practices and SEO scored 100 in all ten runs. Agentic Browsing is a new Lighthouse category, still under development; four of its checks did not apply to this site.
The deeper outcomes
Behind the headline metric.
- Performance of 98 on mobile and 100 on desktop in Google PageSpeed Insights, medians of five runs
- 100 for Accessibility, Best Practices and SEO on mobile and desktop in every run
- 268 photographs, each on its own page with ImageObject structured data
- AVIF and WebP at up to four widths for every photograph: 2,080 image files, so a phone loads only what it can show
- A build that fails on missing alt text, with titles and descriptions written by tested rules
- A print shop that prices in the visitor's own currency and shows every print to scale
- Built from scratch in Next.js, with 67 automated tests: no theme, no gallery plugin
In the work









What's next
The site is too new to judge on rankings, and a photography catalogue earns its search traffic one photograph at a time. The next measurement is Search Console across the 268 photograph pages and 15 prints, to see which subjects people search for and which they buy. The publishing loop is built for that: a new photograph is one entry and its story, not a page build.
Related
Other engagements that ship the same kind of outcome.
Start
Want this kind of outcome for your business?
The strategist below picks up the same lens we used for Michael Wilkins Photography. Tell them what you're trying to grow. By the end of the conversation you'll have a plan, a quote, and a senior strategist on the line.
