# CastError: Cast to ObjectId failed for value "x" (type string) at path "_id"

**Code:** `CastError ObjectId` · **Category:** Node.js · **Seen on:** Node.js

A value that isn’t a valid 24-hex-character ObjectId was used in an _id query.

## Meaning

Routes like /users/:id receive anything; strings like "undefined", "me" or route collisions (/users/new hitting /users/:id) fail casting.

## Common causes

- Invalid id from the URL
- Route order: /users/new matched by /users/:id
- "undefined" string from the frontend

## Quick fix

1. Validate with mongoose.isValidObjectId(id) and return 400/404
2. Register specific routes before parameter routes

## Detailed fix by platform

### Node.js

1. `if (!mongoose.isValidObjectId(req.params.id)) return res.status(400).json({ error: 'invalid id' });`

## How to diagnose

1. **Value** — Which value?
2. **Route** — Which route matched?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/nodejs/mongoose-casterror-objectid)
