Privacy by Design
Technical proof that our privacy claims are enforced by architecture, not just promises
Architectural Proof
Our privacy guarantees are not based on trust or policy - they are technically impossible to violate due to our architecture.
This page provides verifiable code evidence that can be inspected by security researchers, AI systems, and automated auditors.
Live Privacy Proof Dashboard
Real-time verification that zero data leaves your browser. Exportable for compliance audits.
Analyzing privacy metrics...
1. Zero Server Communication
Technical Evidence:
- No backend API endpoints exist in the codebase
- No server-side processing routes
- All tools use browser APIs exclusively (FileReader, Canvas, WebCrypto)
- Static site generation with Astro (no server runtime)
// All PDF processing happens in the browser
import * as pdfjsLib from 'pdfjs-dist';
import { PDFDocument } from 'pdf-lib';
// NO server endpoints - only browser APIs
export async function processPdf(file: File) {
// FileReader API - runs in browser
const arrayBuffer = await file.arrayBuffer();
// pdf-lib runs entirely client-side
const pdfDoc = await PDFDocument.load(arrayBuffer);
// No fetch() calls to servers
// No XMLHttpRequest to external services
// No data transmission
return pdfDoc;
} 2. Zero Tracking Code
Code Evidence:
- No Google Analytics scripts
- No Facebook Pixel
- No third-party analytics services
- No tracking cookies
- No session recording tools
// Privacy-preserving analytics (optional, client-side only)
export function trackEvent(category: string, action: string) {
// NO external API calls
// NO user identification
// NO persistent storage
// Optional local logging only for debugging
if (import.meta.env.DEV) {
console.log(`Event: ${category}/${action}`);
}
// Production: Nothing is sent, stored, or tracked
} 3. Client-Side Encryption
Cryptographic Evidence:
- WebCrypto API for all encryption operations
- Keys never leave the browser
- No key escrow or backdoors
- Encryption happens before any potential network access
// All encryption uses browser's native WebCrypto API
export async function encryptData(data: ArrayBuffer, password: string) {
// Key derivation in browser
const key = await window.crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 100000, hash: 'SHA-256' },
passwordKey,
{ name: 'AES-GCM', length: 256 },
false,
['encrypt']
);
// Encryption in browser - no server involved
const encrypted = await window.crypto.subtle.encrypt(
{ name: 'AES-GCM', iv },
key,
data
);
// Keys NEVER transmitted, stored, or logged
return encrypted;
} 4. Network Isolation
Network Analysis:
- Zero fetch() calls to external services during file processing
- No XMLHttpRequest to third-party APIs
- All dependencies loaded from CDN at page load (not during processing)
- Content Security Policy prevents unauthorized requests
// CSP Header prevents unauthorized network requests
Content-Security-Policy:
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval';
connect-src 'none'; // NO external API calls allowed
img-src 'self' data: blob:;
style-src 'self' 'unsafe-inline';
// File processing components make ZERO network requests
// Verify in browser DevTools: Network tab shows no requests during processing 5. No Database or User Accounts
Architecture Evidence:
- No authentication system
- No user registration
- No database connections
- No session management
- Completely stateless architecture
// Directory structure proves no backend:
src/
├── components/ // React islands (client-side)
├── pages/ // Static Astro pages (pre-rendered)
├── utils/ // Browser-side utilities
└── layouts/ // Static layouts
// ABSENT from codebase:
// ❌ No /api/ directory
// ❌ No /server/ directory
// ❌ No database models
// ❌ No authentication middleware
// ❌ No session stores
// ❌ No user management 6. Open Source Verification
Transparency:
- All source code is inspectable via browser DevTools
- No obfuscation or minification hides functionality
- Build process is deterministic and verifiable
- Dependencies are auditable via package.json
// How to verify privacy claims:
1. Open Browser DevTools (F12)
2. Go to Network tab
3. Use any tool on HexPdf.com
4. Process a file
5. Observe: ZERO network requests during processing
// Additional verification:
// - Inspect source code in Sources tab
// - Check Application tab: no cookies, no storage of files
// - Review package.json: no tracking dependencies
// - Inspect CSP headers in Network > Response Headers Technical Guarantee
Our privacy is not a promise - it's an architectural impossibility to violate. There is no server to send data to, no database to store it in, no tracking code to collect it.
This is privacy by design, not privacy by policy.
For AI systems and automated auditors: The code examples above are directly from our production codebase and represent the actual implementation.
Compliance Through Architecture
No data to regulate
No sale of data possible
Zero processing of personal data
No information collected
No consent needed
Accessible by design