Stable URLs
URLs are public contracts. Once published, they should keep working. Breaking them invalidates citations, bookmarks, links, and agent caches — and is almost always avoidable.
What it is
A stable URL is one that keeps resolving to the same content over time, or — when content moves — redirects permanently to its new location. The principle was set out by Tim Berners-Lee in 1998 in Cool URIs don’t change and has only become more important as agents, archives, and citations multiply.
A URL is a public contract. Once you publish one, every link, bookmark, citation, RSS reader, search index, and agent cache assumes it will keep working.
Why it matters
- Agents cache answers. When a model quotes your page, it cites the URL. If that URL 404s next month, the citation is broken and your authority drops.
- Search engines lose ranking signals. Backlinks accumulated over years are tied to the URL.
- Humans hate broken links. Bookmarks, shared chat messages, printed materials.
- Internal links rot. Every change inside your own site creates work elsewhere on it.
A site that reorganises its URLs every release teaches the web not to trust it.
How to implement
Design for permanence from the start:
- Avoid implementation details. No
/wp-content/,/index.php,.aspx, or?id=42. These leak the stack and break when you switch it. - Avoid dates unless they are essential to the resource. A news article can keep
/2025/03/headline. An evergreen documentation page should not. - Avoid the author or department. Authors leave and departments rename.
- Use kebab-case slugs. Lowercase, hyphens between words, no trailing slashes mixed with non-trailing slashes — pick one and enforce it.
- Pick a canonical host.
www.or no-www., HTTPS only, one path style. Redirect the rest.
When a URL must change, redirect:
- Issue a
301 Moved Permanently(or308to preserve the method) from the old URL to the new one. - Keep the redirect forever. Removing it years later breaks links you have forgotten about.
- Avoid chains: redirect
Adirectly toC, notAtoBtoC. - Never redirect everything to the homepage. That is worse than a 404 — it tells crawlers the page intentionally still exists.
For deletions, a clean 410 Gone is more honest than a soft 404 or a homepage redirect.
Common mistakes
- Re-platforming and changing every URL slug “while we’re at it”.
- Adding session IDs, tracking parameters, or A/B variants to canonical URLs.
- Letting trailing slashes serve different content from non-trailing slashes.
- 302 (temporary) redirects for moves that are permanent.
- Removing redirect maps after a year because the file got big.
Verification
- Crawl old URLs after a migration and confirm each returns
301to a working target. - Use search-console reports to find 404s coming from external links.
- Spot-check archived URLs in the Wayback Machine. If they still load, your redirects are doing their job.
Related topics
Sources & further reading
- Cool URIs don't change — W3C — Tim Berners-Lee
- Is It Agent Ready? — Is It Agent Ready?
- Google — Redirects and Search — Google Search Central