What a soft 404 is
A soft 404 is a page that tells the visitor there is nothing here and tells the server everything is fine. The browser receives a 200 code, the user reads "product unavailable" or "no results found", and the two statements contradict each other.
Google resolves the contradiction in favour of the content. When it detects that a 200 response carries no real content, it treats the page as non-existent: it drops out of the index and gets flagged in Search Console. The name says it: a soft 404, one the server declined to declare.
It should be kept apart from an honest 404 error, which is not a problem but the correct answer. A vanished page returning 404 is exactly what should happen; the fault appears when it vanishes and pretends to still be there.
The most frequent case does not even look like an error at first: redirecting everything gone to the homepage. It loads, answers 200 and is full of content, so nobody notices anything. To Google it is a soft 404 all the same, because the user wanted something specific and got something else.
The name misleads slightly, because it sounds like a mild variant of an error. It actually describes a mismatch: between what the HTTP response asserts and what the page contains. Everything else follows from that, including why Google bothers to detect it.
A search engine cannot rely on the code alone, because anyone can set it wrongly by accident. If it took the 200 at face value, the index would fill with pages announcing that there is nothing. So it checks the content, and so the fix never consists of hiding the symptom but of making code and content say the same thing.
