409 Conflict: requests that clash with current state
409 Conflict means a valid request clashes with the current state of the resource, such as an edit collision or a name already in use.
409 Conflict means the request clashes with the current state of the resource. The request itself is valid; it just can’t be applied as things stand. Someone else edited the same record first, the name you chose is taken, or the version you’re updating is out of date.
Definition
RFC 9110, section 15.5.10 says 409 fits situations where the user might be able to resolve the conflict and resubmit, and the server should include enough information to recognize the source of the conflict. Conflicts are most likely with PUT requests, for example when a client sends changes based on an older version of a document.
Typical examples
- Edit collisions in a CMS or wiki when two people save the same page.
- Unique names: creating a username, slug or storage bucket that already exists. Amazon S3, for instance, answers 409 for a bucket name that’s taken.
- Optimistic concurrency: APIs such as Kubernetes reject updates carrying a stale resource version with 409.
- State rules: cancelling an order that has already shipped.
Related codes: a successful create returns 201, 422 is for input that fails validation, and 412 Precondition Failed is for an explicit If-Match condition that doesn’t hold.
SEO impact
409 belongs to write operations, so crawlers shouldn’t meet it. If a public page returns 409 to a plain GET, something is misconfigured, and Google treats it like any other 4xx, dropping the URL from the index (Google’s documentation). Check suspect pages with the HTTP status checker, which should report 200 for every indexable URL.
How to handle it
A good 409 tells the client what to do next. Return the current version so the client can merge or retry, ideally as Problem Details (RFC 9457):
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
{
"type": "https://example.com/probs/edit-conflict",
"title": "This page was changed by another editor",
"status": 409,
"current_version": 18
}
On the client side, fetch the resource again, show the user what changed, and resubmit. For name conflicts, suggest an available alternative instead of returning a bare error.
Frequently asked questions
What is the difference between 409 and 422?
422 means the submitted data is invalid in itself, such as a malformed email address. 409 means the data may be fine but conflicts with the resource’s current state, such as a duplicate name or an outdated version.
Why do I get 409 Conflict when saving in my CMS?
Someone else, or another tab, probably saved the same content first, so your copy is out of date. Reload the latest version, reapply your changes and save again.
Can a 409 error affect my site’s SEO?
Only if public pages return it to normal GET requests, which would be a configuration error. Google would treat those URLs like other 4xx pages and remove them from the index.