<?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: Bhaskar Biswas</title>
    <description>The latest articles on DEV Community by Bhaskar Biswas (@bhaskarbiswas).</description>
    <link>https://dev.to/bhaskarbiswas</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%2F4009998%2F0417978b-fa40-4ef5-b90a-69114d706f5f.jpeg</url>
      <title>DEV Community: Bhaskar Biswas</title>
      <link>https://dev.to/bhaskarbiswas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhaskarbiswas"/>
    <language>en</language>
    <item>
      <title>How a Simple Word Counter Turned Into 50+ Browser-Based Tools in Just Three Weeks</title>
      <dc:creator>Bhaskar Biswas</dc:creator>
      <pubDate>Tue, 30 Jun 2026 18:55:14 +0000</pubDate>
      <link>https://dev.to/bhaskarbiswas/how-a-simple-word-counter-turned-into-50-browser-based-tools-in-just-three-weeks-3f1f</link>
      <guid>https://dev.to/bhaskarbiswas/how-a-simple-word-counter-turned-into-50-browser-based-tools-in-just-three-weeks-3f1f</guid>
      <description>&lt;p&gt;&lt;em&gt;Sometimes you don't start with a big idea. Sometimes you just need a Word Counter.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At the beginning of June 2026, I wasn't planning to build a platform.&lt;/p&gt;

&lt;p&gt;I wasn't trying to create the next startup.&lt;/p&gt;

&lt;p&gt;I just wanted to build a simple online tool.&lt;/p&gt;

&lt;p&gt;The first tool I wrote was a &lt;strong&gt;&lt;a href="https://freedesktools.com/tools/word-counter/" rel="noopener noreferrer"&gt;Word Counter&lt;/a&gt;&lt;/strong&gt;. Nothing fancy. Count words, characters, paragraphs, reading time—the kind of utility everyone has probably searched for at least once.&lt;/p&gt;

&lt;p&gt;I thought I'd build it, deploy it, learn a few things about Astro, and move on.&lt;/p&gt;

&lt;p&gt;That didn't happen.&lt;/p&gt;

&lt;p&gt;One tool became two.&lt;/p&gt;

&lt;p&gt;Two became five.&lt;/p&gt;

&lt;p&gt;Before I realized it, I had spent the next three weeks building more than 50 browser-based tools as part of &lt;a href="https://freedesktools.com" rel="noopener noreferrer"&gt;FreeDeskTools&lt;/a&gt;, a project that started as a simple experiment and gradually grew into something much bigger.&lt;/p&gt;

&lt;p&gt;Looking back, I learned much more than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Started With a Simple Question
&lt;/h2&gt;

&lt;p&gt;Whenever I searched for small online utilities, I noticed the same pattern.&lt;/p&gt;

&lt;p&gt;Some websites were overloaded with ads.&lt;/p&gt;

&lt;p&gt;Some asked me to upload files that never really needed to leave my computer.&lt;/p&gt;

&lt;p&gt;Some looked like they hadn't been updated in years.&lt;/p&gt;

&lt;p&gt;Others were surprisingly slow for something that should have finished in milliseconds.&lt;/p&gt;

&lt;p&gt;I kept thinking:&lt;/p&gt;

&lt;p&gt;"Most of these tools should just run in the browser."&lt;/p&gt;

&lt;p&gt;If a JSON formatter only formats text...&lt;/p&gt;

&lt;p&gt;Why should it send my data to a server?&lt;/p&gt;

&lt;p&gt;If an image can be resized locally...&lt;/p&gt;

&lt;p&gt;Why should I upload it?&lt;/p&gt;

&lt;p&gt;If a calculator is doing simple math...&lt;/p&gt;

&lt;p&gt;Why should there be network requests involved?&lt;/p&gt;

&lt;p&gt;That idea slowly became the foundation for everything I built afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing Astro
&lt;/h2&gt;

&lt;p&gt;Like many developers, I spent quite a bit of time comparing frameworks before writing the first line of code.&lt;/p&gt;

&lt;p&gt;I looked at several recent projects and different technology stacks.&lt;/p&gt;

&lt;p&gt;Eventually, I settled on &lt;strong&gt;Astro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not because it was the newest framework.&lt;/p&gt;

&lt;p&gt;Not because it was the most popular.&lt;/p&gt;

&lt;p&gt;But because it matched the kind of website I wanted to build.&lt;/p&gt;

&lt;p&gt;Performance mattered.&lt;/p&gt;

&lt;p&gt;SEO mattered.&lt;/p&gt;

&lt;p&gt;Shipping as little JavaScript as possible mattered.&lt;/p&gt;

&lt;p&gt;Astro checked those boxes really well.&lt;/p&gt;

&lt;p&gt;Since FreeDeskTools is primarily a collection of browser-based utilities, I didn't need a heavily hydrated application for every page.&lt;/p&gt;

&lt;p&gt;Most pages just needed to load quickly, explain what the tool does, and let the browser handle the actual work.&lt;/p&gt;

&lt;p&gt;That made Astro feel like the right fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Platform Took Longer Than Building the Tools
&lt;/h2&gt;

&lt;p&gt;One thing surprised me.&lt;/p&gt;

&lt;p&gt;Writing the tools wasn't actually the hardest part.&lt;/p&gt;

&lt;p&gt;Building the foundation was.&lt;/p&gt;

&lt;p&gt;During the first couple of weeks, I spent a lot of time creating reusable components.&lt;/p&gt;

&lt;p&gt;Instead of treating each tool as a completely separate page, I built a modular structure that could be reused throughout the project.&lt;/p&gt;

&lt;p&gt;Common layouts.&lt;/p&gt;

&lt;p&gt;Shared components.&lt;/p&gt;

&lt;p&gt;Reusable input controls.&lt;/p&gt;

&lt;p&gt;Consistent validation.&lt;/p&gt;

&lt;p&gt;SEO templates.&lt;/p&gt;

&lt;p&gt;Metadata.&lt;/p&gt;

&lt;p&gt;Category pages.&lt;/p&gt;

&lt;p&gt;Navigation.&lt;/p&gt;

&lt;p&gt;Search.&lt;/p&gt;

&lt;p&gt;Once those pieces were in place, adding new tools became dramatically easier.&lt;/p&gt;

&lt;p&gt;It took roughly &lt;strong&gt;20–22 days&lt;/strong&gt; to build the platform, create the reusable framework, and grow the collection to over 50 tools.&lt;/p&gt;

&lt;p&gt;Now adding a new tool feels much more like solving a problem than rebuilding a website.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Challenge Wasn't Technical
&lt;/h2&gt;

&lt;p&gt;At first, I thought the biggest challenge would be writing JavaScript.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;The hardest part was deciding &lt;strong&gt;what not to build&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Early on, I made a mistake.&lt;/p&gt;

&lt;p&gt;I started building tools that really weren't practical to run entirely in the browser.&lt;/p&gt;

&lt;p&gt;I kept trying to force them to work locally.&lt;/p&gt;

&lt;p&gt;The results weren't great.&lt;/p&gt;

&lt;p&gt;Some tools produced lower-quality output.&lt;/p&gt;

&lt;p&gt;Others became unnecessarily complicated.&lt;/p&gt;

&lt;p&gt;Eventually, I stopped and asked myself a simple question.&lt;/p&gt;

&lt;p&gt;"Am I building this because users actually need it, or because I want to say I have another tool?"&lt;/p&gt;

&lt;p&gt;That completely changed how I approached the project.&lt;/p&gt;

&lt;p&gt;Instead of trying to make every possible utility browser-based, I focused on problems that could genuinely be solved locally while maintaining high quality.&lt;/p&gt;

&lt;p&gt;That lesson probably saved me months of frustration.&lt;/p&gt;

&lt;p&gt;Sometimes saying no to a feature is the best technical decision you can make.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy Became a Design Constraint
&lt;/h2&gt;

&lt;p&gt;One decision I made early has shaped almost every tool since.&lt;/p&gt;

&lt;p&gt;Whenever possible:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No uploads.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That sounds simple.&lt;/p&gt;

&lt;p&gt;In reality, it changes everything.&lt;/p&gt;

&lt;p&gt;When processing happens inside the browser, you lose the convenience of powerful backend libraries.&lt;/p&gt;

&lt;p&gt;Memory becomes more important.&lt;/p&gt;

&lt;p&gt;Performance becomes more important.&lt;/p&gt;

&lt;p&gt;Different browsers behave differently.&lt;/p&gt;

&lt;p&gt;Large files become harder to manage.&lt;/p&gt;

&lt;p&gt;You spend a lot more time optimizing algorithms instead of simply calling an API.&lt;/p&gt;

&lt;p&gt;But I think it's worth it.&lt;/p&gt;

&lt;p&gt;If a task can be completed entirely on the user's device, that's usually the experience I'd rather provide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Tool Made Me Realize I Was on the Right Track&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recently I've been working on privacy-focused file utilities.&lt;/p&gt;

&lt;p&gt;One of my favorites so far is a &lt;strong&gt;Batch Photo EXIF Cleaner&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most people don't realize how much metadata a photo can contain.&lt;/p&gt;

&lt;p&gt;Location.&lt;/p&gt;

&lt;p&gt;Camera model.&lt;/p&gt;

&lt;p&gt;Date taken.&lt;/p&gt;

&lt;p&gt;Device information.&lt;/p&gt;

&lt;p&gt;Sometimes much more.&lt;/p&gt;

&lt;p&gt;Building a tool that removes that information locally, without uploading photos anywhere, was incredibly satisfying.&lt;/p&gt;

&lt;p&gt;That was one of those moments where I felt like I wasn't just building another online utility.&lt;/p&gt;

&lt;p&gt;I was solving a real problem.&lt;/p&gt;

&lt;p&gt;Those are the kinds of tools I want to keep building.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;The project is still very much a work in progress.&lt;/p&gt;

&lt;p&gt;There are plenty of ideas that won't make the cut.&lt;/p&gt;

&lt;p&gt;There are tools I'll probably rewrite entirely.&lt;/p&gt;

&lt;p&gt;There are mistakes I haven't made yet.&lt;/p&gt;

&lt;p&gt;And honestly, that's part of the fun.&lt;/p&gt;

&lt;p&gt;I'm not trying to build the biggest collection of online tools.&lt;/p&gt;

&lt;p&gt;I'm trying to build a collection that people can trust.&lt;/p&gt;

&lt;p&gt;Fast.&lt;/p&gt;

&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;Privacy-first.&lt;/p&gt;

&lt;p&gt;Browser-based whenever it genuinely makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you've been thinking about starting a side project, here's one thing I'd say.&lt;/p&gt;

&lt;p&gt;Don't wait for the perfect idea.&lt;/p&gt;

&lt;p&gt;I didn't wake up one morning planning to build 50+ browser-based tools.&lt;/p&gt;

&lt;p&gt;I started with a Word Counter.&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;Sometimes the first project isn't the destination.&lt;/p&gt;

&lt;p&gt;It's just the beginning of a much bigger one.&lt;/p&gt;

&lt;p&gt;So build the small thing.&lt;/p&gt;

&lt;p&gt;Ship it.&lt;/p&gt;

&lt;p&gt;Learn from it.&lt;/p&gt;

&lt;p&gt;Then build the next one.&lt;/p&gt;

&lt;p&gt;You never know where it might lead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curious to See the Project?
&lt;/h2&gt;

&lt;p&gt;If you'd like to see what I've been building, you can explore FreeDeskTools: &lt;a href="https://freedesktools.com" rel="noopener noreferrer"&gt;https://freedesktools.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm continuing to build &lt;strong&gt;FreeDeskTools&lt;/strong&gt;, adding new browser-based utilities and experimenting with ways to solve everyday problems while keeping privacy and performance at the center of every decision.&lt;/p&gt;

&lt;p&gt;If you've built a side project that unexpectedly grew into something much bigger, I'd love to hear your story in the comments.&lt;/p&gt;

</description>
      <category>astro</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
