<?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: Tumic</title>
    <description>The latest articles on DEV Community by Tumic (@tumic).</description>
    <link>https://dev.to/tumic</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%2F3822038%2Fce6db12f-b2b5-4e15-9057-b601c2a3e18d.png</url>
      <title>DEV Community: Tumic</title>
      <link>https://dev.to/tumic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tumic"/>
    <language>en</language>
    <item>
      <title>I Built a Browser-Based Clipboard Sync Tool That Works on Any Device</title>
      <dc:creator>Tumic</dc:creator>
      <pubDate>Fri, 13 Mar 2026 10:24:48 +0000</pubDate>
      <link>https://dev.to/tumic/i-built-a-browser-based-clipboard-sync-tool-that-works-on-any-device-1alg</link>
      <guid>https://dev.to/tumic/i-built-a-browser-based-clipboard-sync-tool-that-works-on-any-device-1alg</guid>
      <description>&lt;p&gt;I switch between my phone, tablet, and laptop constantly. Like many developers, I often copy links, notes, commands, or small files that I want to access on another device.&lt;/p&gt;

&lt;p&gt;But surprisingly, moving small pieces of information between devices is still awkward.&lt;/p&gt;

&lt;p&gt;Most of the time I end up doing one of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;emailing something to myself&lt;/li&gt;
&lt;li&gt;sending it through a chat app&lt;/li&gt;
&lt;li&gt;saving it in a notes app&lt;/li&gt;
&lt;li&gt;uploading it to cloud storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of that just to move a link or a small snippet of text.&lt;/p&gt;

&lt;p&gt;So I decided to build a small side project to solve this problem.&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%2Fo5j2ion20yr48ozrad1e.png" 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%2Fo5j2ion20yr48ozrad1e.png" alt="ClipSync web app shown on laptop, tablet, and smartphone demonstrating cross-device clipboard synchronization" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;The goal was simple:&lt;/p&gt;

&lt;p&gt;Create a &lt;strong&gt;temporary shared clipboard between devices&lt;/strong&gt; that works instantly.&lt;/p&gt;

&lt;p&gt;No accounts.&lt;br&gt;&lt;br&gt;
No installation.&lt;br&gt;&lt;br&gt;
No setup.&lt;/p&gt;

&lt;p&gt;Just open a webpage on multiple devices, enter the same room code, and share content instantly.&lt;/p&gt;

&lt;p&gt;That project became &lt;strong&gt;ClipSync&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;ClipSync uses a simple concept: &lt;strong&gt;temporary rooms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each room acts as a shared clipboard where devices can send and receive content in real time.&lt;/p&gt;

&lt;p&gt;Workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open ClipSync on two or more devices&lt;/li&gt;
&lt;li&gt;Enter the same room code&lt;/li&gt;
&lt;li&gt;Anything you paste appears instantly on the other devices&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;text&lt;/li&gt;
&lt;li&gt;images&lt;/li&gt;
&lt;li&gt;files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All connected devices see updates in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-Time Sync
&lt;/h2&gt;

&lt;p&gt;To make syncing instant, the application uses &lt;strong&gt;WebSockets&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a user sends text or uploads a file, the server broadcasts the event to every device connected to the same room.&lt;/p&gt;

&lt;p&gt;This allows updates to appear immediately without refreshing the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;p&gt;The project is intentionally simple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Socket.io for real-time communication&lt;/li&gt;
&lt;li&gt;Redis for temporary storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typescript&lt;/li&gt;
&lt;li&gt;Modern browser APIs&lt;/li&gt;
&lt;li&gt;Responsive layout for mobile and desktop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Redis stores room data and automatically expires entries after a set time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Temporary Storage
&lt;/h2&gt;

&lt;p&gt;ClipSync is designed for &lt;strong&gt;quick temporary sharing&lt;/strong&gt;, not long-term storage.&lt;/p&gt;

&lt;p&gt;Rooms automatically expire after 24 hours.&lt;/p&gt;

&lt;p&gt;There are also some limits to keep the service stable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;maximum 30 items per room&lt;/li&gt;
&lt;li&gt;maximum 5 files per room&lt;/li&gt;
&lt;li&gt;maximum file size of 25 MB&lt;/li&gt;
&lt;li&gt;maximum text length of 30,000 characters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If limits are exceeded, the oldest items are removed automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Platform by Default
&lt;/h2&gt;

&lt;p&gt;Because ClipSync runs entirely in the browser, it works on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any device with a modern browser can join a room and start sharing content instantly.&lt;/p&gt;

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

&lt;p&gt;This project started as a small experiment, but I quickly realized how often I needed something like this.&lt;/p&gt;

&lt;p&gt;Sometimes the simplest tools solve everyday annoyances better than complex solutions.&lt;/p&gt;

&lt;p&gt;Instead of installing apps or creating accounts, I just wanted something that works instantly when needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;If you're curious, you can try ClipSync here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://clipsync.live" rel="noopener noreferrer"&gt;https://clipsync.live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm always interested in feedback from other developers. If you have ideas for improvements or features, I'd love to hear them.&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>redis</category>
    </item>
  </channel>
</rss>
