Privacy Policy

Sh...Text is designed around data minimization. We only store the encrypted payload and necessary metadata required to serve your snippet until it expires.

Database Transparency

Below is an exact example of how a snippet document is structured in our database. Encrypted payloads are formatted as iv:authTag:ciphertext.

snippet_schema.json
{
  "_id": { "$oid": "66a8e12b..." },

  // 🔒 Encrypted Content (format: iv:authTag:ciphertext)
  "content": "3a7b9c12f4e5a6d7b8c9d0e1:f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3:f11b11586ce03a2...",

  // 🔗 Unique Link Slug
  "slug": "project-x",

  // 🔑 Scrypt Password Hash (null if public)
  "password": "scrypt:4a9c12f4e5a6d7b8:8b2e3f4a5b6c7d8e9...",

  // ⏳ Expiration Timestamp (MongoDB TTL Index)
  "expireAt": { "$date": "2026-07-30T18:00:00.000Z" },
  "createdAt": { "$date": "2026-07-30T17:45:00.000Z" }
}

Technical Practices

AES-256-GCM Encryption

Snippet payloads are encrypted with AES-256-GCM (Galois/Counter Mode). Each record includes a random 96-bit IV and an authentication tag to prevent tampering.

Scrypt Password Hashing

Passwords are hashed using Node's native scrypt key derivation. Verification uses constant-time byte comparison to prevent timing attacks.

Automatic TTL Deletion

MongoDB automatically removes snippet documents when their expireAt timestamp is reached. Expired data is permanently deleted.

Zero Account Tracking

No user registration, email requirements, or persistent user profiles are collected to use the service.