Compass

Compasses were added in the Seecret Friday Update 9 on September 10, 2010. The compass needle points towards the player's original spawn point, whether in your inventory screen, in chests, lying on the floor, or while holding it in your hand.

If the compass is brought into/crafted in The Nether or The End, the compass' needle will spin wildly and point in random directions, making it useless for navigation.

You do not actually have to build a compass to use it for navigation. Just place the necessary components into their places on a crafting table and it will point towards your spawn. This can save you some iron and redstone. One can also view the compass under the item statistics page, as long as one has made a compass at some point in the past. This method is useful since it requires no redstone, iron, or a crafting table. It also appears as the icon for the search section in the creative inventory, where it still functions.

Sleeping in a bed will change your respawn point, but will not change the original spawn point and the location the compass points towards.

Other than being used to find the spawn point, compasses can also be used to craft a blank map when combined with eight pieces of paper.

Pocket Edition
Points to your start point.

Trivia

 * The Compass, along with the Clock, is one of the few tools you can stack.
 * A Compass can be used no matter where it is placed: in a chest, on the ground, or even held by another person. All compasses are drawn using the same graphic, so they will all point identically.
 * A Compass points to the northwest corner of a block, not the middle. This is because the spawn area is centered around this point, not a block (the spawn area has even-numbered dimensions: 20x20). Though that block can still be considered the "spawn point", as in multiplayer the protection area is centered around the block.
 * If the spawn location is hacked to a place in the Nether or End, the compass still won't point to the spawn when inside the Nether or End, but in the Overworld the compass will point to the coordinates of the Nether or End spawn.
 * Using the command "/setworldspawn" (or the variant where you specify x y z values) to change the worldspawn will change where the compass points to. However you need to quit and return to make the compass notice the change (on single player at least). Note that changing the worldspawn this way seems to make it an exact spot rather than the usual behavior of the x and z values being in a 20x20 range and the y being right above the highest solid point. The very fact that the variant makes you specify x y z instead of just x and z indicates something unusual is happening there.