256-bit AES · End-to-end encrypted

Send files.
Not data.

Share up to 5 GB with anyone. Your files are encrypted before they leave your browser. We can't see them. Nobody can.

Drop files here or browse

Up to 5 GB · Encrypted · Auto-deletes in 24 hours

2.1M+ Files transferred
140+ Countries
0 Data breaches
Zero Knowledge architecture

Three steps. Zero friction.

01

Upload

Drop your files. They're encrypted in your browser with AES-256 before upload begins.

02

Share link

Get a unique download link. The decryption key is in the URL fragment — never sent to our servers.

03

Auto-delete

Files are permanently destroyed after 24 hours or 10 downloads, whichever comes first.

Built for privacy.
Designed for speed.

End-to-End Encryption

AES-256-GCM encryption happens in your browser. Your files are ciphertext before they touch our infrastructure.

No Account Required

Start sending immediately. No sign-up, no email, no tracking. Just upload and share.

5 GB Free Transfers

Send files up to 5 GB at no cost. No speed limits, no compression, no quality loss.

Auto-Delete

Every file is permanently deleted after 24 hours. Pro users can set custom expiration up to 30 days.

Developer API

Integrate encrypted file transfers into your app. RESTful API with SDKs for Python, Node.js, and Go.

Zero Knowledge

We never see your files, filenames, or metadata. The encryption key exists only in your shared URL.

Encryption you can verify.

Maelle uses client-side AES-256-GCM encryption with a randomly generated key for each transfer. The key is embedded in the URL fragment (after #), which is never sent to our servers by design — it's a browser standard.

Our infrastructure stores only encrypted blobs. Even with full server access, your files remain unreadable without the key.

AES-256-GCM Industry standard
GDPR Compliant EU data processing
Zero Knowledge We can't read your files
// Client-side encryption flow
const key = await crypto.subtle
  .generateKey(
    { name: 'AES-GCM', length: 256 },
    true, ['encrypt']
  );

const iv = crypto
  .getRandomValues(new Uint8Array(12));

const encrypted = await crypto.subtle
  .encrypt(
    { name: 'AES-GCM', iv },
    key, fileBuffer
  );

// Key stays in URL fragment
// Never sent to server
const shareUrl =
  `https://maelle.run/d/${id}#${exportedKey}`;

Simple, transparent pricing.

Free plan available now. Pro & Team — coming soon.

Free
$0
forever
  • Up to 5 GB per transfer
  • E2E encryption
  • 24-hour expiry
  • 10 downloads per link
  • No account needed
Start sending
Team
$29/mo
per seat, billed annually
  • Up to 100 GB per transfer
  • E2E encryption
  • Custom branding
  • SSO / SAML
  • Audit logs
  • API access (10K calls/mo)
  • Dedicated support
  • SLA 99.95%
Contact sales

Ready to send securely?

No account. No tracking. No compromises.

Send your first file →