<?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: Sylar</title>
    <description>The latest articles on DEV Community by Sylar (@sylar_837ff17f3f5697f8305).</description>
    <link>https://dev.to/sylar_837ff17f3f5697f8305</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%2F3970954%2Fb58b66d3-8b73-47f5-afc3-a1767479da6f.png</url>
      <title>DEV Community: Sylar</title>
      <link>https://dev.to/sylar_837ff17f3f5697f8305</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sylar_837ff17f3f5697f8305"/>
    <language>en</language>
    <item>
      <title>How I built file tools that never upload your files (Canvas API + Web Workers)</title>
      <dc:creator>Sylar</dc:creator>
      <pubDate>Thu, 25 Jun 2026 01:05:45 +0000</pubDate>
      <link>https://dev.to/sylar_837ff17f3f5697f8305/how-i-built-file-tools-that-never-upload-your-files-canvas-api-web-workers-1ha</link>
      <guid>https://dev.to/sylar_837ff17f3f5697f8305/how-i-built-file-tools-that-never-upload-your-files-canvas-api-web-workers-1ha</guid>
      <description>&lt;p&gt;Most "free online file tools" upload your file to a server, do the work there, and send it back. For a lot of tasks that is unnecessary and, honestly, a privacy smell. When I built &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;Filuni&lt;/a&gt; (a free toolbox of 121 file tools), I made a rule: if the browser can do the job, the file should never leave the device. Here is how that actually works and where it breaks down.&lt;/p&gt;

&lt;h2&gt;
  
  
  What runs fully in the browser
&lt;/h2&gt;

&lt;p&gt;For images, text and JSON, everything happens client-side. A few concrete examples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image compression / resize / crop&lt;/strong&gt; — load the file into an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; or &lt;code&gt;createImageBitmap()&lt;/code&gt;, draw it onto a &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; at the target size, then export with &lt;code&gt;canvas.toBlob(blob =&amp;gt; ..., 'image/jpeg', quality)&lt;/code&gt;. No upload, no round trip.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bitmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createImageBitmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OffscreenCanvas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;targetH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2d&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;drawImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bitmap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;targetW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;targetH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;convertToBlob&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;image/jpeg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;quality&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Heavy text / JSON work&lt;/strong&gt; — formatting, diffing, regex testing on large inputs can block the main thread. Move it into a Web Worker so the UI stays responsive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Worker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;format.worker.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bigJsonString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onmessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;OffscreenCanvas&lt;/code&gt; inside a worker means even the image work never touches the main thread.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the browser is not enough
&lt;/h2&gt;

&lt;p&gt;Being honest about the limits matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Video / audio transcoding&lt;/strong&gt; — possible with ffmpeg.wasm, but for large files it is slow and memory-hungry. I run these server-side with FFmpeg instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Office to PDF&lt;/strong&gt; — needs a real rendering engine, so that goes through LibreOffice on the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR on scanned PDFs&lt;/strong&gt; — heavy; better server-side.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For anything that does hit the server, the rule becomes: process, return, and &lt;strong&gt;delete the file automatically right after&lt;/strong&gt;. No long-term storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother
&lt;/h2&gt;

&lt;p&gt;Three things I did not expect:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It is cheaper.&lt;/strong&gt; Client-side tools cost almost nothing to run, so they can stay free without ads-everywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is faster&lt;/strong&gt; for the common case — no upload/download latency on a 3 MB image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Users notice.&lt;/strong&gt; Saying plainly "this file never leaves your browser" changed how people talked about the tool in feedback.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;You do not need a backend for most file utilities. &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;, &lt;code&gt;OffscreenCanvas&lt;/code&gt;, Web Workers and the File API cover a surprising amount. Push to the server only what genuinely needs it, and delete it immediately when you do.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build and run &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;Filuni&lt;/a&gt;, so this is the approach behind a real product, not just theory. Happy to answer questions about any specific tool in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>privacy</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How I decide which AI tools are worth listing: a curator's checklist</title>
      <dc:creator>Sylar</dc:creator>
      <pubDate>Fri, 12 Jun 2026 06:19:29 +0000</pubDate>
      <link>https://dev.to/sylar_837ff17f3f5697f8305/how-i-decide-which-ai-tools-are-worth-listing-a-curators-checklist-3fib</link>
      <guid>https://dev.to/sylar_837ff17f3f5697f8305/how-i-decide-which-ai-tools-are-worth-listing-a-curators-checklist-3fib</guid>
      <description>&lt;p&gt;I run a small AI tools directory as a side project. Since late 2025 I've reviewed somewhere north of a thousand AI products, and listed only about a hundred of them. This post is the checklist I wish I'd had on day one — it might be useful whether you're picking tools for your team or building any kind of curated list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "list everything" fails
&lt;/h2&gt;

&lt;p&gt;Most AI directories auto-scrape: every landing page with "AI" in the title gets a row in the database. That maximizes page count for SEO, but it pushes the actual filtering work onto the visitor — which is the problem a directory is supposed to solve in the first place.&lt;/p&gt;

&lt;p&gt;So the only real value a curated list can add is &lt;strong&gt;saying no&lt;/strong&gt;. Here's what my "no" looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Task first, demo second
&lt;/h3&gt;

&lt;p&gt;The first question is never "is this impressive?" but "what task does someone finish with this?" A surprising number of AI products demo beautifully and map to no recurring task. If I can't write one sentence in the form "use this when you need to ___", it doesn't go in.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The free tier has to be real
&lt;/h3&gt;

&lt;p&gt;I check: can you complete the core task at least a few times without paying? "Free trial that dies in 7 days" and "free tier that watermarks everything into uselessness" both count as bait. I list paid tools too — but the pricing has to be stated honestly on the listing, not discovered at checkout.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Two honest cons, minimum
&lt;/h3&gt;

&lt;p&gt;This is my favorite filter, and the most work. For every tool I force myself to write at least two genuine downsides (slow output, weak non-English support, aggressive upsells, no export, whatever is actually true). If I can't — it means I haven't used it enough to list it. The cons section is also the part readers trust most, which says something about directories in general.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Is anyone home?
&lt;/h3&gt;

&lt;p&gt;Changelog or release notes from the last ~3 months, a responsive support channel, a team page that isn't stock photos. AI tools die fast and quietly; a directory full of dead links is worse than no directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Open-source alternative check
&lt;/h3&gt;

&lt;p&gt;For each category I try to also know the self-hostable option. Sometimes the right recommendation for a privacy-sensitive task is "don't use a SaaS at all" — a directory that can't say that is just an ad wall. (This is why I ended up maintaining a separate open-source section with 80+ projects.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What gets rejected most
&lt;/h2&gt;

&lt;p&gt;In practice, the three most common rejection reasons have been:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wrapper with no margin of value&lt;/strong&gt; — a thin UI over a foundation model API, priced higher than the API itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Landing page only&lt;/strong&gt; — waitlist products. Nothing against them, but a directory entry for something you can't use helps nobody.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity churn&lt;/strong&gt; — product renamed/repositioned twice in six months. Usually predicts a shutdown.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I'd tell anyone building a curated anything
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Decide your rejection reasons before your acceptance reasons.&lt;/li&gt;
&lt;li&gt;Write the cons first. If the cons are hard to write, you don't know the product yet.&lt;/li&gt;
&lt;li&gt;Date everything. Curation rots; visible "last reviewed" dates keep you honest.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I'm the maintainer of &lt;a href="https://www.sofarbot.com" rel="noopener noreferrer"&gt;SoFarBot&lt;/a&gt;, the AI tools directory described above — free to browse, no signup, in English and Chinese. The checklist works without it, but if you want to see it applied, that's where it lives. Happy to answer questions about the curation process in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built 121 free online file tools as a side project - here is what I learned</title>
      <dc:creator>Sylar</dc:creator>
      <pubDate>Thu, 11 Jun 2026 10:37:52 +0000</pubDate>
      <link>https://dev.to/sylar_837ff17f3f5697f8305/i-built-121-free-online-file-tools-as-a-side-project-here-is-what-i-learned-28d</link>
      <guid>https://dev.to/sylar_837ff17f3f5697f8305/i-built-121-free-online-file-tools-as-a-side-project-here-is-what-i-learned-28d</guid>
      <description>&lt;p&gt;After months of nights and weekends, I launched &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;Filuni&lt;/a&gt; - a free online toolkit with 121 tools for PDF, image, video, audio, and document processing. No signup, no upload limits, no watermarks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Every time I needed to merge a PDF or compress an image, I would land on a tool that either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;limited me to 2 free uses per day,&lt;/li&gt;
&lt;li&gt;required an account for a 10-second task,&lt;/li&gt;
&lt;li&gt;slapped a watermark on my file, or&lt;/li&gt;
&lt;li&gt;wanted $12/month for basic operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built my own, and made it free.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is inside
&lt;/h2&gt;

&lt;p&gt;121 tools across 12 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PDF&lt;/strong&gt;: merge, split, compress, convert to Word/Excel/image, watermark, rotate, page numbers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Office&lt;/strong&gt;: Word/Excel/PPT/HTML/Markdown/CSV to PDF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image&lt;/strong&gt;: compress, resize, crop, format convert, QR codes, EXIF viewer, watermark, collage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video&lt;/strong&gt;: compress, convert, extract audio, video to GIF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio&lt;/strong&gt;: convert, compress, trim&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encryption&lt;/strong&gt;: AES/RSA, hash generators, Base64, digital signatures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer&lt;/strong&gt;: JWT decoder, regex tester, cron visualizer, cURL to code, JSON formatter/diff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text / Color / Converters / Calculators&lt;/strong&gt;: word counter, diff, palettes, WCAG contrast, units, timestamps, BMI, loans...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Users hate signup walls for simple tasks.&lt;/strong&gt; Removing all auth requirements was the single best UX decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-side processing wins trust.&lt;/strong&gt; Most image/text/JSON tools run 100% in the browser (Canvas API, Web Workers) - files never leave your device. People notice and mention it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO is king for tool sites.&lt;/strong&gt; Every tool has its own landing page with FAQ and HowTo schema. Organic search is by far the biggest traffic source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-language support compounds.&lt;/strong&gt; Filuni now ships in 11 languages (English, Spanish, Portuguese, German, French, Russian, Vietnamese, Korean, Japanese, Chinese Simplified &amp;amp; Traditional). Each locale opened a new market for the same codebase.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;Nuxt 3 + TailwindCSS + PWA. FFmpeg handles video/audio on the server, LibreOffice (via jodconverter) does Office to PDF. Server-processed files are auto-deleted after processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revenue model
&lt;/h2&gt;

&lt;p&gt;Anchor ads only. No paywalls, no popups, no freemium tricks.&lt;/p&gt;




&lt;p&gt;Try it: &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;www.filuni.com&lt;/a&gt; - I would love feedback on the UX, and suggestions for what tools to add next!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>sideprojects</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built 121+ Free Browser-Based Dev Tools — Here Are My 10 Favorites</title>
      <dc:creator>Sylar</dc:creator>
      <pubDate>Sat, 06 Jun 2026 08:49:32 +0000</pubDate>
      <link>https://dev.to/sylar_837ff17f3f5697f8305/i-built-121-free-browser-based-dev-tools-here-are-my-10-favorites-3lg8</link>
      <guid>https://dev.to/sylar_837ff17f3f5697f8305/i-built-121-free-browser-based-dev-tools-here-are-my-10-favorites-3lg8</guid>
      <description>&lt;p&gt;Every developer has a set of small utilities they reach for daily — decoding a JWT, formatting JSON, generating UUIDs, testing regex patterns. Most of these tasks don't need a full IDE or installed software.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;Filuni&lt;/a&gt; — a free, browser-based toolkit with &lt;strong&gt;121+ tools&lt;/strong&gt; across 12 categories. Here are my 10 favorites for developers:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. JWT Decoder
&lt;/h2&gt;

&lt;p&gt;Paste a JWT token, instantly see the decoded header and payload. No more copy-pasting to jwt.io.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-jwt" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-jwt&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. JSON Formatter &amp;amp; Validator
&lt;/h2&gt;

&lt;p&gt;Paste messy JSON, get it beautifully formatted with syntax highlighting. Instantly validates and shows error locations with line numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/json/json-format" rel="noopener noreferrer"&gt;filuni.com/filetool/json/json-format&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. UUID Generator
&lt;/h2&gt;

&lt;p&gt;Generate UUID v4 in bulk — 1 to 100 UUIDs at once with one click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-uuid" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-uuid&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Regex Tester
&lt;/h2&gt;

&lt;p&gt;Write regex patterns and test them against sample text with real-time match highlighting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/text/text-regex" rel="noopener noreferrer"&gt;filuni.com/filetool/text/text-regex&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Cron Expression Parser
&lt;/h2&gt;

&lt;p&gt;Enter a cron expression and see a human-readable description plus the next 10 run times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-cron" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-cron&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. JSON Diff
&lt;/h2&gt;

&lt;p&gt;Structurally compare two JSON objects and see added/removed/changed keys highlighted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-json-diff" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-json-diff&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. cURL to Code Converter
&lt;/h2&gt;

&lt;p&gt;Paste a cURL command and get equivalent code in &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;axios&lt;/code&gt;, or Python &lt;code&gt;requests&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-curl" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-curl&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Code Beautifier
&lt;/h2&gt;

&lt;p&gt;Beautify or minify HTML, CSS, JavaScript, and SQL with one click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-beautifier" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-beautifier&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. CIDR / Subnet Calculator
&lt;/h2&gt;

&lt;p&gt;Enter a CIDR notation and get network address, broadcast, netmask, and usable host range.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-cidr" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-cidr&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Base Converter
&lt;/h2&gt;

&lt;p&gt;Convert numbers between binary, octal, decimal, hex, and any base 2-36.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://www.filuni.com/filetool/dev/dev-base-convert" rel="noopener noreferrer"&gt;filuni.com/filetool/dev/dev-base-convert&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Beyond Dev Tools
&lt;/h2&gt;

&lt;p&gt;Filuni also has 100+ tools for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PDF&lt;/strong&gt; — merge, split, compress, convert to Word/Excel/Image&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image&lt;/strong&gt; — compress, resize, crop, QR codes, watermark, EXIF viewer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video&lt;/strong&gt; — compress, convert, extract audio, make GIFs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text&lt;/strong&gt; — word counter, diff, case converter, Markdown preview&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encryption&lt;/strong&gt; — AES/RSA encrypt, hash generate, Base64&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color&lt;/strong&gt; — picker, gradient builder, WCAG contrast checker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calculators&lt;/strong&gt; — BMI, loan, compound interest, statistics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Browser-Based?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No install&lt;/strong&gt; — works on any machine, even a Chromebook&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always up-to-date&lt;/strong&gt; — no version management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt; — most tools run 100% client-side&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform&lt;/strong&gt; — same tool on Windows, Mac, Linux, mobile&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All 121+ tools are free at &lt;a href="https://www.filuni.com" rel="noopener noreferrer"&gt;filuni.com&lt;/a&gt;, no signup required.&lt;/p&gt;

&lt;p&gt;What dev tools do you use daily? Drop a comment!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
