Security Model
Your files never leave your device. Every tool on brownie.tools processes data entirely in your browser using native APIs. There is no upload, no server, no cloud storage. This page explains exactly how we enforce this guarantee - technically, not just by policy.
Zero Network Transfers During Processing
When you convert an image, count characters, or calculate a percentage on brownie.tools, the tool code runs entirely within your browser's JavaScript engine. The file you select is read into your browser's memory using the File API, processed using native Canvas API, Web Crypto API, or plain JavaScript, and the result is made available for download - all without a single network request.
You can verify this yourself: open your browser's DevTools (F12), switch to the Network tab, and perform any conversion. You will see zero outbound requests during processing. In fact, you can disconnect from the internet after the page loads and every tool will continue to work normally.
Content Security Policy (CSP)
We enforce a strict Content Security Policy that prevents tool pages from making network requests to external servers. This is a browser-level security mechanism - not a setting we can override in JavaScript. Our CSP headers are:
default-src 'self';
script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval';
connect-src 'self';
style-src 'self' 'unsafe-inline';
img-src 'self' data: blob:;
worker-src 'self' blob:;
font-src 'self';
frame-ancestors 'none';
The connect-src directive permits connections only to this site. Tool code processes
your files locally without network requests; engines and models are served from this site. The
frame-ancestors 'none'
directive prevents other sites from embedding our tools in iframes.
What Data Stays on Your Device
- Files you process: Loaded into browser memory, processed, then available for download. After you leave the page or close the tab, the data is released from memory.
- Cookies: We set zero cookies. No session cookies, no tracking cookies, no analytics cookies.
- localStorage: Optionally used for theme preference (dark/light) and recent tools list (if you enable it). No file data is ever written to localStorage.
- Analytics: We use Google Search Console for search performance data (no user tracking, no cookies). No client-side analytics library is loaded.
Engines and Models Served from This Site
JavaScript engines, WebAssembly modules, and models are served from this site, including OCR
assets under /vendor/tesseract. Tools load the assets they need from the same
origin before processing locally. There is no external CDN fallback.
Additional Security Headers
| Header | Value | Purpose |
|---|---|---|
X-Content-Type-Options | nosniff | Prevents MIME type confusion attacks |
X-Frame-Options | DENY | Prevents clickjacking via iframes |
Referrer-Policy | strict-origin-when-cross-origin | Limits referrer data sent to external sites |
Permissions-Policy | camera=(), microphone=(), geolocation=() | Disables hardware access APIs not needed by tools |
What We Do Not Do
- We do not upload your files to any server, ever.
- We do not use
eval()ornew Function()in tool code. - We do not set cookies or use fingerprinting techniques.
- We do not load third-party advertising or tracking scripts.
- We do not store file data in localStorage, IndexedDB, or any persistent storage.
- We do not collect or transmit error logs automatically (errors are only reported if you choose to submit feedback).
Open Questions and Transparency
If you have questions about our security model, find a vulnerability, or want to suggest improvements, please use the feedback button on any tool page. We take security reports seriously and will respond to all credible reports.
This security model page was last updated on .