<?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: Arik Shalito</title>
    <description>The latest articles on DEV Community by Arik Shalito (@shalito13).</description>
    <link>https://dev.to/shalito13</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%2F3772991%2F88fde44f-3af9-4d0d-8838-4ccecccd0d72.jpg</url>
      <title>DEV Community: Arik Shalito</title>
      <link>https://dev.to/shalito13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shalito13"/>
    <language>en</language>
    <item>
      <title>I Replaced Password Dots with CSS Blur, Here's How (and Why)</title>
      <dc:creator>Arik Shalito</dc:creator>
      <pubDate>Sun, 15 Feb 2026 21:13:38 +0000</pubDate>
      <link>https://dev.to/shalito13/i-replaced-password-dots-with-css-blur-heres-how-and-why-595</link>
      <guid>https://dev.to/shalito13/i-replaced-password-dots-with-css-blur-heres-how-and-why-595</guid>
      <description>&lt;p&gt;Every password field on the web looks the same: ••••••••. Boring, unhelpful, and honestly a bit dated.&lt;br&gt;
I built something different: blur-reveal-input — a zero-dependency JavaScript library that replaces those dots with a beautiful CSS blur effect. Hover your mouse (desktop) or drag your finger (mobile) across the field to reveal the password through a clear window. Stop, and it smoothly fades back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Bother? (The Motivation)&lt;/strong&gt;&lt;br&gt;
Password masking hasn't evolved in decades. Dots hide everything equally, making it hard to spot typos without re-typing. A blur effect keeps the "masked" look while letting users peek precisely where needed, a more interesting interaction that just feels nicer to use (the actual value still stays in the original input element, nothing changes security-wise).&lt;br&gt;
It's a small, fun experiment, but it feels nicer in practice.&lt;br&gt;
Try It&lt;br&gt;
Live demo: &lt;a href="https://ilovemycat.github.io/blur-reveal-input/" rel="noopener noreferrer"&gt;https://ilovemycat.github.io/blur-reveal-input/&lt;/a&gt;&lt;br&gt;
Install in Seconds&lt;br&gt;
CDN (no build step needed):&lt;br&gt;
&lt;code&gt;&amp;lt;script src="https://unpkg.com/blur-reveal-input"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br&gt;
Every &lt;code&gt;&amp;lt;input type="password"&amp;gt;&lt;/code&gt; on the page gets the blur effect automatically.&lt;br&gt;
npm:&lt;br&gt;
&lt;code&gt;npm install blur-reveal-input&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Works Everywhere&lt;/strong&gt;&lt;br&gt;
React, Vue, Angular, Svelte, vanilla JS, or even WordPress (plugin included).&lt;br&gt;
React example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import { useEffect, useRef } from 'react';&lt;/code&gt;&lt;br&gt;
&lt;code&gt;import { BlurRevealInput } from 'blur-reveal-input';&lt;/code&gt;&lt;br&gt;
&lt;code&gt;function PasswordField() {&lt;/code&gt;&lt;br&gt;
&lt;code&gt;const ref = useRef(null);&lt;/code&gt;&lt;br&gt;
&lt;code&gt;useEffect(() =&amp;gt; {&lt;/code&gt;&lt;br&gt;
&lt;code&gt;const blur = new BlurRevealInput(ref.current);&lt;/code&gt;&lt;br&gt;
&lt;code&gt;return () =&amp;gt; blur.destroy();&lt;/code&gt;&lt;br&gt;
&lt;code&gt;}, []);&lt;/code&gt;&lt;br&gt;
&lt;code&gt;return &amp;lt;input ref={ref} type="password" /&amp;gt;;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Full examples for other frameworks in the repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It Works Under the Hood&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wraps the real password  in a container.&lt;/li&gt;
&lt;li&gt;Creates two overlays:

&lt;ul&gt;
&lt;li&gt;One permanently blurred (backdrop-filter: blur).&lt;/li&gt;
&lt;li&gt;One clear with a CSS mask that follows the cursor/finger.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Makes the input text transparent (caret stays visible).&lt;/li&gt;
&lt;li&gt;On hover/touchmove, the clear overlay's mask reveals only the hovered area.&lt;/li&gt;
&lt;li&gt;Fade-out uses requestAnimationFrame loop (CSS transitions proved unreliable across browsers).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;u&gt;The password value never leaves the original input — it's purely visual. No security risks added.&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub &amp;amp; Links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo:&lt;a href="https://github.com/iLoveMyCat/blur-reveal-input" rel="noopener noreferrer"&gt;https://github.com/iLoveMyCat/blur-reveal-input&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm:&lt;a href="https://www.npmjs.com/package/blur-reveal-input" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/blur-reveal-input&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live demo:&lt;a href="https://ilovemycat.github.io/blur-reveal-input/" rel="noopener noreferrer"&gt;https://ilovemycat.github.io/blur-reveal-input/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MIT licensed, fork, PR, use freely!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Got it running in your app? I'd love a screenshot or link, happy to add it to the README as a "Made with blur-reveal-input" showcase. Feedback, roasts, or improvement ideas welcome in comments or issues.&lt;br&gt;
What do you think — better than dots, or overkill? Drop your thoughts below!&lt;/p&gt;

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