Skip to content

Data & Privacy

WebLLM is designed with privacy as a core principle. Users maintain full control over their data, provider choices, and retention policies.

The extension stores locally (in IndexedDB):

  • Conversation history - Requests and responses
  • Provider configurations - API keys, priorities
  • Permissions - Which sites can use WebLLM
  • Settings - User preferences
  • ❌ No data sent to extension developers
  • ❌ No analytics or tracking
  • ❌ No third-party services
  • ❌ No cloud sync (unless user explicitly enables)

All data stored in:

  • IndexedDB - Browser’s local database
  • Encrypted at rest - API keys encrypted
  • Per-profile - Separate for each browser profile
  • User-controlled - Can export or delete anytime

Users configure how long to keep history:

Data Retention Settings:
├── Keep history: [7 days | 30 days | 90 days | Forever]
├── Auto-delete after expiration: [✓]
└── Clear all data now [Button]

When auto-delete enabled:

  • Runs daily at midnight
  • Deletes conversations older than retention period
  • Keeps settings and permissions
  • Notification shown after cleanup

Users can:

  • Clear all conversation history
  • Delete specific conversations
  • Remove provider configurations
  • Revoke all permissions
  • Reset extension to defaults

Highest privacy - Use only local models:

  • ✅ Data never leaves browser
  • ✅ No internet required (after model download)
  • ✅ Zero cost
  • ✅ No API keys needed

Limitations:

  • Smaller models (1-4B parameters)
  • Slower inference
  • Limited capabilities

High privacy - Use your own API accounts:

  • ✅ Direct connection to provider
  • ✅ No intermediaries
  • ✅ You control API key
  • ✅ You see API usage

Data considerations:

  • Prompt data sent to AI provider
  • Subject to provider’s privacy policy
  • You pay directly

Standard privacy - App provides API access:

  • ⚠️ Application sees requests
  • ⚠️ Subject to app’s privacy policy
  • ✅ Convenient (no setup)
  • ✅ Often free for users

Every time a site uses WebLLM:

[WebLLM Icon] example.com is using AI
Action: Summarizing article
Provider: Local Model (Llama 3.2)
[View Details] [Block Site]

Notification shows:

  • Which site is making request
  • What action (summarize, translate, etc.)
  • Which provider is being used
  • Option to block immediately

First time a site uses WebLLM:

Allow example.com to use WebLLM?
This site wants to:
• Summarize articles
• Extract information
• Translate text
[Always Allow] [Allow Once] [Block]

View complete history in extension:

Recent Activity:
├── example.com - Summarize - 2m ago - Local Model
├── docs.site.com - Translate - 5m ago - Anthropic
└── app.site.com - Extract - 10m ago - OpenAI
[Export Log] [Clear History]
  • Encrypted storage - Keys encrypted in IndexedDB
  • Never exposed - Not accessible to web pages
  • Secure input - Masked in UI
  • Revocable - Delete anytime
  • Per-origin permissions - Each site separately approved
  • No cross-origin access - Sites can’t see each other’s requests
  • Sandboxed execution - Content script runs isolated

Before processing any request:

  1. ✓ Validate origin has permission
  2. ✓ Check request size limits
  3. ✓ Sanitize inputs
  4. ✓ Rate limit per origin
  5. ✓ Timeout enforcement

The extension:

  • ❌ Doesn’t collect analytics
  • ❌ Doesn’t phone home
  • ❌ Doesn’t share data with developers
  • ❌ Doesn’t use third-party services
  • ✅ 100% local operation

WebLLM extension is designed to help with GDPR compliance:

  • Only stores what’s necessary
  • Automatic deletion policies
  • User-controlled retention
  • Export all stored data as JSON
  • View complete audit log
  • Inspect provider configurations
  • One-click data deletion
  • Removes all conversation history
  • Clears all permissions
  • Export conversation history
  • Export settings
  • Import to another profile/browser
User → Website → Website Server → AI Provider
↑────────────────────────↑
Website sees everything
  • ❌ Website sees all prompts
  • ❌ Website pays (or charges you)
  • ❌ No control over provider
  • ❌ Data stored on website’s servers
User → Website → Browser Extension → AI Provider
↑──────────────────↑
User controls everything
  • ✅ Website only sees results (if you allow)
  • ✅ You control API keys/costs
  • ✅ You choose provider
  • ✅ Data stored locally or sent to provider directly
  1. Use local models when possible - Maximum privacy
  2. Review permissions regularly - Revoke unused access
  3. Set retention policies - Don’t keep data forever
  4. Monitor activity - Check audit log periodically
  5. Use personal API keys - More privacy than app-provided
  1. Minimize data collection - Only request what’s needed
  2. Be transparent - Explain why you need AI
  3. Respect user choices - Handle denial gracefully
  4. Don’t log prompts - If user uses their API key, respect it
  5. Provide fallbacks - Work without WebLLM if unavailable

Q: Can websites see my API keys? A: No. API keys never leave the extension and are not accessible to web pages.

Q: Can the extension developers see my data? A: No. Everything is stored locally. No data is sent to us.

Q: What does the AI provider see? A: When using API providers, they see the prompts sent to them (subject to their privacy policy). When using local models, nothing leaves your browser.

Q: Can I use WebLLM offline? A: Yes, if you use local models. Download the model once, then it works offline.

Q: How do I delete all my data? A: Extension Settings → Data Retention → “Clear all data now”

Q: Can websites track my usage? A: Websites only see what you explicitly allow. The extension doesn’t share usage patterns between sites.