As a player (or DM) might use a familiar as a spy, are there ways, magical or otherwise to detect that a cat is a familiar, or just a house cat?
I've read the answer to Are familiars considered magical for effects like detect magic? and agree with the accepted answer that they are not. So what might be other methods for exposing the nature of the creature in front of you?
And I mean short of killing it to see if it disappears 😉
Detect Evil and Good
The spell detect evil and good will allow you to determine if a beast has a creature type consistent with a familiar:
This works, since find familiar states:
This won't explicitly tell you "this creature is a familiar", but if you know anything about familiars, you will know that a celestial, fiend, or fey appearing as a harmless beast will be rather suspicious; suspicious enough to say "this is probably a familiar".
Locate Animals or Plants
The spell locate animals or plants can tell us what need to know:
With this one, if you suspect a nearby cat may be a familiar, cast this spell and concentrate on cats. If the suspicious cat pings with the spell, you know it isn't a familiar.
Channel Divinity: Arcane Abjuration/Abjure the Extraplanar (require a saving a throw)
These are conditioned on the suspected familiar failing a wisdom saving throw. The Arcana Cleric's Channel Divinity Arcane Abjuration says:
The Oath of the Watchers Paladin's Abjure the Extraplanar ability reads:
These aren't totally reliable, as they require a saving throw.
66% of the time, it works every time.
There are a few options for detecting fiends and celestials that do not detect fey. These include:
Additionally, the Oath of Ancients Paladin's Turn the Faithless channel divinity turns a fiend or fey on a failed saving throw, but has no effect on celestials. The Oath of Devotion Paladin's Channel Divinity turns only fiends.