Privacy-First Architecture
How DuckViz keeps your raw data inside your browser.
DuckViz is designed so that your data never leaves your browser. The data engine (DuckDB-WASM) runs entirely client-side, and AI features only ever receive schema metadata.
What stays in your browser
Everything related to your actual data lives locally:
- Raw cell values from every CSV, Excel, JSON, XML, and log file you upload
- SQL query results — all queries execute locally via DuckDB-WASM
- DuckDB tables — persisted as Parquet files in IndexedDB
- Dashboard layouts, widget configurations, and report content
- File metadata — names, sizes, and types
None of this ever touches our servers.
What goes to our servers
Only schema-level metadata is sent to AI providers:
| What's sent | Why | When |
|---|---|---|
| Column names and data types | To classify your data domain and generate chart suggestions | Widget generation |
| Detected domain and format hints | To improve chart recommendations | Widget generation |
| Up to 10 lines of log file text | To detect the log format for the parser | Log format detection only |
| AI-generated SQL queries | For error reporting when queries fail | Auto-fix retries |
No row-level data
Actual cell values, row data, and query results are never sent to any server. The AI generates SQL queries based on column names and types alone, then DuckDB executes those queries locally in your browser.
The one exception: log samples
Log format detection sends up to 10 sample lines from your log file to the AI for format identification. This is the only feature where actual data content reaches the server. These samples:
- Are used solely for format detection
- Are not stored after the response is returned
- Are limited to 10 lines regardless of file size
After detection, the WASM parser handles all parsing locally.
Authentication and accounts
- Email and display name are stored in Supabase (our auth provider)
- Payments (one-time credit packs) are handled by our payment processor — we never see full card details
- Session data lives entirely in your browser's IndexedDB
Clearing local data
To remove all data from your browser:
- Upload → Start fresh — wipes the entire persisted session (tables, files, dashboards, state)
- Memory badge → unmount — remove individual tables to free memory
- Browser DevTools → Application → IndexedDB — manually delete DuckViz storage
For developers
When using DuckViz packages in your own app, the same privacy model applies:
@duckviz/dbruns DuckDB-WASM entirely client-side@duckviz/explorerand@duckviz/dashboardrender charts locally@duckviz/sdk(server-side) proxies AI requests — you control what data reaches the AI
Read the full Privacy Policy for the legal version.