<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Short-Links on vanityURLs</title><link>https://vanityurls.link/en/tags/short-links/</link><description>Recent content in Short-Links on vanityURLs</description><generator>Hugo</generator><language>en-CA</language><lastBuildDate>Wed, 03 Jun 2026 14:44:13 -0400</lastBuildDate><atom:link href="https://vanityurls.link/en/tags/short-links/index.xml" rel="self" type="application/rss+xml"/><item><title>Accents, IDN, and short-link slugs</title><link>https://vanityurls.link/en/blog/accents-idn-and-short-link-slugs/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/accents-idn-and-short-link-slugs/</guid><description>&lt;p&gt;Accents belong in people names, page copy, titles, and destination websites. They do not belong in vanityURLs short-link slugs.&lt;/p&gt;
&lt;p&gt;That sounds stricter than the modern web really is. Browsers can show internationalized domain names. URLs can carry UTF-8 characters. Search engines can crawl paths with accents. People share links in many languages every day.&lt;/p&gt;
&lt;p&gt;The problem is not whether the internet can represent accents. It can. The problem is whether a short-link slug remains easy to type, review, compare, log, and defend when the same visible word can have more than one technical representation.&lt;/p&gt;</description></item><item><title>Do not delete a link to change its meaning</title><link>https://vanityurls.link/en/blog/link-lifecycle-states/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/link-lifecycle-states/</guid><description>&lt;p&gt;A short link usually outlives the moment that created it.&lt;/p&gt;
&lt;p&gt;Someone pastes it into a runbook. Someone prints it on a slide. Someone bookmarks it. Six months later, a destination changes and the tempting fix is to delete the row.&lt;/p&gt;
&lt;p&gt;Do not start there. In vanityURLs, lifecycle states make the operational decision explicit in &lt;code&gt;custom/v8s-links.txt&lt;/code&gt;: redirect, expire, disable, hold for maintenance, or disappear as a true not-found.&lt;/p&gt;
&lt;h2 id="redirect-states"&gt;Redirect States&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;permanent&lt;/code&gt; when the destination is stable. vanityURLs returns HTTP &lt;code&gt;301&lt;/code&gt;, the permanent redirect status defined by &lt;a href="https://www.rfc-editor.org/rfc/rfc9110"&gt;RFC 9110&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>vanityURLs compared with hosted and self-hosted shorteners</title><link>https://vanityurls.link/en/blog/vanityurls-vs-alternatives/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/vanityurls-vs-alternatives/</guid><description>&lt;p&gt;vanityURLs is for operators who want a branded short-link domain, operated from Git on Cloudflare Workers, without a shared hosted account, without a click database by default, and with configuration reviewed as code. It does not try to replace every hosted dashboard. It tries to make a small auditable redirector easy to own.&lt;/p&gt;
&lt;h2 id="comparison-table"&gt;Comparison Table&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Dimension&lt;/th&gt;
 &lt;th&gt;vanityURLs&lt;/th&gt;
 &lt;th&gt;Bitly&lt;/th&gt;
 &lt;th&gt;Dub&lt;/th&gt;
 &lt;th&gt;Short.io&lt;/th&gt;
 &lt;th&gt;YOURLS&lt;/th&gt;
 &lt;th&gt;Shlink&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Custom domain&lt;/td&gt;
 &lt;td&gt;Operator-owned Cloudflare domain&lt;/td&gt;
 &lt;td&gt;Hosted plan feature&lt;/td&gt;
 &lt;td&gt;Hosted plan feature&lt;/td&gt;
 &lt;td&gt;Hosted plan feature&lt;/td&gt;
 &lt;td&gt;Self-hosted domain&lt;/td&gt;
 &lt;td&gt;Self-hosted domain&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Analytics model&lt;/td&gt;
 &lt;td&gt;Disabled by default; optional server-side Umami or Fathom&lt;/td&gt;
 &lt;td&gt;Hosted analytics&lt;/td&gt;
 &lt;td&gt;Hosted analytics&lt;/td&gt;
 &lt;td&gt;Hosted analytics&lt;/td&gt;
 &lt;td&gt;Built-in self-hosted stats&lt;/td&gt;
 &lt;td&gt;Built-in visits&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Account required&lt;/td&gt;
 &lt;td&gt;No visitor account; operator uses Cloudflare and GitHub&lt;/td&gt;
 &lt;td&gt;Hosted account&lt;/td&gt;
 &lt;td&gt;Hosted account&lt;/td&gt;
 &lt;td&gt;Hosted account&lt;/td&gt;
 &lt;td&gt;Admin account on the install&lt;/td&gt;
 &lt;td&gt;Admin/API access on the install&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data residence&lt;/td&gt;
 &lt;td&gt;Depends on operator choices for Cloudflare, Git, and analytics&lt;/td&gt;
 &lt;td&gt;Controlled by provider&lt;/td&gt;
 &lt;td&gt;Controlled by provider&lt;/td&gt;
 &lt;td&gt;Controlled by provider&lt;/td&gt;
 &lt;td&gt;Your hosting/database choices&lt;/td&gt;
 &lt;td&gt;Your hosting/database choices&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ToS surface&lt;/td&gt;
 &lt;td&gt;Instance terms generated from config&lt;/td&gt;
 &lt;td&gt;Provider terms plus your link usage&lt;/td&gt;
 &lt;td&gt;Provider terms plus your link usage&lt;/td&gt;
 &lt;td&gt;Provider terms plus your link usage&lt;/td&gt;
 &lt;td&gt;Your terms&lt;/td&gt;
 &lt;td&gt;Your terms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Deployment model&lt;/td&gt;
 &lt;td&gt;Cloudflare Worker plus Static Assets from Git&lt;/td&gt;
 &lt;td&gt;Hosted software service&lt;/td&gt;
 &lt;td&gt;Hosted software service, open-source core&lt;/td&gt;
 &lt;td&gt;Hosted software service&lt;/td&gt;
 &lt;td&gt;PHP app and database&lt;/td&gt;
 &lt;td&gt;PHP service and database&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cost at scale&lt;/td&gt;
 &lt;td&gt;Cloudflare usage plus optional analytics provider&lt;/td&gt;
 &lt;td&gt;Per plan&lt;/td&gt;
 &lt;td&gt;Per plan&lt;/td&gt;
 &lt;td&gt;Per plan&lt;/td&gt;
 &lt;td&gt;Hosting and maintenance&lt;/td&gt;
 &lt;td&gt;Hosting and maintenance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Code visibility&lt;/td&gt;
 &lt;td&gt;MIT open source code and instance config in Git&lt;/td&gt;
 &lt;td&gt;Closed hosted service&lt;/td&gt;
 &lt;td&gt;Open-source product with hosted service&lt;/td&gt;
 &lt;td&gt;Closed hosted service&lt;/td&gt;
 &lt;td&gt;Open source&lt;/td&gt;
 &lt;td&gt;Open source&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Link scheduling&lt;/td&gt;
 &lt;td&gt;Configured in Git and evaluated by the Worker&lt;/td&gt;
 &lt;td&gt;Depends on plan/product&lt;/td&gt;
 &lt;td&gt;Depends on product&lt;/td&gt;
 &lt;td&gt;Depends on product&lt;/td&gt;
 &lt;td&gt;Depends on plugins/custom code&lt;/td&gt;
 &lt;td&gt;Depends on built-in features&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Bulk operations&lt;/td&gt;
 &lt;td&gt;Text file and &lt;code&gt;lnk&lt;/code&gt; CLI workflow&lt;/td&gt;
 &lt;td&gt;Dashboard/API/import&lt;/td&gt;
 &lt;td&gt;Dashboard/API/import&lt;/td&gt;
 &lt;td&gt;Dashboard/API/import&lt;/td&gt;
 &lt;td&gt;Admin/API/database workflows&lt;/td&gt;
 &lt;td&gt;CLI/API workflows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="bitly"&gt;Bitly&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://bitly.com/"&gt;Bitly&lt;/a&gt; wins when a team wants a mature hosted product, a dashboard-centered workflow, brand/campaign features, and a vendor responsible for product operations. It is the safer choice when non-technical users need to create and inspect links without touching Git or Cloudflare.&lt;/p&gt;</description></item><item><title>Make the short domain look owned</title><link>https://vanityurls.link/en/blog/branding-your-short-link-domain/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/branding-your-short-link-domain/</guid><description>&lt;p&gt;A short-link domain is tiny, but people still read it as a signal.&lt;/p&gt;
&lt;p&gt;It appears in emails, slides, social profiles, QR codes, documentation, incident updates, and chat messages. If the domain looks intentional, the link feels safer before anyone clicks it.&lt;/p&gt;
&lt;p&gt;This is the useful part of branding vanityURLs: make the redirector obviously yours without turning the first deployment into a design project.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://vanityurls.link/blog/v8s-link-homepage.png" alt="v8s.link homepage with split-color wordmark, search field, and redirected by vanityURLs.link badge"&gt;&lt;/p&gt;</description></item><item><title>When scheduled links are useful</title><link>https://vanityurls.link/en/blog/when-scheduled-links-are-useful/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/when-scheduled-links-are-useful/</guid><description>&lt;p&gt;Most short links should be boring: one slug, one destination, one clear owner. Scheduled links are for the few cases where the slug should stay stable but the destination needs to change during a predictable time window.&lt;/p&gt;
&lt;p&gt;The starter instance includes a deliberately silly &lt;code&gt;/contact&lt;/code&gt; example. During the configured 9-to-5 window, it can point to Dolly Parton&amp;rsquo;s &amp;ldquo;9 to 5&amp;rdquo;; outside that window, it falls back to Rick Astley and &amp;ldquo;Never Gonna Give You Up.&amp;rdquo; The point is not the music taste, heroic as it may be. The point is that one memorable short link can have a normal destination and a time-based exception.&lt;/p&gt;</description></item></channel></rss>