<?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: Indie Maker</title>
    <description>The latest articles on DEV Community by Indie Maker (@indiemaker).</description>
    <link>https://dev.to/indiemaker</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%2F4153644%2F797c4242-6e6d-414f-928c-5539b164039f.png</url>
      <title>DEV Community: Indie Maker</title>
      <link>https://dev.to/indiemaker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/indiemaker"/>
    <language>en</language>
    <item>
      <title>Free tiers die quietly — so I verify every link in my directory, every week</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Tue, 20 Oct 2026 03:36:18 +0000</pubDate>
      <link>https://dev.to/indiemaker/free-tiers-die-quietly-so-i-verify-every-link-in-my-directory-every-week-i8l</link>
      <guid>https://dev.to/indiemaker/free-tiers-die-quietly-so-i-verify-every-link-in-my-directory-every-week-i8l</guid>
      <description>&lt;p&gt;Every "free stuff" directory on the internet has the same disease: rot. A free tier gets quietly shrunk, a startup sunsets its free plan, a landing page starts redirecting to a pricing page — and the directory keeps cheerfully sending people to a deal that no longer exists. Half the links in most directories are lying to you; they just don't know it yet.&lt;/p&gt;

&lt;p&gt;I know because I built one of these directories, and keeping it honest turned out to be the entire job. Collecting the links took a weekend. Verifying them forever is the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  The verification loop
&lt;/h2&gt;

&lt;p&gt;Every entry in my directory gets re-checked automatically once a week. The checker follows each outbound link and looks for the obvious failure modes: the page is gone, the domain is parked, the "free" plan now requires a credit card, the offer text changed beyond recognition.&lt;/p&gt;

&lt;p&gt;Two design decisions mattered more than the checker itself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show the check date on every card.&lt;/strong&gt; Each listing displays when it was last verified — "Checked Oct 12, 2026" — right on the card. A directory that hides its freshness is asking for trust it hasn't earned. If a check is stale, the user can see that and discount accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't delete on the first failure.&lt;/strong&gt; Sites throw 403s at bots and redirect chains break for innocent reasons. My rule: a failed check flags the entry for review; repeated failures across consecutive weeks get it pulled. One strike is a warning, not a verdict. I've manually re-checked flagged entries and found plenty of false alarms — bot protection doing its job, not a dead offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honesty rules
&lt;/h2&gt;

&lt;p&gt;A directory of free things lives or dies on whether people believe the word "free". So the rules are strict:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official offers only.&lt;/strong&gt; Free products and official free tiers from the provider itself. No pirated streams, no keygens, no "free" download sites. If it's not on the provider's own site, it's not listed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paid promos are labeled paid.&lt;/strong&gt; During Black Friday season I run a deals category — and every paid deal in it is marked PAID in plain sight, with its end date. Mixing paid deals into "free" listings without labels is how directories sell out their users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credit-card-required gets said out loud.&lt;/strong&gt; A "free tier" that demands a card upfront is a trial in a trench coat. It's still listable if it's genuinely useful — but the card requirement goes in the listing, not in fine print.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I actually spend time on
&lt;/h2&gt;

&lt;p&gt;People assume a directory is a content problem: write more listings. It isn't. The weekly work is janitorial — re-checking flags, confirming a tier really died before pulling it, replacing a dead offer with a live alternative. The list stays around 270 entries not because I can't find more "free" things, but because that's what I can keep verified.&lt;/p&gt;

&lt;p&gt;The flip side is that verification is a moat a scraped directory can't copy. Anyone can export 5,000 links. Almost nobody re-checks them.&lt;/p&gt;




&lt;p&gt;The directory is FreeHub (&lt;a href="https://free.toppn.com/" rel="noopener noreferrer"&gt;https://free.toppn.com/&lt;/a&gt;) — 269 freebies across VPS &amp;amp; cloud, hosting, storage, domains &amp;amp; SSL, VPN, streaming, and dev tools, every one re-checked weekly with the date shown. If you rely on a free tier I haven't listed — or you've spotted one of my listings going stale — I genuinely want to hear about it. Keeping the list honest is a group project.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>A financial calculator is only as good as its formula</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Mon, 19 Oct 2026 09:19:18 +0000</pubDate>
      <link>https://dev.to/indiemaker/a-financial-calculator-is-only-as-good-as-its-formula-3gj8</link>
      <guid>https://dev.to/indiemaker/a-financial-calculator-is-only-as-good-as-its-formula-3gj8</guid>
      <description>&lt;p&gt;Online financial calculators have a trust problem. You type in your numbers, a monthly payment appears, and you have no idea what math produced it. Was that mortgage calc using monthly or semi-annual compounding? Does the tax calculator include state tax? Which year's brackets? Usually, you can't tell — the formula is hidden.&lt;/p&gt;

&lt;p&gt;I think the fix is embarrassingly simple: publish the formula. Here's what that looks like in practice, from building a set of financial calculators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show the math on the page
&lt;/h2&gt;

&lt;p&gt;Every calculator should display the actual formula it uses, with the variables labeled. For compound interest, that's &lt;code&gt;A = P(1 + r/n)^(nt)&lt;/code&gt; — and then define each symbol in plain language. This does two things: users can verify the result by hand, and other developers can spot your mistakes. Both have happened to me, and both made the tool better.&lt;/p&gt;

&lt;h2&gt;
  
  
  State your assumptions explicitly
&lt;/h2&gt;

&lt;p&gt;A mortgage calculator isn't just a formula — it's a stack of assumptions: compounding frequency, whether property tax and insurance are included, how extra payments are applied. List them next to the result. The calculators people trust most are the ones that say "here's what I assumed" instead of pretending there's one true answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it client-side
&lt;/h2&gt;

&lt;p&gt;Financial numbers are sensitive. Running the calculation entirely in the browser means the numbers never leave the user's device — there's no server log of someone's salary or mortgage balance to leak. As a bonus, results update instantly as you type, which makes the tool feel dramatically better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test against known values
&lt;/h2&gt;

&lt;p&gt;Before shipping, verify each calculator against authoritative sources: IRS tax tables for the income tax calc, bank-published amortization examples for mortgages. Write these as actual test cases, not eyeball checks. One wrong assumption in a refinance calculator can cost a real person real money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write guides, not just inputs
&lt;/h2&gt;

&lt;p&gt;Most people don't know what "points" or "PMI" mean. A short plain-English explanation next to each input turns a calculator from a black box into a learning tool — and it's what separates a useful page from a commodity widget.&lt;/p&gt;




&lt;p&gt;I applied all of this building CalcWise (&lt;a href="https://finance.toppn.com/" rel="noopener noreferrer"&gt;https://finance.toppn.com/&lt;/a&gt;) — 9 free financial calculators covering compound interest, mortgage, refinance, credit-card payoff, retirement, investing, income tax, ROI and profit margin. Formulas published, everything runs locally in the browser, no sign-up. The most valuable feedback I've gotten wasn't feature requests — it was people checking my math. That's exactly the dynamic you want.&lt;/p&gt;

</description>
      <category>finance</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I was sick of subscriptions for basic PDF tasks, so I built a pay-per-use toolbox</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Sun, 18 Oct 2026 07:44:07 +0000</pubDate>
      <link>https://dev.to/indiemaker/i-was-sick-of-subscriptions-for-basic-pdf-tasks-so-i-built-a-pay-per-use-toolbox-4ea</link>
      <guid>https://dev.to/indiemaker/i-was-sick-of-subscriptions-for-basic-pdf-tasks-so-i-built-a-pay-per-use-toolbox-4ea</guid>
      <description>&lt;p&gt;I merge PDFs maybe twice a month. Split one occasionally. Compress one when Gmail complains it's too big.&lt;/p&gt;

&lt;p&gt;For this, my options were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Adobe Acrobat&lt;/strong&gt; — a monthly subscription, for something I do twice a month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Free" online tools&lt;/strong&gt; — plastered with ads, capped at 2 tasks a day unless you pay, and who knows where your files go.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A desktop app from 2009&lt;/strong&gt; — you know the one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these felt right, so I built the thing I actually wanted: &lt;a href="https://pdfbox.syncpage.net" rel="noopener noreferrer"&gt;PDF Toolbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; merge, split, compress, plus Word / PPT / Excel → PDF. Six tools, that's it. No editor, no e-sign, no "AI-powered" anything — the boring stuff, done well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it's priced:&lt;/strong&gt; no subscription. You buy credits, they never expire. Use 3 this month and 0 the next — you pay nothing in between. First 3 conversions are free, no account needed. Files auto-delete after 2 days (it's a toolbox, not a storage service).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why pay-per-use?&lt;/strong&gt; Honestly, this is the experiment. Subscriptions are great for the vendor and terrible for the twice-a-month user. Ad-supported "free" means you're the product and your PDFs are training data. Credits felt like the honest middle: you pay for exactly what you use, nothing else.&lt;/p&gt;

&lt;p&gt;The part I'm still unsure about: &lt;strong&gt;do people actually want this, or does everyone just expect PDF tools to be free?&lt;/strong&gt; I've watched too many indie makers (myself included) build something reasonable and discover the market's answer is "cool, but I'd rather watch ads."&lt;/p&gt;

&lt;p&gt;So here's my ask: try the 3 free conversions, and tell me straight — would you ever pay per use for this, or is PDF tooling a race to free that nobody wins?&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>saas</category>
      <category>sideprojects</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I got tired of "can you see my screen?" so I built a shared reading room for documents</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Sun, 18 Oct 2026 05:30:19 +0000</pubDate>
      <link>https://dev.to/indiemaker/i-got-tired-of-can-you-see-my-screen-so-i-built-a-shared-reading-room-for-documents-32d9</link>
      <guid>https://dev.to/indiemaker/i-got-tired-of-can-you-see-my-screen-so-i-built-a-shared-reading-room-for-documents-32d9</guid>
      <description>&lt;p&gt;Every document review I've ever been part of goes like this: someone shares their screen, the PDF is too small to read, they scroll while you're still on page two, and half the meeting is "can you see my screen? …how about now?"&lt;/p&gt;

&lt;p&gt;I kept thinking: why are we all staring at one person's screen, when the document itself could be the shared space?&lt;/p&gt;

&lt;p&gt;So I built SyncPage (&lt;a href="https://syncpage.app" rel="noopener noreferrer"&gt;https://syncpage.app&lt;/a&gt;). The idea is simple: every document gets its own room. You upload a PDF, a deck, a spreadsheet — everyone opens the same document in their own browser, and you can see each other's cursors and annotations live. The presenter can pull everyone to the page they're on, or people can wander off and read independently, then snap back with one click. Voice is built in, so you don't need a separate call running alongside.&lt;/p&gt;

&lt;p&gt;A few things I was deliberate about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Guests don't need an account.&lt;/strong&gt; You send a link, they click, they're in the room. Every signup wall I removed increased the odds someone would actually show up to the review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. It handles real office documents, not just PDFs.&lt;/strong&gt; Word, PowerPoint, Excel — the stuff people actually review — with annotations that stick to the document.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Presenter sync &lt;em&gt;and&lt;/em&gt; independent reading.&lt;/strong&gt; Most tools pick one: either everyone's locked to the presenter's screen, or everyone's on their own and nobody knows which page you're talking about. We do both — follow the presenter, or break away and rejoin whenever you want.&lt;/p&gt;

&lt;p&gt;It's a small bootstrapped team (five of us) and very much a work in progress. Web, Windows, and Android are out; macOS and iOS are next.&lt;/p&gt;

&lt;p&gt;If you do document reviews with a team — or if you've ever sat through the "can you see my screen" dance — I'd love to hear how you handle it, and what you'd want from a tool like this.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>collaboration</category>
    </item>
    <item>
      <title>I got tired of "free tools" lists full of dead links, so I built one that checks itself every week</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Thu, 08 Oct 2026 05:09:25 +0000</pubDate>
      <link>https://dev.to/indiemaker/i-got-tired-of-free-tools-lists-full-of-dead-links-so-i-built-one-that-checks-itself-every-week-1f5g</link>
      <guid>https://dev.to/indiemaker/i-got-tired-of-free-tools-lists-full-of-dead-links-so-i-built-one-that-checks-itself-every-week-1f5g</guid>
      <description>&lt;p&gt;Every few months I go looking for a free tier of something — a VPS to host a side project, an API with a generous free plan, a free font for a landing page. And every time, the same thing happens: I open one of those "100+ free tools" listicles, click the third link, and land on a pricing page that killed its free tier two years ago. Or a domain that's now parked.&lt;/p&gt;

&lt;p&gt;The lists aren't malicious. They just rot. Nobody goes back to re-check 100 links.&lt;/p&gt;

&lt;p&gt;So I built the thing I kept wishing existed: a directory of legitimate freebies where &lt;strong&gt;every outbound link is re-verified automatically, every single week&lt;/strong&gt;. Dead, paywalled, or quietly-changed offers get flagged and removed. New additions only go live after manual verification.&lt;/p&gt;

&lt;p&gt;It's called &lt;strong&gt;FreeHub&lt;/strong&gt; — &lt;a href="https://free.toppn.com/" rel="noopener noreferrer"&gt;https://free.toppn.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right now it tracks &lt;strong&gt;258 free products and free tiers&lt;/strong&gt; across 7 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free VPS &amp;amp; cloud servers (Oracle Cloud's always-free tier, etc.)&lt;/li&gt;
&lt;li&gt;Free web &amp;amp; app hosting&lt;/li&gt;
&lt;li&gt;Free cloud storage&lt;/li&gt;
&lt;li&gt;Free streaming (100% licensed — no piracy, no risk)&lt;/li&gt;
&lt;li&gt;Free domains, SSL &amp;amp; CDN&lt;/li&gt;
&lt;li&gt;Free VPN &amp;amp; privacy tools (only trustworthy ones — no shady "free" VPNs)&lt;/li&gt;
&lt;li&gt;Free dev &amp;amp; AI tools (GPUs, repos, APIs, design)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few things I was deliberate about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Facts over marketing copy.&lt;/strong&gt; Each listing shows the actual free tier (not "free!" with the asterisk doing heavy lifting), plus limits and how to claim it. If a free tier needs a credit card for verification, it says so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. No paid rankings.&lt;/strong&gt; It's a directory, not an affiliate farm. Placement isn't for sale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. It stays fresh by design, not by discipline.&lt;/strong&gt; The weekly check is automated — I don't have to remember to do it, which means it actually happens.&lt;/p&gt;

&lt;p&gt;It's a side project and very much a work in progress. If you know a legitimate free tier that's missing, or spot a dead link I missed, I'd genuinely love to hear about it in the comments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://free.toppn.com/" rel="noopener noreferrer"&gt;https://free.toppn.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>14 Tools, Zero Servers: How I Built a Whole Utility Belt That Runs 100% in Your Browser</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Mon, 05 Oct 2026 13:48:42 +0000</pubDate>
      <link>https://dev.to/indiemaker/14-tools-zero-servers-how-i-built-a-whole-utility-belt-that-runs-100-in-your-browser-55pg</link>
      <guid>https://dev.to/indiemaker/14-tools-zero-servers-how-i-built-a-whole-utility-belt-that-runs-100-in-your-browser-55pg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is part 2 of my browser-local tools series. In &lt;a href="https://dev.to/indiemaker/your-files-dont-need-to-leave-the-device-building-browser-local-tools-3doa"&gt;part 1&lt;/a&gt; I argued that your files don't need to leave the device. This time, the full tour: 14 utilities I shipped that run 100% in the browser — each with the 30-second "how it actually works" for fellow devs. If you code, steal these patterns. If you don't, just bookmark the tools.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The whole collection lives at &lt;a href="https://tools.toppn.com/" rel="noopener noreferrer"&gt;Quick Toolbox&lt;/a&gt; — free, no sign-up, and every tool works offline after the first load. Here's what's inside.&lt;/p&gt;

&lt;h2&gt;
  
  
  🖼️ Image tools: the Canvas API does all the heavy lifting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/image-compress.html" rel="noopener noreferrer"&gt;Image Compressor&lt;/a&gt;&lt;/strong&gt; — Shrink JPG/PNG/WebP photos before sending them anywhere. Under the hood it's three lines of real work: &lt;code&gt;createImageBitmap(file)&lt;/code&gt; to decode, &lt;code&gt;drawImage()&lt;/code&gt; onto a canvas at the target size, then &lt;code&gt;canvas.toBlob(callback, 'image/jpeg', quality)&lt;/code&gt; where the quality slider maps straight to that third argument. A 4MB phone photo becomes ~300KB at quality 0.8 with no visible difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/image-convert.html" rel="noopener noreferrer"&gt;Image Converter&lt;/a&gt;&lt;/strong&gt; — Same pipeline, different MIME type. JPG ↔ PNG ↔ WebP, which covers 99% of real-world needs. The trick most people miss: converting PNG screenshots to WebP typically cuts 60–80% of the bytes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/image-resize.html" rel="noopener noreferrer"&gt;Image Resizer&lt;/a&gt;&lt;/strong&gt; — Set exact pixel dimensions or scale by percentage, with aspect-ratio lock so nothing gets stretched. Also lets you switch output format in the same pass — resize &lt;em&gt;and&lt;/em&gt; convert in one click.&lt;/p&gt;

&lt;h2&gt;
  
  
  📄 PDF tools: yes, entirely in the browser
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/pdf-merge.html" rel="noopener noreferrer"&gt;PDF Merger&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/pdf-split.html" rel="noopener noreferrer"&gt;PDF Splitter&lt;/a&gt;&lt;/strong&gt; — The flow: &lt;code&gt;FileReader&lt;/code&gt; → &lt;code&gt;ArrayBuffer&lt;/code&gt; → a PDF library running in the page → &lt;code&gt;copyPages()&lt;/code&gt; into a new document → save → trigger download. No server ever sees the bytes. This is the one I care about most: contracts, ID scans, bank statements — the exact documents you should &lt;em&gt;never&lt;/em&gt; upload to a random "free PDF tool" site.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⌨️ Text &amp;amp; dev tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/json-formatter.html" rel="noopener noreferrer"&gt;JSON Formatter &amp;amp; Validator&lt;/a&gt;&lt;/strong&gt; — &lt;code&gt;JSON.parse()&lt;/code&gt; in a try/catch; on failure it maps the character offset from the error message back to a line and column so you see &lt;em&gt;exactly&lt;/em&gt; where the trailing comma is. Beautify, minify, one click each.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/base64.html" rel="noopener noreferrer"&gt;Base64 Encode &amp;amp; Decode&lt;/a&gt;&lt;/strong&gt; — The classic pitfall: &lt;code&gt;btoa()&lt;/code&gt; throws on anything outside Latin-1. The fix is &lt;code&gt;TextEncoder&lt;/code&gt; → bytes → &lt;code&gt;btoa(String.fromCharCode(...bytes))&lt;/code&gt;, and the reverse with &lt;code&gt;TextDecoder&lt;/code&gt; on decode. Full Unicode support, which half the online converters get wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/timestamp.html" rel="noopener noreferrer"&gt;Timestamp Converter&lt;/a&gt;&lt;/strong&gt; — Paste &lt;code&gt;1690000000&lt;/code&gt; or &lt;code&gt;1690000000000&lt;/code&gt;, it figures out seconds vs. milliseconds with a magnitude heuristic and converts to readable date/time (Beijing Time included). Every backend dev has needed this at 2am.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/password-generator.html" rel="noopener noreferrer"&gt;Password Generator&lt;/a&gt;&lt;/strong&gt; — Custom length and character sets, built on &lt;code&gt;crypto.getRandomValues()&lt;/code&gt; — never &lt;code&gt;Math.random()&lt;/code&gt; for anything security-adjacent. Generated locally, so the password literally never exists anywhere but your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/uuid.html" rel="noopener noreferrer"&gt;UUID Generator&lt;/a&gt;&lt;/strong&gt; — &lt;code&gt;crypto.randomUUID()&lt;/code&gt; in a loop, bulk-generate and copy them all with one click. Boring, essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/qrcode.html" rel="noopener noreferrer"&gt;QR Code Generator&lt;/a&gt;&lt;/strong&gt; — A QR encoding library running in JS renders to &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;, and you download the PNG. Text, URLs, Wi-Fi credentials — handy for sharing a link from desktop to phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/word-counter.html" rel="noopener noreferrer"&gt;Word Counter&lt;/a&gt;&lt;/strong&gt; — Handles mixed-language text (English words + CJK characters counted sensibly) and estimates reading time. Writers and translators use this daily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/case-converter.html" rel="noopener noreferrer"&gt;Case Converter&lt;/a&gt;&lt;/strong&gt; — UPPERCASE, lowercase, Title Case, camelCase, snake_case — regex transforms, one click. The kind of thing you need twelve times a day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.toppn.com/tools/color-converter.html" rel="noopener noreferrer"&gt;Color Converter&lt;/a&gt;&lt;/strong&gt; — HEX ↔ RGB ↔ HSL with a live picker preview. Front-end devs: stop Googling "hex to rgb" forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same philosophy, money edition: CalcWise
&lt;/h2&gt;

&lt;p&gt;I applied the same "runs locally, nothing uploaded" idea to personal finance. &lt;a href="https://finance.toppn.com/" rel="noopener noreferrer"&gt;CalcWise&lt;/a&gt; is a set of financial calculators — mortgage, compound interest, retirement planning, ROI — each paired with a plain-English guide that explains the math instead of just spitting out a number. Your salary numbers stay in your browser, where they belong.&lt;/p&gt;

&lt;h2&gt;
  
  
  And a directory of actually-free stuff: FreeHub
&lt;/h2&gt;

&lt;p&gt;While building these I kept running into "free" tools with gotchas, so I started &lt;a href="https://free.toppn.com/" rel="noopener noreferrer"&gt;FreeHub&lt;/a&gt; — a directory of verified free tiers and deals: VPS hosts, cloud storage, domains, streaming, dev tools. Every entry is checked against the official site; anything that shut down or paywalled gets removed. If you're hunting for free infrastructure for your side project, start there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Everything above is free, no account, no tracking of what you do with the tools. The pattern behind all of it is simple: if the browser can do it — and in 2026 it can do &lt;em&gt;a lot&lt;/em&gt; — there's no reason to involve a server.&lt;/p&gt;

&lt;p&gt;What utility do you wish existed as a zero-server browser tool? Drop it in the comments — the most-requested one gets built next. 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>privacy</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Your files don't need to leave the device: building browser-local tools</title>
      <dc:creator>Indie Maker</dc:creator>
      <pubDate>Thu, 01 Oct 2026 05:22:34 +0000</pubDate>
      <link>https://dev.to/indiemaker/your-files-dont-need-to-leave-the-device-building-browser-local-tools-3doa</link>
      <guid>https://dev.to/indiemaker/your-files-dont-need-to-leave-the-device-building-browser-local-tools-3doa</guid>
      <description>&lt;p&gt;Most "free online tools" work like this: you upload your file to a server, it does the work, you download the result. For many tasks, that round trip is pointless — your browser can do the whole job locally, faster and more privately.&lt;/p&gt;

&lt;p&gt;I learned this building a small toolbox of utilities, and the pattern is simpler than people expect. Here's the playbook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading files without uploading.&lt;/strong&gt; The File API gives you everything: an &lt;code&gt;&amp;lt;input type="file"&amp;gt;&lt;/code&gt; plus &lt;code&gt;URL.createObjectURL()&lt;/code&gt; lets you work with the file entirely in memory. No &lt;code&gt;fetch&lt;/code&gt;, no &lt;code&gt;FormData&lt;/code&gt;, no server involved at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Images: canvas does the heavy lifting.&lt;/strong&gt; Compression and format conversion are just &lt;code&gt;drawImage&lt;/code&gt; into a canvas followed by &lt;code&gt;canvas.toBlob()&lt;/code&gt; with a quality setting, or &lt;code&gt;toDataURL('image/webp')&lt;/code&gt; for conversion. Resizing is the same pipeline. The browser's image decoders are excellent — you get quality comparable to server-side tools for the common cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PDFs: real libraries run in the browser now.&lt;/strong&gt; pdf-lib can merge and split PDFs purely client-side; pdf.js renders previews. These are the same libraries server tools use, just bundled for the browser. The main gotcha is memory: a 200MB PDF will hurt on a low-end phone, so process in chunks where you can and warn the user before tackling huge files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Text and dev utilities are trivially local.&lt;/strong&gt; JSON formatting, Base64, UUIDs, hashing, QR codes — all pure functions. There's never a reason for these to touch a network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The architecture payoff.&lt;/strong&gt; With zero backend, the whole thing is a static site. Hosting costs next to nothing, there are no servers to scale, and the privacy story writes itself: files never leave the device because there's nowhere for them to go. That's not a marketing line — it's a structural guarantee.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to watch out for.&lt;/strong&gt; Mobile Safari has quirks around large blobs and downloads; always test the download step (&lt;code&gt;a[download]&lt;/code&gt; + object URL) on real devices. And be honest about limits: browser-local can't do OCR well or handle truly massive files — say so in the UI instead of failing mysteriously.&lt;/p&gt;

&lt;p&gt;I put this approach into practice with Quick Toolbox (&lt;a href="https://tools.toppn.com/" rel="noopener noreferrer"&gt;https://tools.toppn.com/&lt;/a&gt;) — 14 free utilities, all client-side, no sign-up. If you're building tools like these, start local-first and only add a server when the browser genuinely can't do the job.&lt;/p&gt;

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