@ (Commercial At) is ASCII code point 64 (0x40), Unicode U+0040, and a printable punctuation character. It means "at" or "at the rate of" — originally a bookkeeping shorthand that sat quietly on typewriter keyboards for decades before email made it the most recognized symbol of digital communication. Ray Tomlinson chose @ in 1971 to separate user from host in email addresses (user@domain.com), a decision that permanently fused this character to the concept of networked identity. Beyond email, programming languages put it to diverse work: Python uses it for decorators (@staticmethod), Java for annotations (@Override), and CSS adopted it for at-rules (@media, @import). In Ruby, @ prefixes instance variables, doubling up as @@ for class variables. Twitter repurposed it as the mention prefix, a convention now universal across social platforms. The practical trap lies in email validation: developers routinely write regex patterns that reject perfectly legal addresses. The RFC spec permits quoted strings, plus-addressing (user+tag@domain), and even comments in the local part, meaning "weird@but valid"@example.com is technically compliant — and virtually no hand-rolled validation pattern handles it correctly. The symbol likely originated as a scribal ligature for the Latin "ad" (meaning "at" or "toward"), with the d's upstroke curling around the a. It appears in Florentine commercial documents from at least the sixteenth century. UTF-8 encodes it as a single byte 0x40. Unicode classifies it as Po (Punctuation, Other) with the name COMMERCIAL AT. The visually similar enclosed A Ⓐ (U+24B6) is a different character entirely, living in the Enclosed Alphanumerics block and carrying no syntactic meaning in any language or protocol.
const char *email = "dev@example.com";const char *at = strchr(email, '@');// Split local part and domain using the @ positionsize_t local_len = (size_t)(at - email);
Ray Tomlinson chose @ in 1971 because it already meant 'at' (user AT host) and wasn't used in any person's name. It separates the local part (username) from the domain. The @ was available on his Model 33 Teletype keyboard because it was used in accounting to mean 'at the rate of.'
In Python, @ is the decorator syntax (@property, @staticmethod). In Java, @ marks annotations (@Override, @Deprecated). In CSS, @ starts at-rules (@media, @import, @keyframes). In TypeScript, @ is for decorators. In Ruby, @ prefixes instance variables.
Twitter (now X) popularized @username for mentions in 2006. Instagram, GitHub, Discord, Slack, and most platforms adopted it. It creates a direct link to the user's profile and sends them a notification. This usage was inspired by email's user@host format.
@ starts 'at-rules' that control CSS behavior: @media for responsive design, @import for loading stylesheets, @keyframes for animations, @font-face for custom fonts, @supports for feature queries. At-rules are CSS's way of adding meta-instructions beyond simple property declarations.