<?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: Toan Nguyen</title>
    <description>The latest articles on DEV Community by Toan Nguyen (@vinhtoan3197).</description>
    <link>https://dev.to/vinhtoan3197</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%2F4201771%2Fcb0f6f3c-2a51-4953-ad70-48db30e24e09.png</url>
      <title>DEV Community: Toan Nguyen</title>
      <link>https://dev.to/vinhtoan3197</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vinhtoan3197"/>
    <language>en</language>
    <item>
      <title>I built JoyTools (tools.joydii.com) — 100+ free dev, SQL, and PDF utilities without the annoying limits</title>
      <dc:creator>Toan Nguyen</dc:creator>
      <pubDate>Fri, 23 Oct 2026 07:23:08 +0000</pubDate>
      <link>https://dev.to/vinhtoan3197/i-built-joytools-toolsjoydiicom-100-free-dev-sql-and-pdf-utilities-without-the-annoying-848</link>
      <guid>https://dev.to/vinhtoan3197/i-built-joytools-toolsjoydiicom-100-free-dev-sql-and-pdf-utilities-without-the-annoying-848</guid>
      <description>&lt;p&gt;Most of us have a messy folder of bookmarks for daily dev tasks: one site for formatting JSON, another for testing regex, a random site for converting cURL commands, and a sketchy PDF compressor that suddenly asks for a credit card after two files.&lt;/p&gt;

&lt;p&gt;I got tired of jumping between a dozen ad-heavy tabs and hitting arbitrary daily limits, so I built &lt;strong&gt;JoyTools&lt;/strong&gt; (&lt;a href="https://tools.joydii.com" rel="noopener noreferrer"&gt;https://tools.joydii.com&lt;/a&gt;) to put everything my team and I actually use into one clean workspace.&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%2Fpxzjemxyt3n5vxlkrm0e.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%2Fpxzjemxyt3n5vxlkrm0e.png" alt="JoyTools (tools.joydii.com) dashboard with 104+ free developer and file utilities" width="799" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Caption: The main dashboard on JoyTools (tools.joydii.com)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it's built: Client-side speed vs. Server-side heavy lifting
&lt;/h3&gt;

&lt;p&gt;When building a multi-tool platform, a lot of people try to force &lt;em&gt;everything&lt;/em&gt; into the browser. That works great for text, but it falls apart when you need heavy binary processing or high-accuracy AI models. &lt;/p&gt;

&lt;p&gt;So I took a practical hybrid approach with &lt;strong&gt;JoyTools&lt;/strong&gt; (&lt;code&gt;tools.joydii.com&lt;/code&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client-side for text, code, and tokens:&lt;/strong&gt; Anything involving code formatting, JSON payloads, JWT decoding, SQL queries, or webhook secrets runs right in your browser. Your config files and API keys don't need to touch a backend just to be formatted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless server processing for heavy files:&lt;/strong&gt; Trying to run high-quality PDF compression or AI background removal purely in browser WASM often eats up gigs of RAM and still produces mediocre results. For heavy tasks like &lt;strong&gt;PDF compression/conversion&lt;/strong&gt; and the &lt;strong&gt;AI Background Remover&lt;/strong&gt;, the computation happens on the server so it stays fast and accurate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero data collection:&lt;/strong&gt; Even when a tool uses the server for heavy lifting, it is strictly stateless. Files are processed in memory, returned to your browser, and immediately wiped. There are no user accounts, no tracking of your inputs, and no database logging what you upload.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  A few tools from the 104+ collection I use the most
&lt;/h3&gt;

&lt;p&gt;Instead of just making another Base64 encoder, I focused on the specific friction points in my daily workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dialect-Specific SQL Formatters:&lt;/strong&gt; Generic SQL beautifiers usually break when they see platform-specific syntax. I added dedicated formatters for &lt;strong&gt;Google Cloud BigQuery&lt;/strong&gt;, &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;Oracle PL/SQL&lt;/strong&gt;, and &lt;strong&gt;MySQL&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook Signature Verifier:&lt;/strong&gt; If you work with Stripe, Shopify, or GitHub webhooks, you can drop the raw payload and secret here to verify HMAC signatures without spinning up a local script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cURL &amp;amp; TypeScript Generators:&lt;/strong&gt; Turn raw &lt;code&gt;cURL&lt;/code&gt; requests copied from Chrome DevTools straight into &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;Axios&lt;/code&gt;, Python, or Go code, or generate clean &lt;strong&gt;TypeScript interfaces&lt;/strong&gt; from complex JSON responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Token Counter &amp;amp; Cost Calculator:&lt;/strong&gt; Quickly check how many tokens a long prompt takes and compare API costs across OpenAI (GPT-4o/o3), Claude, and Gemini before running batch jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practical PDF &amp;amp; Image Tools:&lt;/strong&gt; Merging PDFs, shrinking PDFs under 1MB for strict government/visa upload portals, scrubbing EXIF/GPS metadata from photos, and removing backgrounds cleanly.&lt;/li&gt;
&lt;/ul&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%2F32zzwgoyxffz50twn7ra.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%2F32zzwgoyxffz50twn7ra.png" alt="AI Background Remover and Developer Tools on JoyTools (tools.joydii.com)" width="799" height="469"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Caption: AI Background Remover and utilities on JoyTools (tools.joydii.com)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it out
&lt;/h3&gt;

&lt;p&gt;You can check it out here: &lt;strong&gt;&lt;a href="https://tools.joydii.com" rel="noopener noreferrer"&gt;JoyTools — Free Online Developer &amp;amp; File Utilities (tools.joydii.com)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everything is completely free to use with no login walls. &lt;/p&gt;

&lt;p&gt;If you give it a spin, let me know how it feels on your end. Are there any specific utilities or annoying file conversions you find yourself googling every week? Tell me in the comments and I'll try to add them in the next update.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
