age is a simple, modern and secure file encryption tool, file format and Go library. It encrypts files to small, explicit keys — no keyring, no key server, no configuration files and no long option lists — and composes cleanly with the tools you already use on the command line. age was designed by Filippo Valsorda (@FiloSottile) and Ben Cartwright-Cox (@benjojo), and the format is published as an open specification.
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p. No key servers, no web of trust, no trust-on-first-use surprises.age-keygen can generate hybrid post-quantum recipients (age1pq1…) and identities (AGE-SECRET-KEY-PQ-1…) that stay secure against future quantum computers.-p/--passphrase encrypts with a passphrase, auto-generating a strong diceware-style one when you leave the prompt empty. Passphrase-protected files are detected automatically at decrypt time.ssh-ed25519 or ssh-rsa public key and decrypt with the matching private key, so you can reuse keys you already manage.tar cvz ~/data | age -r age1… > backup.tar.gz.age.--armor produces a PEM-style -----BEGIN AGE ENCRYPTED FILE----- block that survives email, chat and clipboard round-trips.-r for each recipient, or keep a list in a file and pass it with -R, so a whole team can decrypt the same archive.age-plugin-yubikey, and post-quantum support is also available to older versions through age-plugin-pq.Traditional file encryption tooling forces a choice between tools that are hard to use correctly (raw OpenSSL or GnuPG command lines, keyring management, expiry and trust models) and proprietary black boxes. age takes the opposite approach: the defaults are safe, the keys are short strings you can paste into a chat message, and there is nothing to configure — so there is much less to get wrong. It is opinionated about cryptography rather than about workflow, which means it drops cleanly into shell scripts, backup jobs and CI pipelines without a wrapper.
It is also a good fit for teams already using SSH keys or hardware tokens: you can encrypt to a colleague’s existing ssh-ed25519 key and to a YubiKey-backed plugin recipient in the same file. Because the format is a public specification with multiple independent implementations, your encrypted data is not locked to one vendor or one language ecosystem.
-R recipients.txt) and distribute the ciphertext over untrusted channels.age -p and an auto-generated strong passphrase.age-plugin-yubikey so the decryption key never leaves a PIV token, or generate a post-quantum hybrid identity for long-term archives.filippo.io/age) to add modern, well-reviewed file encryption to your own tooling without inventing a format.Linux (amd64, arm, arm64) · macOS (Intel and Apple silicon) · Windows (amd64, arm64) · FreeBSD. Also installed through Homebrew, MacPorts, winget, apk, pacman, apt, dnf, portage and Nix; the Go library is cross-platform by nature.
BSD-3-Clause — a permissive free and open source licence (Copyright 2019 The age Authors, 2019 Google LLC, 2022 Filippo Valsorda). Verified from the repository’s LICENSE file.
github.com/FiloSottile/age · format specification: age-encryption.org/v1 · more tools and integrations: awesome age