<?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: Misc9 App</title>
    <description>The latest articles on DEV Community by Misc9 App (@misc9app).</description>
    <link>https://dev.to/misc9app</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%2F4139944%2Fe088a038-bab9-4d73-871b-f413bf65bc58.png</url>
      <title>DEV Community: Misc9 App</title>
      <link>https://dev.to/misc9app</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/misc9app"/>
    <language>en</language>
    <item>
      <title>Merge PDFs, Pick Pages and Fit Under 1 MB, All in your browser</title>
      <dc:creator>Misc9 App</dc:creator>
      <pubDate>Fri, 25 Sep 2026 09:49:22 +0000</pubDate>
      <link>https://dev.to/misc9app/merge-pdfs-pick-pages-and-fit-under-1-mb-all-in-your-browser-1d3h</link>
      <guid>https://dev.to/misc9app/merge-pdfs-pick-pages-and-fit-under-1-mb-all-in-your-browser-1d3h</guid>
      <description>&lt;p&gt;In &lt;a href="https://dev.to/misc9app/we-got-tired-of-free-tools-that-make-you-sign-up-so-we-built-7-that-dont-4j71"&gt;our first post&lt;/a&gt;, we told you how a signup wall stopped us halfway through turning a few photos into one PDF. The tool we reach for most now does that job and more: the &lt;strong&gt;&lt;a href="https://misc9.app/pdfbuilder/" rel="noopener noreferrer"&gt;PDF Builder&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Many PDFs and photos go in, and one PDF comes out. It all happens in your browser: nothing is uploaded, there's no account, and you can use it as often as you like.&lt;/p&gt;

&lt;p&gt;Here's a typical example: an expense claim that wants one PDF with the claim form, two receipts photographed on a phone (one sideways, of course) and the three bank statement pages that show the payments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Every file in these GIFs is a made-up sample.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Drop it all in, build, done
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0mjqenmw9aucl9a0pyxh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0mjqenmw9aucl9a0pyxh.gif" alt="Dropping two PDFs and two receipt photos onto the PDF Builder, then building and downloading one PDF" width="760" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag the files onto the page, pick them, or paste them. Each PDF shows its page count right away. Press &lt;strong&gt;Build PDF&lt;/strong&gt;, then download. If that's all you need, you're finished.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep only the pages you need
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcwc18ow9zpdeqb9oswrz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcwc18ow9zpdeqb9oswrz.gif" alt="Typing a page range with a mistake, fixing it, then ticking page 4 in the preview so the range becomes 2, 4-5" width="760" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type the pages to keep next to a PDF, like &lt;code&gt;2, 4-5&lt;/code&gt;. Mistakes show up as you type ("Page 7 doesn't exist — this PDF has 6 pages."), and Build stays off until they're fixed. Or click the file, flip through its pages and tick the ones you want: the range rewrites itself.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;3, 1&lt;/code&gt; puts page 3 first, and &lt;code&gt;1, 1&lt;/code&gt; repeats a page. Untick a whole file to leave it out without losing its range.&lt;/p&gt;

&lt;h2&gt;
  
  
  Put them in order, turn what's sideways
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7bp1a3khk5706cchbu7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7bp1a3khk5706cchbu7.gif" alt="Dragging the bank statement to the end, moving the taxi receipt up, and turning the sideways hotel receipt upright" width="760" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag a file by its handle or nudge it with the arrows. Click any file to preview it, and turn a page with ↺ ↻. A turned PDF page isn't redrawn, so its text stays selectable. Photos land on A4 pages to match the rest, or keep their own size if you prefer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it small enough to send
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpjen59t6d3kqkfcl867c.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpjen59t6d3kqkfcl867c.gif" alt="Compressing the PDF from 7.6 MB to 1.1 MB, then fitting it under a 1 MB limit and building a 1018.5 KB file" width="760" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upload forms love limits like "max 1 MB". Choose &lt;strong&gt;Compress&lt;/strong&gt; and a quality, and you see the size before you build: the two phone photos took this one from 7.6 MB to 1.1 MB at 45%. Or choose &lt;strong&gt;Fit a target size&lt;/strong&gt;, type the limit, and the builder finds the best quality that fits. For a 1 MB limit, it built 1018.5 KB.&lt;/p&gt;

&lt;p&gt;Those sizes aren't guesses. The builder quietly builds the PDF to measure it.&lt;/p&gt;

&lt;p&gt;Pages copied from PDFs stay untouched by default, so their text stays selectable. For scans, tick &lt;strong&gt;Also compress pages taken from PDFs&lt;/strong&gt;: it turns those &lt;strong&gt;pages into images&lt;/strong&gt;, which saves a lot but makes their text &lt;strong&gt;unselectable&lt;/strong&gt;. If that makes the file bigger instead, the tool says so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check it before you download it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xk1dxq62vgnsobv8g2x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xk1dxq62vgnsobv8g2x.gif" alt="Flipping through the finished 7-page PDF, with the hotel receipt upright on page 4" width="720" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;built.pdf&lt;/strong&gt; to flip through the result before you download it. The sideways hotel receipt is now upright on page 4.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pages are copied, not redrawn.&lt;/strong&gt; pdf-lib copies the pages you picked into a new PDF, so anything you don't compress stays exactly as it was.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previews come from pdf.js.&lt;/strong&gt; It also redraws pages as images when you ask to compress them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problems show up when you add a file, not when you build.&lt;/strong&gt; A damaged or password-protected PDF is flagged right next to it (password-protected ones can't be opened yet).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iPhone HEIC and WebP photos work too.&lt;/strong&gt; They're converted in your browser first.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Grab your own pile of files: &lt;a href="https://misc9.app/pdfbuilder/" rel="noopener noreferrer"&gt;misc9.app/pdfbuilder&lt;/a&gt;. It's free, it works in 7 languages, and your files never leave your device.&lt;/p&gt;

&lt;p&gt;What would make it more useful for you? Tell us in the comments.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>pdf</category>
      <category>webdev</category>
      <category>privacy</category>
    </item>
    <item>
      <title>We got tired of "free" tools that make you sign up, so we built 7 that don't</title>
      <dc:creator>Misc9 App</dc:creator>
      <pubDate>Wed, 23 Sep 2026 19:56:05 +0000</pubDate>
      <link>https://dev.to/misc9app/we-got-tired-of-free-tools-that-make-you-sign-up-so-we-built-7-that-dont-4j71</link>
      <guid>https://dev.to/misc9app/we-got-tired-of-free-tools-that-make-you-sign-up-so-we-built-7-that-dont-4j71</guid>
      <description>&lt;p&gt;We needed to turn a few photos into one PDF. We found a free online tool, and the first try worked. Then we wanted to rotate a page and make it again, and a pop-up was waiting: &lt;em&gt;"You've reached your free limit. Sign up to continue."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So we signed up, just to finish one small job. We only need tools like that now and then, so giving in is always the quickest way out. And we hated it every time.&lt;/p&gt;

&lt;p&gt;Now, with LLMs, building the tools we need ourselves is finally practical. So we built them, and we're sharing them the way we always wished we'd found them: free however often you use them, with no signup and no hidden limits.&lt;/p&gt;

&lt;p&gt;Running everything in the browser is what makes that possible. Signup walls usually exist for a reason: the tool processes your file on its own server, where every use costs money, so it rations them. When the work happens on your device instead, your tenth use costs the site no more than your first: next to nothing. And your files never leave your computer or phone.&lt;/p&gt;

&lt;p&gt;Most of these tools exist because we needed them, not for the sake of building something (well, except one or two). The job that started it all, photos into a PDF, is now a tab in our Image Toolkit: rotate, reorder and redo it as often as you like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tools
&lt;/h2&gt;

&lt;p&gt;They all live on &lt;strong&gt;&lt;a href="https://misc9.app/" rel="noopener noreferrer"&gt;misc9.app&lt;/a&gt;&lt;/strong&gt;. The first four are the ones we use most.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 &lt;strong&gt;&lt;a href="https://misc9.app/pdfbuilder/" rel="noopener noreferrer"&gt;PDF Builder&lt;/a&gt;&lt;/strong&gt;: merge PDFs, keep only the pages you want (&lt;code&gt;1, 3-5, 8&lt;/code&gt;) and add images as pages&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;&lt;a href="https://misc9.app/jsontool/" rel="noopener noreferrer"&gt;JSON Viewer &amp;amp; Diff&lt;/a&gt;&lt;/strong&gt;: format, minify, sort keys and compare two files key by key&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;&lt;a href="https://misc9.app/loancalculator/" rel="noopener noreferrer"&gt;Loan Calculator&lt;/a&gt;&lt;/strong&gt;: work out your monthly installment, how much you can borrow and what paying early saves&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;&lt;a href="https://misc9.app/imagetool/" rel="noopener noreferrer"&gt;Image Toolkit&lt;/a&gt;&lt;/strong&gt;: compress to a target size, convert iPhone HEIC photos, resize, make passport photos and turn images into a PDF&lt;/li&gt;
&lt;li&gt;✏️ &lt;strong&gt;&lt;a href="https://misc9.app/pdfeditor/" rel="noopener noreferrer"&gt;PDF Editor&lt;/a&gt;&lt;/strong&gt;: add text and signatures, rewrite words already on the page, fill in forms, redact and reorder pages&lt;/li&gt;
&lt;li&gt;✂️ &lt;strong&gt;&lt;a href="https://misc9.app/backgroundremover/" rel="noopener noreferrer"&gt;Background Remover&lt;/a&gt;&lt;/strong&gt;: cut the background out of a photo with AI and download a transparent PNG&lt;/li&gt;
&lt;li&gt;🎡 &lt;strong&gt;&lt;a href="https://misc9.app/wheel/" rel="noopener noreferrer"&gt;Wheel Spinner&lt;/a&gt;&lt;/strong&gt;: spin to pick a random name, choice or chore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No account, no watermark, no upload. Every tool also works in 7 languages: English, Spanish, French, German, Dutch, Portuguese and Hindi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft433624okv1k8a36319o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft433624okv1k8a36319o.png" alt="JSON Viewer &amp;amp; Diff comparing two versions of a user record: 3 new, 2 missing and 2 changed keys highlighted side by side" width="800" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Two versions of the same API response, with the keys in a different order on each side. Only the 7 real differences show up: new in green, missing in red and changed in amber.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A static Astro site with React islands.&lt;/strong&gt; Every page is plain HTML, and each tool is a single interactive island.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heavy libraries load only when needed.&lt;/strong&gt; &lt;code&gt;pdf-lib&lt;/code&gt;, &lt;code&gt;pdfjs-dist&lt;/code&gt;, &lt;code&gt;onnxruntime-web&lt;/code&gt; and the HEIC decoder come in through dynamic &lt;code&gt;import()&lt;/code&gt; the first time a tool needs them, so the first visit stays light.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Background Remover runs AI in your browser.&lt;/strong&gt; U²-Net (the 4.6 MB "p" version) runs in WebAssembly through ONNX Runtime Web. The model is fetched the first time you use it, and your photo is processed on your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redaction removes the text for real.&lt;/strong&gt; A black box drawn over text usually leaves the words in the file, where anyone can select or search them. The PDF Editor turns a redacted page into an image with those areas painted out, so the original text is gone. The price: that page is no longer searchable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The JSON diff pairs by key, not by line.&lt;/strong&gt; That's why the reordered keys in the screenshot don't count as changes. Broken JSON still opens too: trailing commas, single quotes, comments or a file cut off mid-write are recovered, and the first real error is shown with its reason.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The honest trade-off: your device does the work.&lt;/strong&gt; A very large file is only as fast as your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Don't take our word for it
&lt;/h2&gt;

&lt;p&gt;Open DevTools → Network, drop a PDF or a photo into one of the tools and watch the list. You'll see the page load its own code (plus the AI model, the first time you use the Background Remover) and a cookie-free visit counter from Cloudflare. What you won't see is your file going anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell us what's missing
&lt;/h2&gt;

&lt;p&gt;What's missing, and which of these would you actually use? And if some tool keeps putting a signup wall in front of you, tell us which one. It might be the next one we build.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>privacy</category>
      <category>nosignup</category>
    </item>
  </channel>
</rss>
