Skip to content

Latest commit

 

History

227 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenTools

Everyday browser tools. Your files never leave your device.

getopentools.com · Report a bug · Security · Sponsor

License: MIT Runs in your browser Tests Client-Side WebAssembly Buy Me a Coffee


OpenTools is a free, open-source collection of PDF, image, audio, video, subtitle, developer, data, text, math, and QR utilities that run entirely inside your browser. No account, no upload, no watermark, no ads, no third-party tracking. The server keeps one visit log per page view — see What the server logs.

The Zero-Egress Privacy Promise

Most online converters upload your tax returns, invoices, photos, and source code to someone else's server. OpenTools does the opposite: every computation happens in-memory on your device.

Layer How it stays local
Input Files are read as in-memory File / ArrayBuffer objects. Nothing is written to a server or to persistent storage.
Compute PDF merge/extract runs pdf-lib in a dedicated Web Worker. Image work uses Canvas and OffscreenCanvas. Background removal runs WebAssembly model inference in a Web Worker. Audio and video edits copy compressed samples at the container level — no codec, no re-encode. Hashing uses WebCrypto.
Output Results are handed back as temporary blob: URLs and revoked on clear, cancel, or unmount.
Enforcement Production responses ship Content-Security-Policy: connect-src 'none', and the test suite rejects direct network primitives in local engine code.
Visit log No analytics, session replay, advertising, or payment SDK is loaded in the browser. The server logs one metadata event per page visit, never your files or inputs — see What the server logs.

Model downloads. AI tools fetch their model weights once before first use. These are app assets, like JavaScript or fonts — they never contain your data. Background removal loads U²-Net (lite) and the ONNX Runtime WebAssembly binary from this site only (/models/, /ort/).

You don't have to trust us: open DevTools → Network, go offline, and run a tool. See SECURITY.md.

What the server logs

When a page (not a static asset) is requested, the edge handler in proxy.ts writes one tool_impression event to Cloudflare Workers Logs. It records:

  • Country, from Cloudflare's cf-ipcountry header. Coarse country level only: region and city are not logged.
  • The page path, and the tool query parameter if present.
  • Device type (mobile, tablet, or desktop), derived from the user agent. The user agent itself is not stored.
  • Primary browser language, truncated to 10 characters.
  • The referring site's category (for example Google, GitHub, Reddit). The raw referrer URL is not stored.
  • A timestamp.

This event does not include your IP address, city, region, raw referrer, cookies, files, file names, pasted text, or results — tools run in the browser, so the server never receives them. Logs are retained under Cloudflare's Workers Logs retention. Cloudflare may also record standard request metadata for its platform logs.

Core Tool Suite

42 live tool routes, covering 553 catalogued tools. Every tool shows a completion receipt with measured duration, output facts, and an explicit privacy boundary.

Suite Tools Routes
📄 Document & PDF Merge, extract pages, rotate/reorder/delete/number/watermark/metadata, images → PDF, compress, PDF → Word, fill & sign, document generators (README, changelog, invoice, receipt) /pdf/merge, /pdf/extract-pages, /pdf/page-tools, /pdf/images-to-pdf, /pdf/compress, /pdf/to-word, /pdf/sign, /documents/workbench
🖼️ Image Background removal (WebAssembly model inference), optimizer (resize/compress/convert), editor /image/background-remover, /image/optimize, /image/editor
🎵 Audio & Video MP3 cut/join/tag/inspect, M4A · FLAC · OGG · AIFF → WAV, video trim/mute/extract audio without re-encoding /audio/mp3-toolkit, /audio/convert, /video/trim
💬 Subtitles SRT / VTT / SBV / LRC conversion, shift, two-point resync /subtitles/workbench
Developer JSON formatter, Base64 encoder/decoder, UNIX timestamp, UUID generator, file hash (SHA-256/384/512), SQL formatter, minifier and ER diagram /developer/*, /data/json, /file/hash-calculator
📊 Data & Spreadsheets CSV ↔ JSON transformer, delimiter conversion, CSV → SQL /data/csv-to-json, /data/workbench
🗄️ Files & Archives Open and make ZIP files, split and join, checksum verify, duplicate finder, signature inspector /file/archive, /file/workbench
🔤 Text & Writing Word count, case converter, regex find & replace, Markdown ↔ HTML, diff and merge /text/case-converter, /text/workbench, /text/writing
🧮 Math, Science & Finance Unit converter, percentage calculator, formula calculators (results only, never advice), business and finance math /math/percentage-calculator, /math/workbench, /science/workbench, /finance/workbench
📅 Dates & Productivity Age calculator, date difference, planners and prioritisation matrices, India life-admin formatters and maskers /date/age-calculator, /date/date-difference, /date/workbench, /productivity/workbench, /life-admin/workbench
📱 QR & Barcode Vector QR generator (URL, Wi-Fi, vCard, MeCard, social), barcode tools /qr/workbench
🌐 Web, SEO & Creator Meta / Open Graph / Twitter card generators, robots.txt, SERP preview, YouTube and social formatting /web/workbench, /creator/workbench

The route list is not hand-maintained prose: LIVE_TOOL_ROUTES in lib/seo/live-tools.ts is the single source of truth, and a route only counts as live when the code that renders it really runs the operation.

Sponsorship & Patronage

OpenTools is free forever. There are no paid tiers and no result is ever gated. The project is sustained entirely by voluntary support from people who find it useful. UPI charges no platform fee, so the whole contribution arrives; Buy Me a Coffee takes a platform cut of each transaction, which is part of why UPI is offered first to supporters in India.

Channel For Methods
🌍 Buy Me a Coffee International supporters Credit/debit card, Apple Pay, Google Pay, PayPal
🇮🇳 UPI Supporters in India Any UPI app via QR code or upi://pay deep link on mobile

The /support page picks the right channel automatically. Detection (isLikelyIndiaVisitor() in lib/support-config.ts) runs locally using your browser's timezone and language settings — no IP lookup or geolocation request is made. You can always switch channels manually.

The support page is fully isolated from tools: it never receives file names, job data, or results.

Local Development & Quality Control

Prerequisites

  • Node.js >= 22.13.0
  • npm 11.12.1 (the SBOM gate compares against the version that generated the checked-in SBOM; other npm majors emit different output)

Commands

npm install        # install dependencies
npm run dev        # start the local development server
npm run qc         # full quality-control suite (must pass before a PR)
npm run build      # production build (Cloudflare Workers output in dist/)

npm run qc runs the fail-fast gates in order:

  1. Formatoxfmt --check
  2. Unit + all-operation I/O — 1,100+ Vitest tests, including local-source zero-egress policy checks. npm run qc prints the exact count for your tree
  3. Type checktsc --noEmit
  4. Lint — OxLint with warnings denied
  5. Design system contract — semantic Tailwind tokens only
  6. Build — production Vinext build
  7. SBOM inventory — checked-in CycloneDX SBOM must match the lockfile
  8. Blueprint integrity — runs only inside the private blueprint workspace

npm run qc:release additionally runs npm audit --audit-level=high.

Tech stack

Vinext (Next.js API on Vite) · React 19 · Tailwind CSS v4 · Base UI · pdf-lib · ONNX Runtime Web · Web Workers · Cloudflare Workers.

Project layout

app/          routes (one folder per tool)
components/   shared workbench UI and tool components
lib/tools/    pure tool logic, manifests (catalog.ts), and tests
workers/      Web Workers for heavy processing
scripts/      QC, design-system, and SBOM scripts
release/      checked-in SBOM

Contributing

Contributions are welcome. Read CONTRIBUTING.md and the owner decision log first. In short:

  • Tools must never make network requests with user data, and must never add client-side analytics or tracking. The only server-side log is the documented visit log; changes to it must update the docs in the same PR.
  • Dependencies must be MIT-compatible and recorded in THIRD_PARTY_NOTICES.md.
  • Use semantic design tokens (bg-success, text-foreground, border-border).
  • npm run qc must pass.

Security Policy

Unexpected network egress, tracking, or telemetry beyond the documented visit log is treated as a critical vulnerability. Report it privately via GitHub's private vulnerability reporting — not a public issue. Full policy: .github/SECURITY.md.

License

MIT © 2026 OpenTools Contributors. Third-party components retain their own licenses — see THIRD_PARTY_NOTICES.md.

About

Everyday PDF, image, document and text tools that run entirely in your browser — enforced by connect-src 'none'. No upload, no account, no tracking. MIT.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages