<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aizaz Ali</title>
    <description>The latest articles on DEV Community by Aizaz Ali (@aizazart).</description>
    <link>https://dev.to/aizazart</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3711085%2F94a72d65-9c5c-400c-b348-6ff8764c9268.png</url>
      <title>DEV Community: Aizaz Ali</title>
      <link>https://dev.to/aizazart</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aizazart"/>
    <language>en</language>
    <item>
      <title>I Built a Privacy-First PDF Tool That Never Uploads Your File</title>
      <dc:creator>Aizaz Ali</dc:creator>
      <pubDate>Sat, 24 Jan 2026 17:06:21 +0000</pubDate>
      <link>https://dev.to/aizazart/i-built-a-privacy-first-pdf-tool-that-never-uploads-your-file-1blh</link>
      <guid>https://dev.to/aizazart/i-built-a-privacy-first-pdf-tool-that-never-uploads-your-file-1blh</guid>
      <description>&lt;h2&gt;
  
  
  I Built a Privacy-First PDF Tool That Never Uploads Your Files
&lt;/h2&gt;

&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I've been working on a side project for a while now, and I finally feel ready to share it with the dev community. It's called &lt;a href="https://aeropdf.app" rel="noopener noreferrer"&gt;AeroPDF&lt;/a&gt; a collection of free PDF tools that run 100% in your browser.&lt;/p&gt;

&lt;p&gt;No uploads. No servers touching your files. Just pure client-side magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;We've all been there. You need to quickly merge two PDFs or compress a file before emailing it. You Google "merge pdf online" and end up on some sketchy site that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uploads your file to who-knows-where&lt;/li&gt;
&lt;li&gt;Shows you 47 ads&lt;/li&gt;
&lt;li&gt;Asks you to "sign up for premium" after processing ONE file&lt;/li&gt;
&lt;li&gt;Probably keeps a copy of your data forever&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I got tired of it. Especially when dealing with sensitive stuff like contracts, invoices, or personal documents. Why should I trust a random server with my files?&lt;br&gt;
So I thought: &lt;strong&gt;What if everything just happened locally?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;For the curious devs out there, here's what powers AeroPDF:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14&lt;/strong&gt; (App Router)  For the framework and SSR&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pdf-lib&lt;/strong&gt; The backbone for most PDF manipulations (merge, split, rotate, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF.js&lt;/strong&gt; Mozilla's library for rendering PDF previews&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; Because life's too short for vanilla CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployed on Netlify Simple&lt;/strong&gt;, fast, free tier is generous&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight was that &lt;strong&gt;pdf-lib&lt;/strong&gt; can do almost everything you need for basic PDF operations, and it runs entirely in JavaScript. No backend required.&lt;/p&gt;

&lt;p&gt;How It Actually Works&lt;br&gt;
When you drop a file into AeroPDF, here's what happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Simplified example of merging PDFs client-side
import { PDFDocument } from 'pdf-lib';
async function mergePDFs(pdfFiles) {
  const mergedPdf = await PDFDocument.create();

  for (const file of pdfFiles) {
    const arrayBuffer = await file.arrayBuffer();
    const pdf = await PDFDocument.load(arrayBuffer);
    const pages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
    pages.forEach(page =&amp;gt; mergedPdf.addPage(page));
  }

  return await mergedPdf.save();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The file goes from your device → browser memory → back to your device as a download. The server never sees it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features I'm Most Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge PDF&lt;/strong&gt;  Combine multiple files, drag to reorder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split/Extract Pages&lt;/strong&gt;  Visual page picker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compress PDF&lt;/strong&gt;  Reduces file size (with quality options)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF to Word&lt;/strong&gt;  Basic text extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-Sign&lt;/strong&gt;  Draw or type signatures directly on documents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password Protection&lt;/strong&gt;  Encrypt PDFs before sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, most of these took way less code than I expected once I figured out the pdf-lib API.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Privacy Angle
&lt;/h2&gt;

&lt;p&gt;I'm not just saying "privacy-first" for marketing. There's literally &lt;strong&gt;no backend processing&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No file uploads&lt;/li&gt;
&lt;li&gt;No analytics tracking your documents&lt;/li&gt;
&lt;li&gt;No cookies beyond what's needed for the site to function&lt;/li&gt;
&lt;li&gt;Works offline once loaded (it's a PWA)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can literally disconnect from the internet after the page loads and it still works. Try that with iLovePDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Browser APIs are powerful&lt;/strong&gt;  FileReader, Blob, URL.createObjectURL() are your friends&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;pdf-lib is amazing&lt;/strong&gt;  Seriously, huge thanks to the maintainers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SEO for tool sites is hard&lt;/strong&gt; Competing with established players takes time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Users actually care about privacy&lt;/strong&gt; The feedback I've gotten shows people appreciate not uploading files&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm working on:&lt;/p&gt;

&lt;p&gt;A Chrome extension for quick access&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;If you work with PDFs (and who doesn't?), give it a spin: &lt;a href="https://aeropdf.app" rel="noopener noreferrer"&gt;aeropdf.app&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
It's completely free. No accounts. No limits. No BS.&lt;/p&gt;

&lt;p&gt;Would love to hear your feedback or suggestions. And if you're interested in the technical details of any specific feature, drop a comment happy to write a deeper dive!&lt;/p&gt;

&lt;p&gt;P.S. If you're building something similar and need help with client-side PDF processing, feel free to reach out. I've learned a lot of tricks along the way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Built a Privacy-First PDF Tool That Never Uploads Your Files</title>
      <dc:creator>Aizaz Ali</dc:creator>
      <pubDate>Sat, 24 Jan 2026 17:02:05 +0000</pubDate>
      <link>https://dev.to/aizazart/i-built-a-privacy-first-pdf-tool-that-never-uploads-your-files-1m6o</link>
      <guid>https://dev.to/aizazart/i-built-a-privacy-first-pdf-tool-that-never-uploads-your-files-1m6o</guid>
      <description>&lt;h2&gt;
  
  
  I Built a Privacy-First PDF Tool That Never Uploads Your Files
&lt;/h2&gt;

&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I've been working on a side project for a while now, and I finally feel ready to share it with the dev community. It's called &lt;a href="https://aeropdf.app" rel="noopener noreferrer"&gt;AeroPDF&lt;/a&gt; a collection of free PDF tools that run 100% in your browser.&lt;/p&gt;

&lt;p&gt;No uploads. No servers touching your files. Just pure client-side magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;We've all been there. You need to quickly merge two PDFs or compress a file before emailing it. You Google "merge pdf online" and end up on some sketchy site that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uploads your file to who-knows-where&lt;/li&gt;
&lt;li&gt;Shows you 47 ads&lt;/li&gt;
&lt;li&gt;Asks you to "sign up for premium" after processing ONE file&lt;/li&gt;
&lt;li&gt;Probably keeps a copy of your data forever&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I got tired of it. Especially when dealing with sensitive stuff like contracts, invoices, or personal documents. Why should I trust a random server with my files?&lt;br&gt;
So I thought: &lt;strong&gt;What if everything just happened locally?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;For the curious devs out there, here's what powers AeroPDF:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14&lt;/strong&gt; (App Router)  For the framework and SSR&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pdf-lib&lt;/strong&gt; The backbone for most PDF manipulations (merge, split, rotate, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF.js&lt;/strong&gt; Mozilla's library for rendering PDF previews&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; Because life's too short for vanilla CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployed on Netlify Simple&lt;/strong&gt;, fast, free tier is generous&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight was that &lt;strong&gt;pdf-lib&lt;/strong&gt; can do almost everything you need for basic PDF operations, and it runs entirely in JavaScript. No backend required.&lt;/p&gt;

&lt;p&gt;How It Actually Works&lt;br&gt;
When you drop a file into AeroPDF, here's what happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Simplified example of merging PDFs client-side
import { PDFDocument } from 'pdf-lib';
async function mergePDFs(pdfFiles) {
  const mergedPdf = await PDFDocument.create();

  for (const file of pdfFiles) {
    const arrayBuffer = await file.arrayBuffer();
    const pdf = await PDFDocument.load(arrayBuffer);
    const pages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
    pages.forEach(page =&amp;gt; mergedPdf.addPage(page));
  }

  return await mergedPdf.save();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The file goes from your device → browser memory → back to your device as a download. The server never sees it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features I'm Most Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge PDF&lt;/strong&gt;  Combine multiple files, drag to reorder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split/Extract Pages&lt;/strong&gt;  Visual page picker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compress PDF&lt;/strong&gt;  Reduces file size (with quality options)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF to Word&lt;/strong&gt;  Basic text extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-Sign&lt;/strong&gt;  Draw or type signatures directly on documents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password Protection&lt;/strong&gt;  Encrypt PDFs before sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, most of these took way less code than I expected once I figured out the pdf-lib API.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Privacy Angle
&lt;/h2&gt;

&lt;p&gt;I'm not just saying "privacy-first" for marketing. There's literally &lt;strong&gt;no backend processing&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No file uploads&lt;/li&gt;
&lt;li&gt;No analytics tracking your documents&lt;/li&gt;
&lt;li&gt;No cookies beyond what's needed for the site to function&lt;/li&gt;
&lt;li&gt;Works offline once loaded (it's a PWA)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can literally disconnect from the internet after the page loads and it still works. Try that with iLovePDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Browser APIs are powerful&lt;/strong&gt;  FileReader, Blob, URL.createObjectURL() are your friends&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;pdf-lib is amazing&lt;/strong&gt;  Seriously, huge thanks to the maintainers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SEO for tool sites is hard&lt;/strong&gt; Competing with established players takes time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Users actually care about privacy&lt;/strong&gt; The feedback I've gotten shows people appreciate not uploading files&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm working on:&lt;/p&gt;

&lt;p&gt;A Chrome extension for quick access&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;If you work with PDFs (and who doesn't?), give it a spin: &lt;a href="https://aeropdf.app" rel="noopener noreferrer"&gt;aeropdf.app&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
It's completely free. No accounts. No limits. No BS.&lt;/p&gt;

&lt;p&gt;Would love to hear your feedback or suggestions. And if you're interested in the technical details of any specific feature, drop a comment happy to write a deeper dive!&lt;/p&gt;

&lt;p&gt;P.S. If you're building something similar and need help with client-side PDF processing, feel free to reach out. I've learned a lot of tricks along the way.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>news</category>
      <category>help</category>
      <category>homelab</category>
    </item>
    <item>
      <title>Building Privacy-First PDF Tools That Run Entirely in the Browser</title>
      <dc:creator>Aizaz Ali</dc:creator>
      <pubDate>Fri, 16 Jan 2026 19:56:00 +0000</pubDate>
      <link>https://dev.to/aizazart/building-privacy-first-pdf-tools-that-run-entirely-in-the-browser-4k18</link>
      <guid>https://dev.to/aizazart/building-privacy-first-pdf-tools-that-run-entirely-in-the-browser-4k18</guid>
      <description>&lt;p&gt;When I first started using online PDF tools, I noticed a common pattern: every tool required uploading files to a server (Majority). It seemed harmless at first, but then I realized many of these files are sensitive. Contracts, invoices, tax forms, medical records… and yet we trust these files to anonymous servers.&lt;/p&gt;

&lt;p&gt;That didn’t sit right with me.&lt;/p&gt;

&lt;p&gt;So I started experimenting with client-side PDF processing: running all the logic entirely in the browser. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files never leave your device&lt;/li&gt;
&lt;li&gt;No server ever touches your documents&lt;/li&gt;
&lt;li&gt;Everything happens locally, fast and securely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not just a merger. On the site, you can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merge PDFs&lt;/li&gt;
&lt;li&gt;Split PDFs&lt;/li&gt;
&lt;li&gt;Compress PDFs&lt;/li&gt;
&lt;li&gt;Rearrange PDF pages&lt;/li&gt;
&lt;li&gt;Delete PDF pages&lt;/li&gt;
&lt;li&gt;Edit PDF metadata&lt;/li&gt;
&lt;li&gt;Full PDF editor and More...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool runs directly in the browser, so your data stays private.&lt;/p&gt;

&lt;p&gt;Building this taught me a lot about browser APIs, memory constraints, and performance optimization. It also made me think more about privacy-first design: how can web tools be convenient, but still keep sensitive data safe?&lt;/p&gt;

&lt;p&gt;I wrote a detailed guide explaining the how and why behind these tools, including step-by-step instructions and technical insights:&lt;br&gt;
👉 Check it out here -&amp;gt; &lt;a href="https://aeropdf.app/blog/merge-pdf-securely-guide" rel="noopener noreferrer"&gt;https://aeropdf.app/blog/merge-pdf-securely-guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I Would love to hear from other developers: Have you built privacy-first tools?&lt;br&gt;
What challenges did you face keeping everything client-side?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>privacy</category>
      <category>security</category>
    </item>
  </channel>
</rss>
