The question-mark problem: why some of your pages can never rank

Tom McSherry
20 June 2026 · 5 min read
Here's a frustrating one that catches a lot of businesses out. If the page you want to rank has a question mark in its web address, it probably can't be optimised for a specific search at all - and that's a technical limit, not something you can write your way around.
Static vs dynamic URLs
There are two kinds of web address. A static URL is a fixed page with its own address, title and meta description - something like /houses-for-sale-flat-bush. You can point it at a specific search and optimise it properly. A dynamic URL is a page that changes its contents based on a filter but keeps one address, usually with a question mark and some parameters in it - like /listings/?location=Flat+Bush. It's the same underlying page showing different results, so it has one fixed title and description for everything.
Because a dynamic page can't have its own title and description tuned to each search, it can't be aimed at a specific query. Any page with a question mark in it can't really be optimised for search. It's a very common reason a business can't rank for its service-plus-suburb terms no matter how good the underlying listings or products are.
You can't optimise a page that shares one title with a hundred different searches. The URL itself is the ceiling.
Why this is a developer job, not an SEO one
This is one of those places where SEO stops and web development starts. To rank for those suburb or category searches, someone has to build real static pages - each with its own address, title, description and content - rather than relying on the filtered, dynamic view. That's a build task. A good SEO's job here is to spot the blocker, explain it, and scope the pages that need to exist. Knowing where SEO ends and dev begins saves you paying for content work that was never going to move the needle.
So if you've been wondering why your neatly filtered listings or product pages won't rank, check the address bar. If it's full of question marks and parameters, that's your answer - and the fix is a build, not a blog.