<?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>Forem: X.T.O</title>
    <description>The latest articles on Forem by X.T.O (@n2xto).</description>
    <link>https://forem.com/n2xto</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%2F3812083%2F17637eab-d18b-4a24-9d8b-10aabc0ac0ce.png</url>
      <title>Forem: X.T.O</title>
      <link>https://forem.com/n2xto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/n2xto"/>
    <language>en</language>
    <item>
      <title>I Built a Chat App With No Server (Just WebRTC)</title>
      <dc:creator>X.T.O</dc:creator>
      <pubDate>Sun, 08 Mar 2026 14:49:08 +0000</pubDate>
      <link>https://forem.com/n2xto/i-built-a-chat-app-with-no-server-just-webrtc-2ood</link>
      <guid>https://forem.com/n2xto/i-built-a-chat-app-with-no-server-just-webrtc-2ood</guid>
      <description>&lt;p&gt;I Built a Serverless P2P Chat That Runs Directly in Your Browser&lt;/p&gt;

&lt;p&gt;Most chat applications work like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User A → Server → User B 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every message goes through a server.&lt;/p&gt;

&lt;p&gt;This works well, but it also means:&lt;/p&gt;

&lt;p&gt;Messages pass through a central server&lt;/p&gt;

&lt;p&gt;The server must handle all traffic&lt;/p&gt;

&lt;p&gt;It requires backend infrastructure&lt;/p&gt;

&lt;p&gt;So I wanted to try something different.&lt;/p&gt;

&lt;p&gt;I built a peer-to-peer chat tool that runs entirely in the browser.&lt;/p&gt;

&lt;p&gt;No accounts.&lt;br&gt;
No installation.&lt;br&gt;
No chat server.&lt;/p&gt;

&lt;p&gt;Just open the page and start chatting.&lt;/p&gt;

&lt;p&gt;Try it here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://xto.icu/tools/p2p-chat/" rel="noopener noreferrer"&gt;https://xto.icu/tools/p2p-chat/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;The Idea&lt;/p&gt;

&lt;p&gt;Instead of sending messages through a server, the browsers connect directly to each other.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser A  ←→  WebRTC  ←→  Browser B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the connection is established, messages travel directly between the two users.&lt;/p&gt;

&lt;p&gt;No message storage.&lt;br&gt;
No central chat server.&lt;/p&gt;

&lt;p&gt;This is possible thanks to WebRTC, a browser technology designed for real-time communication. &lt;/p&gt;

&lt;p&gt;WebRTC allows browsers to exchange data directly using RTCDataChannel, which supports low-latency peer-to-peer communication. &lt;/p&gt;




&lt;p&gt;How It Works&lt;/p&gt;

&lt;p&gt;The process is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;User A opens the chat tool&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A session code is generated&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User B enters the same session code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The browsers establish a WebRTC connection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Messages flow directly between the two browsers&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User A
   │
   │ session code
   ▼
User B
   │
   ▼
WebRTC connection
   │
   ▼
Direct chat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once connected, the chat behaves like a normal messaging app.&lt;/p&gt;

&lt;p&gt;But under the hood, it's completely peer-to-peer.&lt;/p&gt;




&lt;p&gt;Features&lt;/p&gt;

&lt;p&gt;Current features of the tool:&lt;/p&gt;

&lt;p&gt;💬 Real-time chat&lt;/p&gt;

&lt;p&gt;🔗 Peer-to-peer connection&lt;/p&gt;

&lt;p&gt;🔒 Encrypted WebRTC communication&lt;/p&gt;

&lt;p&gt;🌐 Runs entirely in the browser&lt;/p&gt;

&lt;p&gt;🆓 Free to use&lt;/p&gt;

&lt;p&gt;There is no signup and no installation required.&lt;/p&gt;

&lt;p&gt;Just open the page and connect.&lt;/p&gt;




&lt;p&gt;Why I Built This&lt;/p&gt;

&lt;p&gt;I enjoy experimenting with what modern browsers can do.&lt;/p&gt;

&lt;p&gt;Many developers still think browsers are only for displaying web pages.&lt;/p&gt;

&lt;p&gt;But today browsers can do much more:&lt;/p&gt;

&lt;p&gt;Real-time communication&lt;/p&gt;

&lt;p&gt;Peer-to-peer networking&lt;/p&gt;

&lt;p&gt;File transfers&lt;/p&gt;

&lt;p&gt;Collaborative apps&lt;/p&gt;

&lt;p&gt;All without installing anything.&lt;/p&gt;

&lt;p&gt;Just open a webpage.&lt;/p&gt;




&lt;p&gt;Possible Use Cases&lt;/p&gt;

&lt;p&gt;Some interesting ways this tool can be used:&lt;/p&gt;

&lt;p&gt;Quick private chats&lt;/p&gt;

&lt;p&gt;Temporary communication&lt;/p&gt;

&lt;p&gt;Testing WebRTC connections&lt;/p&gt;

&lt;p&gt;Developer experiments&lt;/p&gt;

&lt;p&gt;Learning about peer-to-peer networking&lt;/p&gt;




&lt;p&gt;Try It Yourself&lt;/p&gt;

&lt;p&gt;Open the tool on two devices or two browser tabs:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://xto.icu/tools/p2p-chat/" rel="noopener noreferrer"&gt;https://xto.icu/tools/p2p-chat/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Share the session code and start chatting.&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;




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

&lt;p&gt;I'm currently experimenting with more browser-based P2P tools, such as:&lt;/p&gt;

&lt;p&gt;P2P file transfer&lt;/p&gt;

&lt;p&gt;P2P clipboard sharing&lt;/p&gt;

&lt;p&gt;P2P streaming&lt;/p&gt;

&lt;p&gt;More WebRTC experiments&lt;/p&gt;

&lt;p&gt;Modern browsers are more powerful than many developers realize.&lt;/p&gt;




&lt;p&gt;If you try the tool, I’d love to hear your feedback.&lt;/p&gt;

&lt;p&gt;What features should I add next?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webrtc</category>
      <category>p2pchat</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built a Free JavaScript Obfuscator That Runs 100% in Your Browser</title>
      <dc:creator>X.T.O</dc:creator>
      <pubDate>Sun, 08 Mar 2026 14:43:33 +0000</pubDate>
      <link>https://forem.com/n2xto/i-built-a-free-javascript-obfuscator-that-runs-100-in-your-browser-5f4m</link>
      <guid>https://forem.com/n2xto/i-built-a-free-javascript-obfuscator-that-runs-100-in-your-browser-5f4m</guid>
      <description>&lt;p&gt;I Built a Free JavaScript Obfuscator Tool (No Signup, No Limits)&lt;/p&gt;

&lt;p&gt;As developers, sometimes we want to protect our JavaScript code from being easily read or copied.&lt;/p&gt;

&lt;p&gt;But most online JavaScript obfuscator tools have problems:&lt;/p&gt;

&lt;p&gt;Require signup&lt;/p&gt;

&lt;p&gt;Have usage limits&lt;/p&gt;

&lt;p&gt;Send your code to their servers&lt;/p&gt;

&lt;p&gt;Or hide the good features behind a paywall&lt;/p&gt;

&lt;p&gt;So I decided to build something simple.&lt;/p&gt;

&lt;p&gt;A free JavaScript obfuscator tool that runs directly in your browser.&lt;/p&gt;

&lt;p&gt;No login.&lt;br&gt;
No tracking.&lt;br&gt;
No limits.&lt;/p&gt;

&lt;p&gt;Just paste your code and obfuscate it.&lt;/p&gt;




&lt;p&gt;What is JavaScript Obfuscation?&lt;/p&gt;

&lt;p&gt;JavaScript obfuscation is a technique that transforms readable code into a version that is much harder for humans to understand, while still working exactly the same.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Original Code&lt;/p&gt;

&lt;p&gt;function greet(name) {&lt;br&gt;
  console.log("Hello " + name);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;greet("Developer");&lt;/p&gt;

&lt;p&gt;Obfuscated Code&lt;/p&gt;

&lt;p&gt;(function(_0x12ab3){console&lt;a href="https://dev.to'Hello"&gt;'log'&lt;/a&gt;;&lt;/p&gt;

&lt;p&gt;The functionality is the same, but the logic becomes harder to reverse engineer.&lt;/p&gt;




&lt;p&gt;Why I Built This Tool&lt;/p&gt;

&lt;p&gt;I built this tool mainly because I needed a quick way to obfuscate small JavaScript projects.&lt;/p&gt;

&lt;p&gt;Most existing tools were either:&lt;/p&gt;

&lt;p&gt;Too complicated&lt;/p&gt;

&lt;p&gt;Paid&lt;/p&gt;

&lt;p&gt;Required uploading code to a server&lt;/p&gt;

&lt;p&gt;So I made a simple browser tool that works instantly.&lt;/p&gt;




&lt;p&gt;Features&lt;/p&gt;

&lt;p&gt;⚡ Instant obfuscation&lt;/p&gt;

&lt;p&gt;🔒 Runs directly in your browser&lt;/p&gt;

&lt;p&gt;🧠 Based on modern JavaScript obfuscation techniques&lt;/p&gt;

&lt;p&gt;🆓 Completely free&lt;/p&gt;

&lt;p&gt;🚫 No signup required&lt;/p&gt;




&lt;p&gt;Try It Here&lt;/p&gt;

&lt;p&gt;You can try the tool here:&lt;/p&gt;

&lt;p&gt;👉 [&lt;a href="https://xto.icu/tools/javascript-obfuscator/" rel="noopener noreferrer"&gt;https://xto.icu/tools/javascript-obfuscator/&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Just:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Paste your JavaScript&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Obfuscate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy the result&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Done.&lt;/p&gt;




&lt;p&gt;Example Use Cases&lt;/p&gt;

&lt;p&gt;Some cases where obfuscation can be useful:&lt;/p&gt;

&lt;p&gt;Protecting frontend business logic&lt;/p&gt;

&lt;p&gt;Preventing easy scraping&lt;/p&gt;

&lt;p&gt;Making reverse engineering harder&lt;/p&gt;

&lt;p&gt;Protecting commercial scripts&lt;/p&gt;

&lt;p&gt;Of course, obfuscation is not perfect security, but it can raise the barrier significantly.&lt;/p&gt;




&lt;p&gt;Tech Behind It&lt;/p&gt;

&lt;p&gt;The tool is built using:&lt;/p&gt;

&lt;p&gt;JavaScript&lt;/p&gt;

&lt;p&gt;Browser-based processing&lt;/p&gt;

&lt;p&gt;No backend processing required&lt;/p&gt;

&lt;p&gt;This means your code never leaves your browser.&lt;/p&gt;




&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;This tool is simple, but I hope it can be useful for other developers as well.&lt;/p&gt;

&lt;p&gt;If you have ideas for improvements or new features, feel free to share them.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>obfuscator</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built a Browser-Based P2P File Transfer Tool Using WebRTC (No Server Upload)</title>
      <dc:creator>X.T.O</dc:creator>
      <pubDate>Sat, 07 Mar 2026 20:48:28 +0000</pubDate>
      <link>https://forem.com/n2xto/i-built-a-browser-based-p2p-file-transfer-tool-using-webrtc-no-server-upload-20aa</link>
      <guid>https://forem.com/n2xto/i-built-a-browser-based-p2p-file-transfer-tool-using-webrtc-no-server-upload-20aa</guid>
      <description>&lt;p&gt;Most file transfer tools on the internet work the same way:&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.amazonaws.com%2Fuploads%2Farticles%2F3cc80o5te22t6qr6weq1.gif" 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.amazonaws.com%2Fuploads%2Farticles%2F3cc80o5te22t6qr6weq1.gif" alt=" " width="80" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload the file to a server&lt;/li&gt;
&lt;li&gt;The server stores it&lt;/li&gt;
&lt;li&gt;The other user downloads it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This works fine, but it has some downsides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files are temporarily stored on a server&lt;/li&gt;
&lt;li&gt;Upload time can be slow for large files&lt;/li&gt;
&lt;li&gt;It consumes server bandwidth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I wanted to experiment with something different.&lt;/p&gt;

&lt;p&gt;I built a &lt;strong&gt;browser-based peer-to-peer file transfer tool using WebRTC&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No server storage.&lt;br&gt;
No upload step.&lt;br&gt;
Just &lt;strong&gt;direct browser-to-browser transfer&lt;/strong&gt;.&lt;/p&gt;


&lt;h1&gt;
  
  
  💡 The Idea
&lt;/h1&gt;

&lt;p&gt;Instead of uploading files to a server, the browsers connect &lt;strong&gt;directly to each other&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The file is transferred &lt;strong&gt;peer-to-peer&lt;/strong&gt; using WebRTC.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser A  ←→  WebRTC  ←→  Browser B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No server upload&lt;/li&gt;
&lt;li&gt;No server storage&lt;/li&gt;
&lt;li&gt;Direct encrypted connection&lt;/li&gt;
&lt;li&gt;Faster transfer for many cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything happens &lt;strong&gt;inside the browser&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚙️ How It Works
&lt;/h1&gt;

&lt;p&gt;The tool uses &lt;strong&gt;WebRTC DataChannels&lt;/strong&gt; to establish a peer-to-peer connection between two users.&lt;/p&gt;

&lt;p&gt;The process is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User A opens the tool and creates a session&lt;/li&gt;
&lt;li&gt;A session code is generated&lt;/li&gt;
&lt;li&gt;User B enters the same session code&lt;/li&gt;
&lt;li&gt;A WebRTC connection is established&lt;/li&gt;
&lt;li&gt;Files are transferred directly between the two browsers
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User A
  │
  │ session code
  ▼
User B
  │
  ▼
WebRTC connection
  │
  ▼
Direct file transfer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once connected, files move &lt;strong&gt;directly between both users&lt;/strong&gt; without going through a central server.&lt;/p&gt;




&lt;h1&gt;
  
  
  🌐 Why WebRTC?
&lt;/h1&gt;

&lt;p&gt;WebRTC is usually known for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Video calls&lt;/li&gt;
&lt;li&gt;Voice chat&lt;/li&gt;
&lt;li&gt;Real-time collaboration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it also supports &lt;strong&gt;DataChannels&lt;/strong&gt;, which allow browsers to send arbitrary data directly to each other.&lt;/p&gt;

&lt;p&gt;That makes it perfect for building &lt;strong&gt;peer-to-peer tools directly in the browser&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Modern browsers are much more powerful than many developers realize.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✨ Features
&lt;/h1&gt;

&lt;p&gt;The tool currently supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Peer-to-peer file transfer&lt;/li&gt;
&lt;li&gt;No server storage&lt;/li&gt;
&lt;li&gt;Direct browser connection&lt;/li&gt;
&lt;li&gt;Session code based pairing&lt;/li&gt;
&lt;li&gt;Encrypted WebRTC connection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything runs &lt;strong&gt;entirely client-side&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧪 Try It Yourself
&lt;/h1&gt;

&lt;p&gt;You can try the tool here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://xto.icu/tools/p2p-file-drop/" rel="noopener noreferrer"&gt;https://xto.icu/tools/p2p-file-drop/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the page on two devices or two browsers, share the session code, and start transferring files.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 Why I Built This
&lt;/h1&gt;

&lt;p&gt;This project started as a small experiment to explore what modern browsers can do.&lt;/p&gt;

&lt;p&gt;It's amazing that we can now build &lt;strong&gt;peer-to-peer applications directly in the browser&lt;/strong&gt; without requiring users to install anything.&lt;/p&gt;

&lt;p&gt;Just open a webpage and it works.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔮 Next Experiments
&lt;/h1&gt;

&lt;p&gt;I'm also exploring other &lt;strong&gt;browser-based P2P tools&lt;/strong&gt;, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P2P chat&lt;/li&gt;
&lt;li&gt;P2P clipboard sharing&lt;/li&gt;
&lt;li&gt;P2P streaming experiments&lt;/li&gt;
&lt;li&gt;More WebRTC utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a lot of interesting potential here.&lt;/p&gt;




&lt;h1&gt;
  
  
  💬 Feedback Welcome
&lt;/h1&gt;

&lt;p&gt;If you try the tool, I would love to hear your feedback.&lt;/p&gt;

&lt;p&gt;What features would make it more useful?&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>webrtc</category>
    </item>
  </channel>
</rss>
