DEV Community

Riichi Mirza
Riichi Mirza

Posted on

Do URL shorteners hurt SEO? What actually happens with 301s, 302s and link equity

Every few weeks someone asks me whether putting a short link in a tweet, a PDF, or a QR code "kills the SEO". The honest answer: it depends on the redirect your shortener returns — and you can check that in ten seconds.

Check what your shortener actually returns

curl -sI https://short.example/abc | grep -iE '^(HTTP|location)'
# HTTP/2 301
# location: https://example.com/landing
Enter fullscreen mode Exit fullscreen mode

That's all a shortener is: a lookup table plus an HTTP redirect. What matters is the status code.

Status Meaning SEO effect
301 Moved permanently Google consolidates signals to the target. Best for links you'll never change.
308 Permanent, keeps method Same as 301 for SEO.
302 / 307 Temporary Google usually still follows and, if it stays long, treats it like permanent — but it's a weaker, slower signal.
200 + JS/meta refresh "Interstitial" page Worst case: an extra page, often with ads, sometimes not followed cleanly.

Things that actually cause problems

  1. Interstitial/ad pages. Some free shorteners show an ad page before redirecting. Crawlers and users both hate it.
  2. Redirect chains. short → tracking domain → http → https → www. Each hop adds latency and risk. Aim for one hop.
  3. Shortener domains on spam lists. Shared shortener domains get abused; some platforms then block or warn on them.
  4. Dead services. If the shortener shuts down, every link breaks. This is the real long-term risk.

Where short links are fine

  • Social posts, emails, SMS, print/QR: the links are usually nofollow or not crawled anyway — the goal is clean, trackable clicks.
  • Internal analytics: a 301 with UTM parameters on the target works well.

Where to avoid them

  • Links you place on your own site to your own pages — just link directly.
  • Canonical tags, sitemaps, hreflang — always final URLs.

Minimal DIY shortener (for the curious)

// Node, no deps — illustrates the core idea
import http from 'node:http';
const links = { docs: 'https://example.com/docs' };
http.createServer((req, res) => {
  const target = links[req.url.slice(1)];
  if (!target) { res.writeHead(404).end(); return; }
  res.writeHead(301, { Location: target, 'Cache-Control': 'max-age=3600' }).end();
}).listen(8080);
Enter fullscreen mode Exit fullscreen mode

Real services add persistence, rate-limiting, abuse checks, and click stats — but the SEO-relevant part is just that 301.

TL;DR

  • Use a shortener that returns a single 301 with no interstitial.
  • Don't use short links for your own internal links or canonicals.
  • Test with curl -I before you print anything.

I built a small free URL shortener while working on this — no sign-up, no expiry, no preview or waiting page; links look like riichimirza.com/s/abc — if you want to try one. Run the curl check on it too; you should verify every tool, including mine.

What redirect does your favourite shortener return? Curious what people find.

Top comments (0)