SEO for Photographers: What Actually Moves Bookings
Most SEO advice written for photographers stops at "add alt text and blog more". That advice is not wrong, it is just thin. It leaves out the parts where a photography website actually loses: gallery pages carrying forty full resolution images, a Google Business Profile that is never touched, image files named DSC_4471.jpg, and location pages that Google classifies as doorway abuse.
This article covers the technical work. Every claim about how Google behaves is quoted from Google's own documentation, with the source named, so you can check it rather than trust it. Where something cannot be verified, it says so.
One thing up front, in Google's words, from its own page on hiring an SEO: "No one can guarantee a #1 ranking on Google." Nothing here promises a position or a timeline. It describes work that is measurable, which is a different claim.
What a photographer's search demand actually looks like
Your search demand is two separate markets and they behave nothing alike.
The first is local and transactional. Someone types "wedding photographer austin" or "newborn photographer near me", and the results are dominated by the map pack and a handful of local sites. Distance is a ranking input here, which means a studio three miles away has an advantage you cannot write your way past.
The second is informational and national. "What to wear for family photos", "how long do wedding photos take", "engagement session locations in [city]". Nobody is booking on that page today, but they are choosing a photographer within weeks, and that content is what a search assistant reads when someone later asks it for a recommendation.
Real numbers, measured with Ahrefs for the United States in August 2026: seo for photographers gets 1,339 searches a month at a difficulty of 7, and local seo for photographers gets 364 at difficulty 0. Those are the queries other photographers search. The queries your clients search are the occasion plus the place, and they are far more numerous and far smaller individually.
Both markets matter, and they need different pages. Confusing them is the most common structural mistake on photography sites: a single "Portfolio" page expected to rank for a city, an occasion, and a style all at once. The same logic applies to any small business, and we walk through the general version of it in our guide to picking keywords by audience.
Google Business Profile is a separate index, and you probably qualify
If you travel to clients and have no storefront, you can still have a profile. Google's own eligibility guidelines state it plainly: "If your business either has a physical location that customers can visit, or travels to customers where they are, you can create a Business Profile on Google."
That covers nearly every working photographer. The guideline that trips people up is the address. Google's documentation is direct about it: "If you're a service-area business, you should hide your business address from customers." Running the business from your apartment is fine. Publishing your apartment address is what causes problems, and hiding it is the documented behaviour, not a workaround.
Google names exactly three local ranking factors, and it is worth knowing them verbatim because most advice invents a fourth:
| Factor | Google's definition |
|---|---|
| Relevance | "how well a Business Profile matches what someone is searching for" |
| Distance | "how far each business is from the customer who's searching" |
| Prominence | "how well-known a business is. Prominent places are more likely to show up in search results" |
Two of those three are outside your control on any given search. Distance is fixed by geography. Prominence is built over years. Relevance is the one you can work on this afternoon, by categorising the profile correctly, describing services in the words clients use, and keeping hours and contact details accurate.
Google also states, on the same page: "There's no way to request or pay for a better local ranking on Google." Anyone selling you a map pack position is selling you something Google says does not exist.
Your images are files, and Google reads them as files
This is where photography sites differ from every other kind of site, and where the generic advice runs out.
Google's image documentation is specific about filenames: "use filenames that are short, but descriptive. For example, my-new-black-kitten.jpg is better than IMG00023.JPG." Your export presets almost certainly produce the second kind. Renaming on export costs nothing and is the single cheapest change available to a photographer.
On alt text, Google asks you to "focus on creating useful, information-rich content that uses keywords appropriately and is in context of the content of the page". Note what that does not say. It does not say to stuff the city name into every image. Alt text describing the actual photograph is what the guidance asks for.
Two more rules from that page are routinely broken by gallery plugins:
- Keep image URLs stable. Google asks that you "consistently reference the image with the same URL, so that Google can cache and reuse the image." A gallery that regenerates image URLs on every deploy throws away whatever image ranking it had.
- Always give a fallback. For responsive images, "We recommend that you always specify a fallback URL using the
srcattribute."
Supported formats, quoted: "Google Search supports images referenced in the src attribute of img in the following file formats: BMP, GIF, JPEG, PNG, WebP, SVG, and AVIF."
Ship an image sitemap
Most site builders generate a page sitemap and stop there. Images get their own sitemap extension, and for a portfolio site that is a meaningful amount of content Google may otherwise discover slowly.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/weddings/marfa-elopement</loc>
<image:image>
<image:loc>https://example.com/img/marfa-elopement-ceremony.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://example.com/img/marfa-elopement-portraits.jpg</image:loc>
</image:image>
</url>
</urlset>
The namespace URL above is exact and Google's documentation states that "Each <url> tag can contain up to 1,000 <image:image> tags." Note that image:caption, image:title, image:geo_location and image:license were removed from the current documentation, so a tutorial that tells you to add them is out of date. If you build on Next.js, the sitemap route in our Next.js SEO article shows the shape this file takes in code.
Claim your images with licence metadata
This one is specific to people who own the copyright on what they publish, which is you. Google Images can surface licensing information, and its documentation describes the outcome: "Google Images can show more details about the image, such as who the creator is, how people can use an image, and credit information."
To be eligible you need contentUrl plus at least one of creator, creditText, copyrightNotice or license. For the Licensable badge specifically, the documentation is unambiguous: "If you're using structured data to specify an image, you must include the license property for your image to be eligible to be shown with the Licensable badge."
{
"@context": "https://schema.org/",
"@type": "ImageObject",
"contentUrl": "https://example.com/img/marfa-elopement-ceremony.jpg",
"creator": { "@type": "Person", "name": "Your Name" },
"creditText": "Your Studio",
"copyrightNotice": "Your Name",
"license": "https://example.com/licensing",
"acquireLicensePage": "https://example.com/licensing"
}
Google also reads IPTC photo metadata embedded in the file itself, including Creator, Credit Line, Copyright Notice and Web Statement of Rights. Lightroom writes those fields at export if you fill in a metadata preset once. That is a five minute setup that then applies to every photograph you will ever deliver.
Gallery pages are the slowest pages on the web
A blog post is text. A photography gallery is thirty to sixty large images, and it is competing on the same speed metrics as everyone else.
The current Core Web Vitals thresholds, from web.dev, are Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint at 200 milliseconds or less, and Cumulative Layout Shift at 0.1 or less. They are assessed at the 75th percentile of page loads, across mobile and desktop, which means your fastest visits do not rescue your slowest ones. Interaction to Next Paint replaced First Input Delay and became a stable Core Web Vital in 2024, so any guide still discussing FID predates that change.
For a gallery, three things carry almost all of the improvement:
<!-- The hero image: eagerly loaded, high priority, explicit dimensions -->
<img
src="/img/marfa-elopement-ceremony-1600.jpg"
srcset="/img/marfa-elopement-ceremony-800.jpg 800w,
/img/marfa-elopement-ceremony-1600.jpg 1600w,
/img/marfa-elopement-ceremony-2400.jpg 2400w"
sizes="(max-width: 720px) 100vw, 1200px"
width="1600" height="1067"
fetchpriority="high" decoding="async"
alt="Couple exchanging vows at sunset on a ridge outside Marfa">
<!-- Everything below the fold: lazy, same explicit dimensions -->
<img src="/img/marfa-elopement-portraits-1600.jpg"
width="1600" height="1067" loading="lazy" decoding="async"
alt="Bride and groom walking through desert grass at dusk">
The width and height attributes are what stop layout shift, and they are the most commonly omitted attributes on photography sites. Without them the browser does not know how much space to reserve, and the page jumps as each image arrives.
The other lever is upstream of all of this: stop shipping 4000 pixel wide files to phones. A 2400 pixel wide export at quality 80 is visually indistinguishable from a full resolution export on any screen a client will use, and it is often a quarter of the bytes.
Location pages: where a real page ends and doorway abuse begins
Every photographer is eventually told to build a page per city. Sometimes that is correct. Often it produces exactly what Google's spam policies name.
Here is the definition, verbatim: "Doorway abuse is when sites or pages are created to rank for specific, similar search queries. They lead users to intermediate pages that are not as useful as the final destination." Google lists as an example "having multiple domain names or pages targeted at specific regions or cities that funnel users to one page".
Twelve city pages with the city name swapped and nothing else changed is that example, precisely. The distinction is not the existence of the page, it is whether the page contains something that only applies to that place.
A location page that survives the test contains work you actually did there: real galleries from real sessions in that city, venues you have shot at by name, permit rules and golden hour timings that differ locally, travel and coverage terms specific to that area. If you have never worked in a city, you do not have a page for it yet. That is a booking problem, not an SEO problem, and no amount of markup fixes it.
The same rule governs the blog. Google defines scaled content abuse as "when many pages are generated for the primary purpose of manipulating search rankings and not helping users", and lists "using generative AI tools or other similar tools to generate many pages without adding value for users" among the examples. The policy is about value, not about tooling. We looked at what that distinction means in practice when comparing what SEO agencies actually deliver.
What to publish, in the order that pays
The location page above is one page. The blog is the part that runs for years, and photographers usually get its order wrong by starting with what is easiest to write instead of what is closest to a booking.
Sort candidate posts by how near the searcher is to hiring someone:
| Post type | Example query | Distance from booking |
|---|---|---|
| Venue guide | "photos at [venue name]" | Very close. They have booked the venue. |
| Occasion logistics | "how long do wedding photos take" | Close. They are planning the day. |
| Preparation advice | "what to wear for family photos" | Middle. They have a photographer or are choosing one. |
| Inspiration roundup | "fall engagement photo ideas" | Far. Wide reach, weak intent. |
| Gear and technique | "best 35mm lens for weddings" | Off target. Your peers, not your clients. |
Venue guides are the highest yield post a working photographer can write and the least written, because they require having shot there. That is also what makes them defensible: a competitor cannot produce the page without doing the work. One post per venue, with real frames from that venue, the light at different hours, where the ceremony spaces sit and what the venue's own rules are, answers a query with almost no competition and a client who has already committed money.
Gear posts are the opposite. They pull traffic from other photographers, who will never book you. That is the audience trap in this niche, and it is worth naming because the traffic graph looks identical either way.
One technical warning that belongs here. If your gallery or blog renders entirely through JavaScript, as several portfolio builders and lightbox plugins do, check that the content is actually in the served HTML before writing anything else. Search Console's Pages report will tell you whether those URLs are indexed at all. Writing thirty posts onto a template Google cannot read is the most expensive mistake available on this list.
Structured data for a photography business
Structured data will not rank you. It changes how you are displayed and how machines parse what you are.
Google's LocalBusiness documentation requires only address and name, and recommends telephone, url, geo, openingHoursSpecification and priceRange among others. The instruction people miss is about the type itself: "Use the most specific LocalBusiness sub-type possible; for example, Restaurant, DaySpa, HealthClub, and so on."
For a photography studio, schema.org provides PhotographyBusiness, which is a subtype of LocalBusiness. Use that rather than the generic parent.
{
"@context": "https://schema.org",
"@type": "PhotographyBusiness",
"name": "Your Studio",
"url": "https://example.com",
"telephone": "+1-512-555-0100",
"priceRange": "$$$",
"areaServed": { "@type": "City", "name": "Austin" },
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX",
"addressCountry": "US"
}
}
If you are a service-area business hiding your street address, keep addressLocality and addressRegion and omit streetAddress. The markup should describe what your Business Profile describes, not contradict it. The mechanics of emitting JSON-LD without breaking your pages are covered in the Next.js SEO article, including why JSON.stringify alone is not safe to inject.
Being recommended by an AI assistant
Clients increasingly ask an assistant for a shortlist before they ask Google. This is the newest part of the job and the part most polluted by people selling remedies for it.
Google published an AI optimization guide with a section titled "Mythbusting generative AI search: what you don't need to do". It states directly that "You don't need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search", that "There's no requirement to break your content into tiny pieces for AI to better understand it", that "You don't need to write in a specific way just for generative AI search", that "Seeking inauthentic 'mentions' across the web isn't as helpful as it might seem", and that "Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add".
That list rules out most of what is currently sold as AI SEO. The requirement that does exist is far more boring: "To be eligible to be shown in generative AI features on Google Search, a page must be indexed and eligible to be shown in Google Search with a snippet, fulfilling the Search technical requirements."
Assistants outside Google behave differently and have their own crawlers with their own robots.txt contracts, which we documented crawler by crawler in our article on LLM SEO. If your site blocks a retrieval bot, no amount of content changes the outcome, and photography sites behind aggressive bot protection hit this more often than most. The measurement method, running a fixed set of prompts on a schedule and counting which domains come back, is described in how to rank on ChatGPT.
Measuring it, so you can stop guessing
Everything above is checkable. Verify your work rather than assuming it landed.
- Search Console, Performance report. Filter queries by the occasion words and by city names separately. Impressions rising with a flat click rate usually means you rank for the right topic on the wrong page.
- Search Console, Pages report. Confirm gallery URLs are indexed at all. A gallery loaded entirely by JavaScript is a common reason they are not.
- PageSpeed Insights on a real gallery URL, not the homepage. The homepage has three images. The gallery has forty, and that is the page clients land on from search.
- Rich Results Test for the
PhotographyBusinessandImageObjectmarkup. - A monthly prompt check. Ask two assistants for photographers in your city and record what comes back. Trends over months are the signal, not any single answer.
None of these tools costs anything. The reason they go unused is that they answer questions honestly, and a flat line for three months is discouraging in a way that a vanity metric is not. The flat line is still the more useful number. Search work compounds slowly and results vary widely by market, and the only way to tell a slow start from a wrong direction is to have measured from the beginning.
FAQ
Can I do SEO for my photography business myself?
Yes, and the technical parts on this page are the ones most worth doing yourself, because they are one time changes. Renaming exports, adding width and height attributes, publishing an image sitemap and setting up a Business Profile are finite tasks with a clear end state. What does not have an end state is publishing, and that is the part people abandon. Decide honestly which side of that line you have time for before paying anyone.
How much should I expect to pay for SEO?
The market range for small business SEO retainers runs from a few hundred dollars a month for a freelancer to several thousand for an agency, and published prices are rare enough that any quote should be compared against the specific deliverables it buys. We broke down what those line items actually contain, using prices agencies publish themselves, in our piece on agency retainers. Be direct in asking what happens to the work if you stop paying.
Does Squarespace hurt my SEO as a photographer?
The platform is rarely the deciding factor. Squarespace's own help documentation notes that an image's file name acts as alt text when no other alt text is set, and that image blocks let you set a separate filename for SEO purposes, so filename discipline still applies there. What matters more than the platform is whether your gallery pages are indexable, whether they load quickly on a phone, and whether you publish anything beyond a portfolio. Those are true on any builder.
What are the best SEO keywords for photographers?
The ones your clients type, which are almost never the ones photographers discuss with each other. Client queries are an occasion plus a place plus a constraint: the venue name, the season, the style, the budget question. Photographer queries are about running a business. Both have search volume, only one leads to a booking, and the way to tell them apart is to open the results and read who is ranking. That audience check is the whole method, and we describe it in detail in our guide to SEO for founders.
Do I need a Google Business Profile if I travel to clients?
Yes, and you qualify. Google's guidelines cover businesses that travel to customers explicitly, and service-area businesses are told to hide the street address rather than publish a home one. It is the single highest value hour of local search work available to a photographer with no storefront, because the map pack is a separate surface from the organic results and many photographers never claim their place on it.
Will AI assistants recommend my photography business?
Possibly, and you cannot control it directly. Google's guidance states that appearing in its generative features requires being indexed and eligible for a snippet, and explicitly rules out special files or markup as a requirement. For other assistants, being crawlable by their specific bots is the prerequisite, and that is worth verifying rather than assuming. Track which domains get named for queries in your market over time, as covered in our article on LLM visibility, and treat any single answer as noise.
Get cited by ChatGPT. Rank on Google.
You found this article through search. That is the whole product.
- One researched article a day
- Published on your own domain
- Keywords checked against live results
Get cited by ChatGPT. Rank on Google.
You found this article through search. That is the whole product.
- One researched article a day
- Published on your own domain
- Keywords checked against live results
