Most “SEO for photographers” advice is generic SEO advice with the word “photographer” sprinkled in. This isn’t that. Photography sites are the single most image-heavy category on the web — your site is 80–90% images by weight, and almost all of your discoverability lives in how Google reads those images. The playbook below treats your portfolio like the indexable asset it is.
It works whether you’re on Squarespace, Showit, WordPress, Pixieset, or a custom site. We’ll flag platform-specific differences as they come up.
A typical text-heavy blog has 5–10 images on a 2,000-word article. A photography portfolio has 5,000 images and almost no body copy. The standard SEO playbook collapses for photographers because:
This means your priority order is different. Where a regular site might focus 70% on content, 20% on technical SEO, 10% on images, photographers should be roughly inverse: 60% on image SEO, 25% on local SEO, 15% on supporting content.
| Priority | Effort | Lift | Time to results |
|---|---|---|---|
| 1. Alt text on every portfolio image | High (volume) | Critical | 30–60 days |
| 2. Descriptive filenames before upload | Low (workflow change) | High | 30 days for new uploads |
| 3. Compress + convert to WebP | Medium (one bulk pass) | High (Core Web Vitals) | 1–2 weeks |
| 4. Local SEO + Google Business Profile | Medium | Critical for client work | 30–90 days |
| 5. Image XML sitemap submitted | Low | Critical for indexing | 14 days |
| 6. IPTC copyright on every image | Low (template) | Medium (Google Images credit) | 30 days |
| 7. Blog content for long-tail queries | High (writing) | High (compounds over time) | 3–6 months |
| 8. ImageObject + LocalBusiness schema | Low (one-time) | Medium (rich results) | 14 days |
Alt text is the single most important ranking signal for photographer websites. Google reads it as the primary description of what’s in the image. Most photographers either skip it entirely or paste their business name into every alt field — both are wrong.
The alt text formula that works for photography:
[subject + style] + [location/setting] + [your specialty]
| Photo type | Bad alt text | Good alt text |
|---|---|---|
| Bride at altar | “wedding” | “Bride exchanging vows at outdoor ceremony, Hudson Valley wedding photography” |
| Newborn portrait | “baby” | “Newborn baby in wrapped pose on neutral backdrop, in-home Seattle newborn session” |
| Engagement shoot | “couple” | “Engaged couple holding hands in golden hour light, Austin engagement photography session” |
| Architecture/real estate | “living room” | “Modern open-plan living room with floor-to-ceiling windows, Brooklyn brownstone listing photography” |
| Brand/commercial | “product shot” | “Hand pouring coffee into ceramic mug, lifestyle brand photography for Portland coffee roaster” |
| Family session | “family” | “Family of four laughing in autumn park, lifestyle family photography Denver” |
Notice the pattern: every “good” alt text contains the subject, the style/setting, and a location-aware specialty descriptor. That triples your ranking chances — generic image search (“bride at altar”), style search (“Hudson Valley wedding photography”), and local intent (“Hudson Valley wedding”).
Length: 80–125 characters is the sweet spot. Long enough to include all three components, short enough that screen readers don’t drone.
The reality for photographers: doing this manually for a 5,000-image portfolio is impractical — you’d spend weeks. Tools like ImageSEO read the visual content of each image and generate location-aware, style-aware alt text automatically. For a typical photography site, the entire library can be done in under an hour.
Camera output is the worst possible filename for SEO. IMG_4827.JPG, DSC_0234.NEF, P1010012.RAW — these tell Google nothing. Worse, when Lightroom or Capture One exports for web, most photographers don’t change the filename, so 5,000 images on the live site all have camera-generated names.
The Lightroom export workflow that fixes this for new shoots:
session-keyword-location e.g. jenny-tom-wedding-hudson-valley.jenny-tom-wedding-hudson-valley-001.jpg through -148.jpg.For the existing portfolio: don’t rename images that are already live (it breaks any external links and Pinterest pins). Instead, focus the renaming workflow on all new uploads. The historical images get fixed via alt text, which is more important anyway.
Photographers face a unique tension: you care deeply about image quality, but Google penalises slow pages. The truth is that visitors can’t tell the difference between a 4MB original and a properly compressed 200KB version on screen. The aggressive compression numbers below preserve perceptual quality while massively improving page speed.
| Use case | Format | Target file size | Quality setting |
|---|---|---|---|
| Hero image / homepage banner | WebP | < 100KB | 80% quality, 1920px wide |
| Portfolio gallery thumbnail | WebP | < 50KB | 75% quality, 800px wide |
| Portfolio gallery full-screen | WebP | < 200KB | 82% quality, 2000px wide |
| Blog post body image | WebP | < 150KB | 80% quality, 1200px wide |
| Print/download client gallery | JPEG (high quality) | < 5MB | 95% quality, full resolution |
Tools by platform:
If you photograph clients (weddings, families, brands, real estate), your most valuable searches are location-qualified — “wedding photographer near me,” “newborn photographer Boston,” “real estate photographer Atlanta.” These queries convert at 5–10× the rate of generic photography queries. Three things drive ranking on local photographer searches:
Non-negotiable for any photographer working with local clients. Setup essentials:
One page per primary service area, each with a unique URL: yoursite.com/locations/austin-wedding-photographer. These pages should:
areaServed.Every wedding or major shoot is a blog post opportunity. Title format: [Couple's first names] | [Venue] [City] Wedding Photography. This is the highest-converting content type for wedding photographers — it ranks for venue+city searches that brides actively run during venue research.
Your photos can only rank if Google indexes them. The XML image sitemap explicitly tells Google every image URL on your site. Without it, Google has to discover images through page crawling — slow and incomplete for image-heavy sites.
sitemap_index.xml.yoursite.com/sitemap.xml to Search Console.After submission, check Search Console → Coverage within 14 days. The “Discovered” image count should rise toward your total library size. If it doesn’t, Google can’t crawl your images — common causes are restrictive robots.txt, hotlink protection, or CDN configuration.
Photographers care about image theft, and Google has built explicit support for crediting photographers in image search results. The IPTC Copyright field travels embedded inside the image file. When Google indexes your image, it can display “© Your Name” with a link back to your domain in image search results.
Setting this is a one-time configuration in your editing software:
exiftool -IPTC:Copyright="© 2026 Your Name" -IPTC:By-line="Your Name" *.jpgThis also helps with stolen-image enforcement: a clearly-credited image makes DMCA takedowns much faster, and it’s the standard piece of evidence sites like Pixsy and Copytrack use to recover damages on photo theft.
Your portfolio captures image-search traffic. Blog content captures research-stage queries — what couples and clients search before they book. The highest-converting blog topics for photographers:
| Photographer specialty | Blog topic that converts | Why it works |
|---|---|---|
| Wedding photographers | “Best [city] wedding venues” (with photos from real shoots) | Brides search venues during the same week they search photographers |
| Newborn photographers | “What to wear for newborn photos” / “Newborn session prep guide” | Direct booking-stage research — captures parents who’ve already decided to book |
| Real estate photographers | “How professional real estate photos sell faster” (case study format) | Targets agents who haven’t yet hired a photographer, with proof of ROI |
| Family photographers | “Best places for family photos in [city]” | Captures location-research traffic, demonstrates local expertise |
| Commercial photographers | “How to brief a commercial photographer” / portfolio case studies | Marketing managers research before sending RFPs |
| Engagement photographers | “Engagement photo outfit guide” / “Engagement shoot location ideas” | Couples search this 1–2 weeks before booking |
One blog post per month is sustainable. Three posts per month compounds dramatically over 12–18 months — that’s the timeline where photographers transition from “rely on Instagram and referrals” to “Google Search drives 40%+ of bookings.”
Three schema types matter for photographers, in priority order:
RankMath (WordPress) and Showit (built-in SEO) handle most schema generation automatically — verify with Google’s Rich Results Test that the markup is valid. Squarespace generates basic schema; LocalBusiness needs to be added manually via the code injection feature.
| Mistake | What it costs | Fix |
|---|---|---|
| Putting your business name in every alt text | Zero ranking signal — Google reads it as boilerplate | Describe what’s in the image, with location and style |
| Uploading 5MB JPEG portfolio images | Catastrophic Core Web Vitals scores | Compress to under 200KB, convert to WebP |
| Hiding portfolio behind login / lightbox | Google can’t crawl images = can’t rank them | Public portfolio with proper image sitemap |
| Using camera filenames (IMG_xxxx.jpg) | No filename ranking signal across thousands of images | Set Lightroom/Capture One export preset for descriptive filenames |
| Skipping Google Business Profile | Invisible in local pack and Maps results | Set up GBP with category, service area, photos, reviews |
| One generic “Locations Served” list page | Doesn’t rank for any specific city | One unique location page per service city |
| No image sitemap | Google may never index 70%+ of your images | Enable in your platform’s SEO settings |
| Stock images for “About” or service pages | Diluted brand uniqueness signal | Use your own work everywhere — you’re a photographer |
| Pinterest pins linked to home page | Wastes the highest-converting traffic source for photographers | Link every pin to the relevant blog post or portfolio gallery |
The metrics photographers should actually track, in order of usefulness:
Image SEO improvements (alt text, compression, sitemap) show in Search Console within 30–60 days. Local SEO (Google Business Profile, location pages) takes 60–90 days to mature. Blog content that ranks for booking-stage queries takes 3–6 months. The compounding effect — where Google trusts your site enough to rank you across dozens of related queries — usually appears at the 9–12 month mark of consistent work.
For pure SEO control: WordPress wins by a meaningful margin — full plugin ecosystem, fine-grained schema control, complete site speed customisation. For ease of use with strong-enough SEO: Showit (designed for photographers, image-aware SEO baked in). Squarespace is fine for portfolio-only sites but limits advanced control. Pixieset is great for client galleries but should not be your primary public site — it doesn’t give you enough SEO control.
Yes — for photographers more than almost any other category. Couples and clients search Google Images directly during venue research, style discovery, and inspiration phases. Image search clicks for photographers convert at higher rates than typical informational image clicks because the user is in a deliberate visual-search mindset. Many wedding photographers report 30–40% of inquiries originate from Google Images impressions.
Quality over quantity, but with a real floor. A photography site with under 50 images has a hard time ranking. 200–500 well-optimised images is the sweet spot — enough breadth for Google to understand your specialty, not so many that Core Web Vitals collapse. Above 1,000 images, image SEO becomes a serious infrastructure project — you need bulk alt text generation and aggressive compression to avoid hurting site speed.
Lazy-loaded images do get indexed by Google as long as they’re in the rendered HTML. Images hidden behind JavaScript-only galleries (where the URL is generated on click) often don’t get crawled. Test by viewing your page source: if the image URL appears in the raw HTML, Google will find it. If it only appears after JavaScript runs, Google may miss it. The safest setup: lazy-load with native HTML loading="lazy", not custom JavaScript.
Pinterest is its own discovery engine, not technically Google SEO, but the photo SEO discipline overlaps heavily. The same image-tagging discipline that helps Google ranking also helps Pinterest performance. Pinterest is the highest-converting referral source for many wedding, family, and lifestyle photographers — the user is in pure inspiration mode and ready to save and share. Treat it as a parallel channel, not a substitute for Google.