Skip to content

0legmax/tellyoulater

Repository files navigation

TellYouLater — Time-Locked Messages

Send messages to the future using cryptographic time-locks. No database, no trust required.

Try it now: tellyoulater.com

What is TellYouLater?

TellYouLater is a zero-knowledge time capsule for the digital age. It lets you write a message that can only be opened at a specific date and time in the future—not by anyone, including us, until that moment arrives.

The Core Concept

Imagine you write a letter, seal it in a transparent safe, and set a timer lock. You walk away with that safe in your pocket. The safe cannot be opened—by anyone, anywhere—until the timer hits zero. That's exactly how TellYouLater works, but with mathematics instead of physical locks.

How It Works

1. Create Your Message

  • Write anything: a prediction, a confession, a Bitcoin seed phrase, a letter to your future self
  • Choose when it should be revealed (days, months, or years from now)
  • Click "Encrypt Message"

2. Get Your Link

  • The app encrypts your message using time-lock cryptography
  • You receive a special URL (like tellyoulater.com/#e:83js...)
  • This URL IS your message. Save it carefully—if you lose it, it's gone forever

3. Wait

  • The app doesn't store anything. There's no database, no account, no backup
  • Your encrypted message lives entirely inside the URL you saved

4. Open When Ready

  • When the unlock time arrives, open your saved link
  • The app automatically decrypts the message in your browser
  • Before the unlock time? You'll see a countdown—no one can open it early

Why TellYouLater is Different

Mathematically Impossible to Open Early

Traditional "scheduled message" services can peek at your message anytime—they just promise not to. TellYouLater uses time-lock encryption, which makes it cryptographically impossible for anyone (including the website owner) to decrypt your message before the unlock time.

No Database = No Data Breach

Your message isn't stored on any server. The entire encrypted message is contained in the URL you save. No database means:

  • No monthly fees
  • No privacy policy changes
  • No company that can shut down and take your messages with it
  • No hackers can steal what doesn't exist

Works Forever (As Long as DRAND Exists)

Even if TellYouLater.com disappears tomorrow, your link will still work. The decryption depends on the DRAND network, a global, distributed randomness beacon run by independent organizations. As long as DRAND exists (currently operated by institutions like Cloudflare, EPFL, and Protocol Labs), your message can be unlocked.

What is DRAND?

DRAND (Distributed Randomness Beacon) is the cryptographic foundation that makes time-lock encryption possible. Think of it as a global "randomness clock."

How DRAND Enables Time-Locks

  1. The League of Entropy: DRAND is run by a coalition of independent organizations around the world

  2. Public Randomness: Every 30 seconds, DRAND generates a new random number that's:

    • Unpredictable: No one knows what the number will be before it's generated
    • Verifiable: Anyone can verify it's truly random and hasn't been tampered with
    • Permanent: Once generated, it's published publicly forever
  3. The Lock Mechanism: When you create a message, TellYouLater:

    • Calculates which DRAND "round" will happen at your chosen unlock time
    • Uses that future random number (which doesn't exist yet) as the encryption key
    • Creates an encrypted message that can only be decrypted once DRAND releases that number

Why This Is Secure

  • No one has the key yet: The decryption key literally doesn't exist until the unlock time
  • No central authority: DRAND is decentralized—no single entity controls it
  • Publicly verifiable: Anyone can verify that the time-lock is genuine and hasn't been backdoored

Use Cases

Personal

  • Letters to your future self
  • Surprise messages for birthdays/anniversaries
  • Predictions about the future
  • Time capsule memories

Security

  • Emergency access to passwords/seed phrases
  • Dead man's switch for critical information
  • Whistleblower disclosures with time delays

Creative

  • Art projects with timed reveals
  • Serialized storytelling
  • Scavenger hunts with time-based clues

Important Warnings

The Link IS the Message

If you lose the URL, your message is gone forever. There is no "Forgot My Link" button. There is no customer support that can recover it. Save it carefully:

  • Email it to yourself
  • Store it in a password manager
  • Print the QR code and put it in a safe
  • Save it to multiple devices

Anyone With the Link Can Open It

Before the unlock time: the link is useless to everyone. After the unlock time: anyone with the link can read the message. If you want it to remain secret, don't share the link.

DRAND Dependency

Your message can only be unlocked if:

  1. The DRAND network is still operating
  2. You (or whoever has the link) can access the internet
  3. At least one DRAND node is accessible

DRAND has been running reliably since 2020, but like any technology, it's not guaranteed forever.

Privacy & Security

What We DON'T Know

  • What your message says (encrypted before it reaches the browser)
  • When you'll unlock it (the date is hashed into the encryption)
  • Who you are (no accounts, no tracking)

What We DO Know

  • Basic web analytics: page views, country, browser type
  • Nothing else

Zero-Knowledge Architecture

The encryption and decryption happen entirely in your browser. The plaintext message never touches our servers. We can't read your messages even if we wanted to—they're mathematically locked until the future.

Technical Details (For the Curious)

  • Encryption: tlock-js library implementing time-lock encryption
  • Time Source: DRAND League of Entropy (quicknet mainnet)
  • Hosting: Static site (no backend API is used)
  • Open Source: Code available for review

Message Format

When you create a time-locked message, the encrypted data is encoded in the URL fragment (after #e:). Here's how it works:

Format Structure

The encrypted payload is a base64url-encoded binary format with the following structure:

Field Size Description
Round Number Variable-length (protobuf-style varint) The DRAND round number when the message can be decrypted
File Key Size 1 byte Size of the encrypted file key minus 48 bytes
Encrypted File Key Variable-length The file encryption key encrypted using Identity-Based Encryption (IBE) against the future DRAND round
Encrypted Body Variable-length (optional) For messages >32 bytes, the actual message encrypted with ChaCha20-Poly1305

Two Encryption Modes

Small Messages (≤32 bytes):

  • The entire plaintext is encrypted directly using IBE against the DRAND round
  • No separate body encryption needed
  • The encrypted file key field contains the encrypted message itself

Large Messages (>32 bytes):

  • A random 16-byte file key is generated
  • The file key is encrypted using IBE against the DRAND round (stored in encrypted file key field)
  • The message is encrypted using ChaCha20-Poly1305 with a key derived from the file key via HKDF-SHA256
  • Both the encrypted file key and encrypted body are stored in the payload

IBE Ciphertext Structure

The IBE encryption produces three components (U, V, W):

  • U: Elliptic curve point (48 bytes for G1, 96 bytes for G2)
  • V: First half of the encrypted data
  • W: Second half of the encrypted data

Decryption Process

  1. Parse the round number and encrypted file key from the payload
  2. Fetch the DRAND beacon signature for that specific round
  3. Use the signature to decrypt the file key using IBE
  4. If there's an encrypted body, derive the ChaCha20 key using HKDF and decrypt the message
  5. If no body, the decrypted file key is the message itself

This format ensures that:

  • The message cannot be decrypted until DRAND publishes the beacon for the specified round
  • The entire payload is contained in the URL
  • Small messages are efficiently encrypted without additional layers
  • Larger messages use authenticated encryption for the body content

Limitations

  • Message Size: Since your encrypted message lives in the URL, it's limited by your browser's URL length restrictions (typically 32,000-64,000 characters depending on the browser). TellYouLater doesn't impose any limits—it's purely a browser constraint. Longer messages compress to longer URLs, which may not work in all browsers.
  • Internet Required: You need an internet connection to decrypt (to fetch the time-lock key from DRAND).
  • No Editing: Once encrypted, the message cannot be changed. You'd need to create a new one.
  • No Cancellation: You cannot delete or cancel a message. Once the link exists, it can be used.

FAQ

Q: Can you read my messages?
A: No. The encryption happens in your browser before anything is sent. We never see the plaintext.

Q: What if TellYouLater.com shuts down?
A: Your link will still work as long as DRAND exists and you can access it. The decryption code is in the browser—you could even run it offline if you saved the code.

Q: Can I cancel a message after creating it?
A: No. Once the encrypted link exists, it cannot be "uncreated." Don't share links you want to keep private.

Q: What happens if I try to open the link before the unlock time?
A: You'll see a "Vault Locked" screen with a countdown. The cryptography makes it impossible to decrypt early—even with supercomputers.

Q: Is this really secure?
A: The time-lock mechanism is based on peer-reviewed cryptography and depends on DRAND, which is used by major blockchain projects. No system is perfectly secure, but this is among the most trustless approaches available.

Q: Can I store large files?
A: No. Only text messages. The entire encrypted message must fit in a URL, which limits size to a few hundred characters of original text.

Support & Contact

  • Issues: Found a bug? Open an issue on GitHub
  • DRAND Network: Learn more at drand.love

Remember: The link IS the message. Save it carefully.

About

Source code for TellYouLater.com — a zero-knowledge time capsule using cryptographic time-locks powered by DRAND. Browser-based time-lock encryption with no backend—messages are sealed in URLs and can only be decrypted at a future date.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors