<?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: shahriyar anwar</title>
    <description>The latest articles on DEV Community by shahriyar anwar (@shahriyar_anwar_c33c14b38).</description>
    <link>https://dev.to/shahriyar_anwar_c33c14b38</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%2F3941638%2F7f62878f-356f-41a6-a265-66455975f897.jpg</url>
      <title>DEV Community: shahriyar anwar</title>
      <link>https://dev.to/shahriyar_anwar_c33c14b38</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shahriyar_anwar_c33c14b38"/>
    <language>en</language>
    <item>
      <title>How I Built a Free Random Letter Generator — And Got 7,800+ Impressions in 8 Weeks with Zero Ad Spend</title>
      <dc:creator>shahriyar anwar</dc:creator>
      <pubDate>Wed, 20 May 2026 09:26:37 +0000</pubDate>
      <link>https://dev.to/shahriyar_anwar_c33c14b38/how-i-built-a-free-random-letter-generator-and-got-7800-impressions-in-8-weeks-with-zero-ad-2gp</link>
      <guid>https://dev.to/shahriyar_anwar_c33c14b38/how-i-built-a-free-random-letter-generator-and-got-7800-impressions-in-8-weeks-with-zero-ad-2gp</guid>
      <description>&lt;p&gt;I'm not a full-time developer. I'm an SEO and WordPress specialist. So when I decided to build and launch a web tool from scratch, I knew I had to be smart about every decision — from the tech stack to how I'd get it in front of people.&lt;/p&gt;

&lt;p&gt;This is the story of how I built &lt;a href="https://randomletter.io" rel="noopener noreferrer"&gt;randomletter.io&lt;/a&gt; — a free, fast, accessible random letter generator — and what I learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;The idea was simple: I wanted to create a suite of small, useful generator tools under one brand. Random letter generator was Tool #1.&lt;/p&gt;

&lt;p&gt;I looked at what was already out there. Most existing tools were cluttered, slow, or just plain ugly. I knew I could do better — and more importantly, I knew a clean, fast, accessible tool could rank well on Google with the right SEO foundation.&lt;/p&gt;

&lt;p&gt;So I got to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;I kept it deliberately simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress&lt;/strong&gt; as the CMS (I know it well, it's fast to deploy)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kadence Theme&lt;/strong&gt; — lightweight, performance-friendly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Vanilla JS plugin&lt;/strong&gt; for the actual tool logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiteSpeed Cache + Cloudflare&lt;/strong&gt; for speed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rank Math SEO&lt;/strong&gt; for on-page optimization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hostinger&lt;/strong&gt; for hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No React. No npm. No build pipeline. Just clean, dependency-free Vanilla JS wrapped in a custom WordPress plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Tool Plugin
&lt;/h2&gt;

&lt;p&gt;The core tool lives in a custom plugin at &lt;code&gt;wp-content/plugins/&lt;/code&gt;. I built it entirely in Vanilla JS — no frameworks, no libraries.&lt;/p&gt;

&lt;p&gt;Why Vanilla JS? A few reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; — no library overhead. Every millisecond matters for PageSpeed scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; — fewer moving parts means fewer things to break.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control&lt;/strong&gt; — I own every line of code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The plugin handles letter generation, display modes (single letter, multiple letters), and user settings like excluding vowels or consonants. It enqueues its own CSS and JS cleanly, without touching the theme.&lt;/p&gt;

&lt;p&gt;One early mistake: I accidentally enqueued Google Fonts twice — once in the theme and once in the plugin. Fixed it, and PageSpeed jumped immediately. Small things like that compound fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility from Day One
&lt;/h2&gt;

&lt;p&gt;This was non-negotiable for me. A tool that teachers and students use needs to work for everyone.&lt;/p&gt;

&lt;p&gt;I made sure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All interactive elements have proper accessibility labels&lt;/li&gt;
&lt;li&gt;Colour contrast meets accessibility standards (I had to fix &lt;code&gt;--rlg-text-muted&lt;/code&gt; — the default was too light)&lt;/li&gt;
&lt;li&gt;The tool is fully keyboard navigable&lt;/li&gt;
&lt;li&gt;Screen reader announcements work correctly when a new letter generates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: &lt;strong&gt;100/100 Accessibility score on PageSpeed Insights&lt;/strong&gt;. Not a nice-to-have — a baseline.&lt;/p&gt;

&lt;h2&gt;
  
  
  The PageSpeed Obsession
&lt;/h2&gt;

&lt;p&gt;I'll be honest — I became a little obsessed with PageSpeed scores.&lt;/p&gt;

&lt;p&gt;After a lot of tweaking — removing duplicate font loads, deferring non-critical CSS, optimising the LiteSpeed Cache configuration, and setting up Cloudflare properly — here's where I landed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Mobile&lt;/th&gt;
&lt;th&gt;Desktop&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Practices&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A perfect or near-perfect score doesn't guarantee rankings — but it removes a barrier. Google won't penalise you for being fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO Strategy: Content Over Tricks
&lt;/h2&gt;

&lt;p&gt;I didn't do anything clever with SEO. I just did the basics well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Targeted low-competition keywords&lt;/li&gt;
&lt;li&gt;Wrote genuinely useful supporting content&lt;/li&gt;
&lt;li&gt;Built clean internal linking&lt;/li&gt;
&lt;li&gt;Made sure the site was fully crawlable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No black hat. No shortcuts. Just content that actually helps people.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Results (8 Weeks In)
&lt;/h2&gt;

&lt;p&gt;As of May 2026, with &lt;strong&gt;zero ad spend&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7,870 impressions&lt;/strong&gt; on Google Search Console&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;85 clicks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Average position: 18.2&lt;/strong&gt; (and improving)&lt;/li&gt;
&lt;li&gt;7 pages indexed&lt;/li&gt;
&lt;li&gt;Impressions in &lt;strong&gt;145 countries&lt;/strong&gt; — India, USA, UK, Japan, Canada, Philippines, and counting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not viral numbers. But for an 8-week-old site with no backlinks budget, I'll take it.&lt;/p&gt;

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

&lt;p&gt;Continuing to grow organically — more content, more visibility, more tools under the same brand. Slow and steady.&lt;/p&gt;

&lt;p&gt;No shortcuts. No rushing.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JS is underrated.&lt;/strong&gt; You don't need a framework for a focused, single-purpose tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility and performance aren't opposites.&lt;/strong&gt; You can have both if you're intentional from the start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WordPress gets a bad reputation it doesn't always deserve.&lt;/strong&gt; With the right stack, it's genuinely fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO is slow. That's fine.&lt;/strong&gt; Compound interest is slow too. Keep going.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're thinking about building a small web tool — just start. Keep the scope small, the code clean, and the user experience tight.&lt;/p&gt;

&lt;p&gt;You can check it out at &lt;a href="https://randomletter.io" rel="noopener noreferrer"&gt;randomletter.io&lt;/a&gt; — feedback always welcome.&lt;/p&gt;

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