<?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: Muhammad Ali</title>
    <description>The latest articles on DEV Community by Muhammad Ali (@muhammad_ali_c2845c28baad).</description>
    <link>https://dev.to/muhammad_ali_c2845c28baad</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203137%2Ff2e63c82-3c85-4d9b-972a-ce0dac465975.jpg</url>
      <title>DEV Community: Muhammad Ali</title>
      <link>https://dev.to/muhammad_ali_c2845c28baad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhammad_ali_c2845c28baad"/>
    <language>en</language>
    <item>
      <title>I built a free PDF toolkit with Next.js and Python (and what I learned about PDFs)</title>
      <dc:creator>Muhammad Ali</dc:creator>
      <pubDate>Fri, 23 Oct 2026 17:17:57 +0000</pubDate>
      <link>https://dev.to/muhammad_ali_c2845c28baad/i-built-a-free-pdf-toolkit-with-nextjs-and-python-and-what-i-learned-about-pdfs-2dim</link>
      <guid>https://dev.to/muhammad_ali_c2845c28baad/i-built-a-free-pdf-toolkit-with-nextjs-and-python-and-what-i-learned-about-pdfs-2dim</guid>
      <description>&lt;p&gt;A few weeks ago I started building MyPDFLabs, a free set of online PDF tools. It's live now, and I'd like to share what it does, how it's built, and what I learned about PDFs along the way. I'd also really like your feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Every time I needed to rotate, merge or sign a PDF, the same things got in the way: a sign-up wall, a watermark on the result, or a small file size limit. I wanted a tool where you open the page, upload the file and get the result.&lt;/p&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;MyPDFLabs has around 26 tools in the browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Edit and create PDFs:&lt;/strong&gt; change text, add images, shapes and signatures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organize:&lt;/strong&gt; merge, split and extract pages, rotate, delete and reorder pages, add page numbers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convert:&lt;/strong&gt; PDF to Word, Excel and images, and Word, Excel, PowerPoint and images to PDF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protect and clean up:&lt;/strong&gt; compress, watermark and stamp, redact, encrypt and unlock, flatten&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sign and fill forms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR&lt;/strong&gt; for scanned documents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chat with PDF&lt;/strong&gt;, to ask questions about a document&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An ATS-friendly resume builder&lt;/strong&gt; with 50+ templates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core tools need no registration and add no watermarks. Files up to 500MB are supported, and uploaded files are deleted automatically after processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js (React)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python, for the heavy PDF processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; a VPS I manage myself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I split it this way because the browser is good for the interface and quick interactions, while Python has strong libraries for the real PDF work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes PDF tools tricky
&lt;/h2&gt;

&lt;p&gt;If you've never built with PDFs, here's what surprised me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A PDF isn't a document like Word is.&lt;/strong&gt; It describes where to draw each piece of text on a page. There are no paragraphs that reflow. That's why editing a sentence is much harder than it looks, because the file has no idea the sentence exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fonts are a common problem.&lt;/strong&gt; If the original font isn't embedded or available, text can shift when you edit it. Checking the result after saving matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long documents need care.&lt;/strong&gt; An editor that works for a 5-page file can struggle with a 200-page one. I test mine with large PDFs because pages and thumbnails have to load without freezing the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scanned PDFs are just pictures.&lt;/strong&gt; To edit or search them, you first need OCR to turn the image into real text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy is a design decision, not a feature.&lt;/strong&gt; People upload contracts, IDs and CVs. That's why uploaded files get deleted after processing, and why I don't ask for an account.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd like feedback on
&lt;/h2&gt;

&lt;p&gt;The site is still new, so I'd love honest opinions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which tool would you use most?&lt;/li&gt;
&lt;li&gt;Is anything confusing, slow or broken?&lt;/li&gt;
&lt;li&gt;What PDF tool is missing?&lt;/li&gt;
&lt;li&gt;If you've built PDF tooling yourself, how did you handle text editing and fonts? I'd like to compare notes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;You can find everything at &lt;strong&gt;&lt;a href="https://mypdflabs.com" rel="noopener noreferrer"&gt;mypdflabs.com&lt;/a&gt;&lt;/strong&gt;. If you only want to try one thing, open the &lt;a href="https://mypdflabs.com/tools/edit" rel="noopener noreferrer"&gt;PDF editor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and I'll reply to every comment.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>python</category>
    </item>
  </channel>
</rss>
