<?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: Bohdan Romashko</title>
    <description>The latest articles on DEV Community by Bohdan Romashko (@bohd0ne).</description>
    <link>https://dev.to/bohd0ne</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4135805%2Fe70989ae-ba54-4229-911f-776d22e1ac24.webp</url>
      <title>DEV Community: Bohdan Romashko</title>
      <link>https://dev.to/bohd0ne</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bohd0ne"/>
    <language>en</language>
    <item>
      <title>A Short Link Can Work and Still Be Wrong</title>
      <dc:creator>Bohdan Romashko</dc:creator>
      <pubDate>Mon, 19 Oct 2026 07:43:55 +0000</pubDate>
      <link>https://dev.to/bohd0ne/a-short-link-can-work-and-still-be-wrong-1ffm</link>
      <guid>https://dev.to/bohd0ne/a-short-link-can-work-and-still-be-wrong-1ffm</guid>
      <description>&lt;p&gt;A short link can redirect successfully and still take someone to the wrong place. An HTTP redirect answers, “Where should the browser go next?” A final &lt;code&gt;200 OK&lt;/code&gt; answers, “Did the destination return a response?” Neither answers, “Is this the page the reader needs?”&lt;/p&gt;

&lt;p&gt;Imagine sharing a short URL for an event registration form. A week later, the organizer replaces the form but leaves the old page online. The short URL still opens. The old page may even return &lt;code&gt;200 OK&lt;/code&gt;. The network request looks healthy, but the person following the link can no longer register.&lt;/p&gt;

&lt;p&gt;That is why I treat short-link testing as two separate checks: the &lt;strong&gt;route&lt;/strong&gt; and the &lt;strong&gt;reader's destination&lt;/strong&gt;.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9fzgks56uaa0ab30iq5j.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9fzgks56uaa0ab30iq5j.png" alt="Diagram showing two checks for a short link: verify the redirect route, then verify what the reader sees at the destination." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the route
&lt;/h2&gt;

&lt;p&gt;Open your browser's developer tools, go to the Network panel, and enable &lt;strong&gt;Preserve log&lt;/strong&gt; before opening the short link. This keeps the requests visible as the browser moves between pages. &lt;a href="https://developer.chrome.com/docs/devtools/network/reference" rel="noopener noreferrer"&gt;Chrome's Network panel guide&lt;/a&gt; shows where to find that setting.&lt;/p&gt;

&lt;p&gt;Inspect the short-link request. A redirect response normally points to the next URL through the &lt;code&gt;Location&lt;/code&gt; header, as explained in &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Redirections" rel="noopener noreferrer"&gt;MDN's redirect guide&lt;/a&gt;. Follow the chain to the final URL and compare its domain and path with the destination you intended to share.&lt;/p&gt;

&lt;p&gt;If the link carries campaign parameters, check the final URL rather than assuming those parameters survived the redirect. A successful redirect to a URL missing the parameters you needed is still a failed campaign link.&lt;/p&gt;

&lt;p&gt;If a destination changed recently but the link still opens the old page, browser cache may be involved: a &lt;code&gt;301&lt;/code&gt; redirect can be cached. With DevTools open, enable &lt;strong&gt;Disable cache&lt;/strong&gt; and load the short URL again. This bypasses the browser cache for that test; a normal window may still show what returning readers encounter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check what the reader sees
&lt;/h2&gt;

&lt;p&gt;Now leave the Network panel and open the link in a private window without signing in. Does the page show the current form, document, or offer? Can an ordinary reader use it? If most readers will open the link on a phone, test it on a phone-sized screen too.&lt;/p&gt;

&lt;p&gt;This catches failures that status codes cannot. A login page can return &lt;code&gt;200 OK&lt;/code&gt;. So can an outdated PDF, a closed registration form, or a page that loads but hides the action the reader came for. The browser completed the trip; the reader did not complete the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the test repeatable
&lt;/h2&gt;

&lt;p&gt;Before publishing a short URL, write down its expected destination in plain language: “This link should open the current event signup form for someone who is not logged in.” Then run both checks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Route:&lt;/strong&gt; Does the redirect end at the intended URL, with any necessary parameters intact?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reader:&lt;/strong&gt; Does that page show the current content and let the intended audience do what the link promises?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Run the same check again if the destination page changes. A short link is not ready simply because it resolves. It is ready when the path and the experience at the end of that path are both right.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>http</category>
      <category>debugging</category>
    </item>
  </channel>
</rss>
