<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[I built a desktop app because shipping labels were wasting too much time]]></title><description><![CDATA[I built a desktop app because shipping labels were wasting too much time]]></description><link>https://labelchop.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>I built a desktop app because shipping labels were wasting too much time</title><link>https://labelchop.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 02:42:48 GMT</lastBuildDate><atom:link href="https://labelchop.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I built a desktop app because shipping labels were wasting too much time]]></title><description><![CDATA[A few months ago I noticed a boring little workflow that kept stealing time from small ecommerce sellers in Australia.
They would buy a label through MyPost Business, eBay, Shopify or another shipping]]></description><link>https://labelchop.hashnode.dev/i-built-a-desktop-app-because-shipping-labels-were-wasting-too-much-time</link><guid isPermaLink="true">https://labelchop.hashnode.dev/i-built-a-desktop-app-because-shipping-labels-were-wasting-too-much-time</guid><category><![CDATA[labelchop]]></category><category><![CDATA[Electron]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[ecommerce]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[Jake]]></dc:creator><pubDate>Wed, 20 May 2026 10:52:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a0d7d14e5259a493e91b61f/c388644d-f52a-46c7-b171-6ef876b40962.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago I noticed a boring little workflow that kept stealing time from small ecommerce sellers in Australia.</p>
<p>They would buy a label through MyPost Business, eBay, Shopify or another shipping tool. The platform would give them an A4 PDF. Then they would try to print it on a 4x6 thermal label printer.</p>
<p>That sounds simple until you actually watch someone do it.</p>
<p>Open the PDF. Crop the label. Pick the right printer. Change the paper size to 4x6 or 100x150mm. Hope the margins are not weird. Print a test. Waste a label. Try again.</p>
<p>Do that once and it is annoying. Do it fifty times a week and it becomes one of those tiny operational taxes that nobody wants to think about.</p>
<p>So I built <a href="https://labelchop.com/">LabelChop</a>, a desktop app that watches your Downloads folder, finds shipping labels, crops them to 4x6, and sends them to your thermal printer automatically.</p>
<p>This post is mostly about the build decisions, because the product looks simple from the outside, but the annoying parts were exactly where you would expect them to be: PDFs, printers, file watchers, and local-first privacy.</p>
<h2>In this post</h2>
<ul>
<li><p><a href="#the-problem-was-not-printing-it-was-repetition">The problem was not printing, it was repetition</a></p>
</li>
<li><p><a href="#why-i-made-it-a-desktop-app">Why I made it a desktop app</a></p>
</li>
<li><p><a href="#the-basic-workflow">The basic workflow</a></p>
</li>
<li><p><a href="#what-the-stack-looks-like">What the stack looks like</a></p>
</li>
<li><p><a href="#the-pdf-cropping-problem">The PDF cropping problem</a></p>
</li>
<li><p><a href="#why-local-first-matters-here">Why local-first matters here</a></p>
</li>
<li><p><a href="#the-free-converter">The free converter</a></p>
</li>
<li><p><a href="#what-i-would-do-differently">What I would do differently</a></p>
</li>
</ul>
<h2>The problem was not printing, it was repetition</h2>
<p>Most shipping platforms already know how to generate a label. Most thermal printers already know how to print one.</p>
<p>The gap is in the middle.</p>
<p>A lot of Australian sellers still end up with A4 label PDFs. That is fine if you are printing on office paper, folding it, and taping it to a parcel. It is painful if you have a proper thermal printer sitting next to you.</p>
<p>The label is usually only one part of the A4 page. The rest might be instructions, receipt details, blank space, or a packing slip. The seller has to turn that A4 page into a clean 4x6 label before printing.</p>
<p>There are workarounds. You can use Adobe Acrobat. You can screenshot. You can change printer scaling. You can use random online PDF tools. You can save presets if your printer driver behaves.</p>
<p>But none of that feels like a real workflow.</p>
<p>The workflow sellers actually want is:</p>
<ol>
<li><p>Download label.</p>
</li>
<li><p>Label prints.</p>
</li>
<li><p>Pack the order.</p>
</li>
</ol>
<p>That is it.</p>
<h2>Why I made it a desktop app</h2>
<p>This could have been a web app, but a web app would have made the core experience worse.</p>
<p>A web app cannot watch your Downloads folder properly. It cannot talk to your local printer the way a desktop app can. It also adds an awkward privacy question because users have to upload shipping labels somewhere.</p>
<p>Shipping labels contain names, addresses and order information. I did not want the main workflow to depend on uploading those PDFs to a server.</p>
<p>That pushed the product toward a local desktop app.</p>
<p>The app needed to:</p>
<ul>
<li><p>watch a folder on the user's machine</p>
</li>
<li><p>detect new PDF files</p>
</li>
<li><p>crop the right part of the page</p>
</li>
<li><p>remember printer settings</p>
</li>
<li><p>send the cropped label to the selected thermal printer</p>
</li>
<li><p>stay quiet when nothing needs attention</p>
</li>
</ul>
<p>It is not glamorous. It is very much a "make the boring thing disappear" product.</p>
<p>Those are often my favourite ones.</p>
<h2>The basic workflow</h2>
<p>The first version of <a href="https://labelchop.com/">LabelChop</a> is built around a simple loop.</p>
<p>The user chooses a folder, usually Downloads. They choose their thermal printer. They download a shipping label from MyPost Business, eBay, Shopify or another platform. LabelChop notices the file, crops it, and sends it to the printer.</p>
<p>No PDF editor. No manual crop box. No print dialog every time.</p>
<p>For sellers doing a few labels a month, this might be overkill. For sellers printing labels every day, the tiny savings compound quickly.</p>
<p>The goal was not to build a giant shipping platform. There are already enough of those.</p>
<p>The goal was to fix one painful step between buying the label and sticking it on the parcel.</p>
<h2>What the stack looks like</h2>
<p>The stack is fairly practical:</p>
<ul>
<li><p>Electron for the desktop shell</p>
</li>
<li><p>Next.js and React for the interface</p>
</li>
<li><p>pdf-lib for PDF manipulation</p>
</li>
<li><p>chokidar for file watching</p>
</li>
<li><p>Supabase for accounts and app state</p>
</li>
<li><p>Stripe for subscriptions</p>
</li>
</ul>
<p>Electron is not always the lightest choice, but for this use case it made sense. I wanted one codebase, a familiar UI stack, and enough native access to handle local files and printing.</p>
<p>The trick was keeping the app focused. Desktop apps can sprawl fast if you let them.</p>
<p>The early question was always: does this help a seller print labels faster?</p>
<p>If not, it could wait.</p>
<h2>The PDF cropping problem</h2>
<p>PDFs are where the boring part gets weird.</p>
<p>A label might appear in the top-left corner of an A4 page. Another platform might place it slightly differently. Some PDFs include multiple blocks of content. Some printer drivers interpret scaling in their own special way.</p>
<p>The app needed to produce a predictable 4x6 output without asking the user to understand PDF coordinates.</p>
<p>The simplest useful version was:</p>
<ul>
<li><p>take the A4 PDF</p>
</li>
<li><p>crop the label area</p>
</li>
<li><p>create a new 4x6 PDF</p>
</li>
<li><p>preserve enough quality for barcode scanning</p>
</li>
<li><p>send that clean PDF to the printer</p>
</li>
</ul>
<p>Barcodes made this less forgiving. A label that looks okay on screen can still scan badly if scaling or rasterisation gets messy.</p>
<p>So the product is less about "cropping a PDF" and more about producing something a thermal printer can handle reliably.</p>
<h2>Why local-first matters here</h2>
<p>I keep coming back to this point because it is easy to ignore when building tools quickly.</p>
<p>A shipping label is not just a file. It has customer details on it.</p>
<p>For the desktop app, the label processing happens locally. The point is to avoid uploading customer shipping labels just to crop them.</p>
<p>That also changes the trust story. A seller does not need to wonder where their customer's address went. The file is processed on their machine, then printed.</p>
<p>For a tool this small, that matters.</p>
<h2>The free converter</h2>
<p>I also made a free browser-based tool for one-off labels: <a href="https://labelchop.com/tools/a4-to-4x6-shipping-label-converter">the A4 to 4x6 shipping label converter</a>.</p>
<p>That tool is for people who only need to fix one label occasionally. Upload the A4 PDF, choose the crop position, download the 4x6 PDF, then print it.</p>
<p>It does not replace the desktop app. It is more like a pressure valve.</p>
<p>If you are printing labels once in a while, the free converter is enough.</p>
<p>If you download labels all day and want them to print without thinking about it, that is where <a href="https://labelchop.com/">LabelChop</a> makes more sense.</p>
<h2>What I would do differently</h2>
<p>I would start with the distribution earlier.</p>
<p>The product problem was obvious once I watched the workflow. The harder part is finding the sellers at the exact moment they are frustrated enough to search for a fix.</p>
<p>That means content like:</p>
<ul>
<li><p>how to crop MyPost Business A4 labels to 4x6</p>
</li>
<li><p>how to print Australia Post labels on a thermal printer</p>
</li>
<li><p>100x150mm label setup for Australian ecommerce sellers</p>
</li>
<li><p>how to fix shipping labels printing too small</p>
</li>
<li><p>thermal printer setup for eBay and Shopify labels</p>
</li>
</ul>
<p>Boring searches. High intent.</p>
<p>That is probably the lesson from this build. The best products are not always new categories. Sometimes they are small bridges between tools people already use.</p>
<p>LabelChop is one of those bridges.</p>
<p>It sits between the shipping platform and the printer, then tries to get out of the way.</p>
<p>If you sell online in Australia and keep fighting A4 shipping labels, you can try it here: <a href="https://labelchop.com/">LabelChop</a>.</p>
<p>For one-off conversions, use the free tool here: <a href="https://labelchop.com/tools/a4-to-4x6-shipping-label-converter">A4 to 4x6 shipping label converter</a>.</p>
]]></content:encoded></item></channel></rss>