<?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: sambasycaen-star</title>
    <description>The latest articles on DEV Community by sambasycaen-star (@sambasycaenstar).</description>
    <link>https://dev.to/sambasycaenstar</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929253%2F429d7902-415e-43b1-b2c3-b2b94695a5e6.png</url>
      <title>DEV Community: sambasycaen-star</title>
      <link>https://dev.to/sambasycaenstar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sambasycaenstar"/>
    <language>en</language>
    <item>
      <title>I built 13 free online tools with vanilla HTML/CSS/JS – no frameworks needed</title>
      <dc:creator>sambasycaen-star</dc:creator>
      <pubDate>Wed, 13 May 2026 12:04:31 +0000</pubDate>
      <link>https://dev.to/sambasycaenstar/i-built-13-free-online-tools-with-vanilla-htmlcssjs-no-frameworks-needed-4hg6</link>
      <guid>https://dev.to/sambasycaenstar/i-built-13-free-online-tools-with-vanilla-htmlcssjs-no-frameworks-needed-4hg6</guid>
      <description>&lt;p&gt;Why vanilla JS?&lt;br&gt;
Instant loading – no 500KB framework bundle to download&lt;br&gt;
SEO friendly – Google loves fast, lightweight sites&lt;br&gt;
Zero dependencies – nothing to update or break&lt;br&gt;
Privacy first – everything runs client-side, no data sent to servers&lt;br&gt;
The tools&lt;br&gt;
🔐 Password Generator – uses crypto.getRandomValues() for true randomness&lt;br&gt;
📱 QR Code Generator – custom colors, PNG download&lt;br&gt;
🎬 YouTube to MP3/MP4 – download audio or video&lt;br&gt;
🖼️ Image Resizer – compress and resize using Canvas API&lt;br&gt;
📝 Word Counter – words, characters, sentences, paragraphs&lt;br&gt;
🎨 Color Converter – HEX ↔ RGB ↔ HSL in real-time&lt;br&gt;
📐 Percentage Calculator – increases, decreases, ratios&lt;br&gt;
📄 Image to PDF – convert without uploading to any server&lt;br&gt;
🕐 Timezone Converter – compare times across the world&lt;br&gt;
🔢 Base Converter – binary, decimal, hex, octal&lt;br&gt;
🔤 Text Case Converter – UPPER, lower, Title, iNvErTeD&lt;br&gt;
📋 Lorem Ipsum Generator – paragraphs, sentences, or words&lt;br&gt;
Key technical decisions&lt;br&gt;
Password generation:&lt;/p&gt;

&lt;p&gt;const array = new Uint32Array(length);&lt;br&gt;
crypto.getRandomValues(array);&lt;br&gt;
Using the Web Crypto API ensures true randomness – much better than Math.random().&lt;/p&gt;

&lt;p&gt;Image processing:&lt;/p&gt;

&lt;p&gt;All image compression uses the Canvas API. The image never leaves the browser:&lt;/p&gt;

&lt;p&gt;canvas.toBlob(blob =&amp;gt; { /* download */ }, 'image/jpeg', quality);&lt;br&gt;
No build step:&lt;/p&gt;

&lt;p&gt;Each tool is a single HTML file with inline CSS and JS. No webpack, no bundler, no node_modules. Just open the file and it works.&lt;/p&gt;

&lt;p&gt;Performance&lt;br&gt;
Since there's no framework overhead:&lt;/p&gt;

&lt;p&gt;First Contentful Paint: ~0.5s&lt;br&gt;
Total page weight: ~15KB per tool&lt;br&gt;
Works offline (no server calls needed)&lt;br&gt;
Check it out&lt;br&gt;
🔗 &lt;a href="https://outils-gratuits-mu.vercel.app" rel="noopener noreferrer"&gt;https://outils-gratuits-mu.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The site is in French but the tools are universal – try the password generator or QR code maker.&lt;/p&gt;

&lt;p&gt;What's next?&lt;br&gt;
I'm planning to add:&lt;/p&gt;

&lt;p&gt;Base64 encoder/decoder&lt;br&gt;
JSON formatter&lt;br&gt;
Regex tester&lt;br&gt;
CSS minifier&lt;br&gt;
What tools would you find useful? Drop a comment below!&lt;/p&gt;

&lt;p&gt;Built with ❤️ using vanilla HTML/CSS/JS. Hosted on Vercel (free tier).&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
