{
  "id": 10639535,
  "title": "How I built 272 privacy-first tools with WebAssembly and no backend",
  "url": "https://urgent.news/2026/09/29/how-i-built-272-privacy-first-tools-with-webassembly-and-no-backend",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-29T07:41:26.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/shahrukh_10/how-i-built-272-privacy-first-tools-with-webassembly-and-no-27oi"
  },
  "original_language": "en",
  "account": "Five weeks ago, the author began constructing a PDF compressor. Currently, the website boasts 272 tools, all of which operate without uploading files to a server. The architecture is explained below, the reasoning behind the choices made, and the limitations encountered.\n\nThe premise is that every free online PDF compressor shares a common structure: users upload their files, the server compresses them, and the results are downloaded back. Users must either trust that files are deleted within 24 hours or not trust anything at all. However, if files never leave the user's machine, trust is unnecessary. In 2026, browsers have the capability to perform these tasks entirely on the client side using WebAssembly, Web Workers, the Canvas API, and a few mature JavaScript libraries. The author utilized this approach, creating 272 browser tools across PDF, image, video, audio, converters, calculators, writing, and developer utilities, all without requiring a sign-up, uploads, or ads.\n\nThe technology stack includes Next.js 16 for static export of tool pages, with each tool being an HTML file plus a JS bundle that lazily loads the required WebAssembly libraries. Specific libraries include ffmpeg.wasm for video and audio work, pdf-lib for PDF construction, pdf.js for PDF rendering, libheif-js for HEIC decoding (with Safari having native support and other browsers lacking it), the Canvas API and OffscreenCanvas for image resizing, conversion, cropping, and filtering, Web Workers for handling heavy operations off the main thread, and a service worker to cache wasm binaries after the first load, ensuring instant performance for subsequent visits to any video tools.\n\nThe examples provided include converting HEIC images to JPG using ffmpeg.wasm and merging multiple PDFs using pdf-lib. The conversion process involves importing the necessary functions, creating an instance of FFmpeg, loading the required wasm and core files, writing the input HEIC file, executing the conversion command with specified quality, retrieving the output data, and cleaning up the virtual file system to prevent memory leaks. For merging PDFs, the author demonstrates importing the PDFDocument module from pdf-lib, creating a new document, iterating over the input files, loading each PDF file's array buffer, and appending them to the merged document.",
  "summary": "Five weeks ago I started building a PDF compressor. Today the site has 272 tools and none of them upload your files to a server. This is what the architecture looks like, why I made those choices, and where it breaks. The premise Every \"free online PDF compressor\" I could find has the same shape: you upload your file, their server compresses it, you download it back. Their privacy policy says…",
  "key_points": [
    "Author creates 272 privacy-first tools using WebAssembly and no backend",
    "Tools operate entirely on client side with WebAssembly, Web Workers, Canvas API",
    "Stack includes Next.js 16, ffmpeg.wasm, pdf-lib, libheif-js, and service worker"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}