Settings

A key pair

One private key, which you keep, and one public key, which you hand out. Anyone with the public key can encrypt to you. Only the private key opens what they send.

People you send to

Public keys only. Nothing here is a secret, and nothing here can open a file.

Encrypt

Decrypt

Check the arithmetic yourself

Encryption written in a web page is worth exactly as much as your reason to believe it. These are the published test vectors from the standards, run here, now, in your browser, against the same code that encrypts your files.

What this is, and what it is not

The private key is never kept. Not in this browser, not in your folder, not anywhere. It is shown once for you to save, and this page cannot give it to you again. A secret key left in browser storage is readable by anything that gets script onto the page, and a key like this exists precisely so that it is not lying around. Public keys are kept, because they are public.

It is the real age format, not something shaped like it. A 128-bit file key wrapped to each recipient through an ephemeral X25519 exchange, a header authenticated with HMAC-SHA-256, and a body in 64 KiB chunks under ChaCha20-Poly1305 counted so that a truncated file is refused rather than silently accepted. The implementation has been checked against the specification's test vectors and against the reference implementation in both directions.

Encrypting to yourself is a tick box. A file encrypted only to someone else cannot be opened by you afterwards, which is a miserable thing to discover a week later. The box is there, unticked, because doing it silently would be worse.

What it deliberately does not do. No passphrase recipients, no SSH keys, no plugins. Those are all in the age program itself, and this says so rather than half-implementing them. A file using them is named in the error rather than failing mysteriously.

Nothing is uploaded, and nothing needs to be. Keys are made from your browser's own random source, and files are encrypted in the tab. Turn the network off and every part of this page still works.

Questions people ask

What is age?

A file encryption format designed to be small enough to have no dangerous options: one public key per recipient, one way to use it, no configuration. It is widely used for encrypted backups and secrets, and there are implementations in Go, Rust and several other languages. The specification is at age-encryption.org.

Will the age program open a file made here?

Yes, and this opens files made by it. That is tested rather than assumed: files are round-tripped in both directions against the reference implementation, at sizes either side of the internal chunk boundary, as part of the checks on this code.

Where should I keep the private key?

In a password manager, or on an encrypted disk, or on paper in a safe. Not in a chat message, a shared drive or an email to yourself. If it is lost, nothing encrypted to it can ever be opened again, by anyone, including you. That is the property you are paying for.

Can I encrypt to several people at once?

Yes. Tick as many saved recipients as you like and paste any others. Each one gets its own copy of the file key inside the header, so any one of them can open the file and none of them learns anything about the others' keys.

Why is there a self test on the page?

Because you have no reason to trust a web page about cryptography. The button runs the published vectors from RFC 7748 and RFC 8439 against the very code that encrypts your files, in your browser, while you watch, and then encrypts and opens a file end to end.

Does it support passphrases or SSH keys?

No. age itself supports both, and this page does not pretend to: it handles X25519 recipients only. A file encrypted another way is refused with a message naming what it uses, so you know to reach for the age program instead.

Related tools