explaingit

filosottile/age

Analysis updated 2026-06-21

22,198GoAudience · developerComplexity · 2/5Setup · easy

TLDR

age is a simple, modern file encryption tool and Go library, encrypt files to specific recipients using short public keys or SSH keys, with no configuration options and post-quantum support.

Mindmap

mindmap
  root((age))
    What it does
      Encrypts files
      Recipient-based keys
      Post-quantum support
    Key types
      age native keys
      SSH public keys
      Passphrase mode
    Use cases
      Secure file transfer
      Encrypted backups
      Secret storage
    Audience
      Developers
      Security-minded users
      DevOps teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Encrypt a sensitive file to a colleague using their public SSH key or age public key before sending it over an untrusted channel

USE CASE 2

Back up secrets or private data to cloud storage by encrypting with age so the storage provider cannot read them

USE CASE 3

Automate encrypted file transfers in shell pipelines using age's UNIX-style stdin/stdout design

USE CASE 4

Use age as a Go library to add file encryption to your application with minimal code

What is it built with?

Go

How does it compare?

filosottile/agego-chi/chiredis/go-redis
Stars22,19822,11722,074
LanguageGoGoGo
Setup difficultyeasyeasyeasy
Complexity2/52/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Available via most package managers, run age-keygen once to create a key pair and start encrypting immediately.

In plain English

age is a file encryption tool, a file format, and a Go library, all bundled together. Its purpose is to let you encrypt a file so that only specific people can decrypt it, in a way the README describes as simple, modern, and secure, with small explicit keys, no configuration options, and a UNIX-style design that works in command pipelines. The description adds that it has post-quantum support, which means it includes key types intended to remain secure against future quantum computer attacks. In day-to-day use, the workflow shown in the README is: run age-keygen to produce a key pair (a public "recipient" key starting with age1... and a secret identity file), then run age with -r to encrypt a file to that recipient, and age --decrypt -i with the identity file to recover the original. Files can be encrypted to multiple recipients at once by repeating -r, or by listing recipients in a file passed with -R. Public keys can be age's own keys or ordinary SSH public keys (ssh-ed25519 or ssh-rsa), which means existing developer keys can be reused. Passphrase encryption is also supported with -p, and -a produces a PEM-armored text output instead of binary. Hardware tokens like YubiKeys are supported through a separate plugin, and an interoperable Rust implementation called rage and a TypeScript implementation called Typage exist for non-Go environments. You would use age when you need to send a file to a specific person, back up sensitive data to untrusted storage, or move secrets between machines, and you want a tool simpler than PGP that does one thing well. The README documents installation across a long list of operating systems and package managers (Homebrew, MacPorts, winget, apk, pacman, apt, dnf, and others) plus pre-built binaries from filippo.io and a go install command if Go is available. The format itself has a published specification at age-encryption.org/v1.

Copy-paste prompts

Prompt 1
Walk me through encrypting a file with age to send to a colleague who only has an SSH public key, show the exact commands from key to encrypted file.
Prompt 2
How do I use age to encrypt a file with a passphrase instead of a key pair, and what are the trade-offs?
Prompt 3
Show me how to encrypt to multiple recipients at once with age so several people can each decrypt the same file.
Prompt 4
I want to use age in a Go application to encrypt and decrypt files programmatically, show me the minimal Go code to do this using the age library.
Prompt 5
How does age's post-quantum key type work and when should I use it instead of the standard age1... key?

Frequently asked questions

What is age?

age is a simple, modern file encryption tool and Go library, encrypt files to specific recipients using short public keys or SSH keys, with no configuration options and post-quantum support.

What language is age written in?

Mainly Go. The stack also includes Go.

How hard is age to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is age for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub filosottile on gitmyhub

Verify against the repo before relying on details.