Reading IPv6 without fear
An IPv6 address is eight 16-bit groups of hex. Two shortening rules create all the visual variety: leading zeros in a group can drop (0db8 → db8), and one run of consecutive zero groups can collapse to ::, once only, or the address would be ambiguous. This tool expands any legal form to its full 39 characters and re-compresses it canonically (longest zero run wins), which is exactly what you need when comparing an address in a log against one in a firewall rule and they "look different".
Subnetting is easier than IPv4
The math is the same prefix arithmetic as IPv4, minus the scarcity anxiety. Standard practice: your ISP or RIR delegates a /48 or /56 to a site, and every LAN gets a /64, always /64 for networks with hosts, because SLAAC address autoconfiguration requires exactly 64 host bits. Between /48 and /64 you have 16 bits (65,536 possible subnets) to assign meaningfully: many operators encode building, VLAN ID or environment straight into that nibble range, which the expanded form on this page makes easy to see.
Addresses worth recognising
The type row identifies the ranges you'll meet: fe80::/10 link-local (every interface has one, never routed), fc00::/7 unique-local (the RFC 1918 analogue), ff02::1-style multicast, 2000::/3 global unicast, and 2001:db8::/32, reserved purely for documentation, which is why it appears in every example including these. One habit that prevents outages: in URLs and many configs, IPv6 literals need square brackets (http://[2001:db8::1]:8080/), because the colons would otherwise read as a port separator.