Traditionally I have used a modified dial indicator and tube that screwed into the spark plug hole, but this isn't universal as plug threads differ and some engines use recessed plugs that require overly long extensions ( Daihatsu ).
Recently another solution presented itself and is simple and highly effective ( I wonder why I didn't think of it myself...

its a tapered rubber bung that is pressed into the spark plug hole, a length of flexible tube and a slotted glass tube with a small "piston" in it. The "piston' is a neat sliding fit in the tube.
For accuracy the tube and piston should be a small diameter - mines around 5mm id but the exact size doesn't matter
The device should be kept vertical for most accurate operation.
As the piston rises, air is forced into the slotted glass tube and it raises the piston to the point at which the slot is exposed, allowing the air to bleed off - but still holding the piston up.
At the moment the engine reaches TDC the airflow stops and the piston suddenly falls as there is no longer any flow to hold it up. Sounds agricultural but its highly effective and accurate.
The process is undertaken by rotating the engine ( manually of course... ) in both directions and noting the points where the device indicates. TDC is exactly midway between these two points. This is the same as using other indicators, you always wind in either direction, note the points and split the difference.
Anyone with basic mechanical skills could make one of these for just a few $$ and its universal.
Ideal for checking ignition and cam timing references.
Hope someone finds this of interest
