Engineering articles
How a URL shortener actually works under load: redirect latency budgets, cache hierarchies, ClickHouse analytics pipelines, idempotent APIs, and the infrastructure choices behind Elido's edge. These are engineering deep-dives with real numbers from our production systems, written for developers who want to build on a link platform or just enjoy systems design. If you evaluate vendors by their architecture pages, start here.
- Engineering
Redirect Loop: How to Find and Fix ERR_TOO_MANY_REDIRECTS
A redirect loop bounces the browser between URLs until it quits. Trace the redirect chain in one command, name the rule that disagrees, and fix it for good.
11 min readredirect loop · err_too_many_redirects · too many redirects - Engineering
URL Shortener CLI: Shorten Links From the Terminal
Shorten a URL from the command line with curl and jq, wrap it in a shell function, copy to the clipboard, and shorten a whole file with xargs in parallel.
5 min readurl shortener cli · shorten url command line · curl url shortener - Engineering
How to Shorten a URL in Ruby With Net::HTTP and Faraday
Shorten a URL in Ruby with Net::HTTP and no gems, then add timeouts, retries, and idempotency, or hand the whole job to Faraday in a Rails app.
5 min readhow to shorten a url in ruby · ruby url shortener · shorten url ruby net http - Engineering
How to Shorten a URL in PowerShell With Invoke-RestMethod
Shorten a URL in PowerShell with one cmdlet, then handle 429s, keep the API key out of the script, and shorten a whole CSV column with ForEach-Object -Parallel.
5 min readhow to shorten a url in powershell · powershell url shortener · invoke-restmethod post json - Engineering
How to Shorten a URL in PHP With curl, Guzzle, or WordPress
Shorten a URL in PHP with a short curl block, the same call in Guzzle or Laravel, a WordPress version with wp_remote_post, plus retries and bulk shortening.
7 min readhow to shorten a url in php · php url shortener · shorten url php curl - Engineering
How to Shorten a URL in JavaScript With fetch and Node
Shorten a URL in JavaScript with one fetch call, then add a timeout, retries, and idempotency - and see why the browser is the wrong place to hold the key.
7 min readhow to shorten a url in javascript · url shortener node js · shorten url javascript fetch - Engineering
How to Shorten a URL in Java With the Built-in HttpClient
Shorten a URL in Java with java.net.http and no dependencies, then add a timeout, retries with an Idempotency-Key, and bulk shortening on virtual threads.
5 min readhow to shorten a url in java · java url shortener api · java httpclient post json - Engineering
How to Shorten a URL in Go With net/http and errgroup
Shorten a URL in Go with net/http and a JSON body, then add a context deadline, retries with an Idempotency-Key, and bounded bulk shortening via errgroup.
7 min readhow to shorten a url in go · golang url shortener api · shorten url go net/http - Engineering
How to Shorten URLs in Excel: Four Routes That Work
Excel's WEBSERVICE formula cannot POST, so shortening links needs Office Scripts, Power Automate, or a bulk import. Which route fits how often the sheet runs.
5 min readhow to shorten urls in excel · excel url shortener · webservice function excel - Engineering
How to Shorten a URL in C# With HttpClient and .NET
Shorten a URL in C# with PostAsJsonAsync, then wire IHttpClientFactory, a resilience handler, an Idempotency-Key, and bounded bulk shortening with Parallel.
5 min readhow to shorten a url in c# · c# url shortener api · httpclient postasjsonasync - Engineering
Why Your Short Links Get Blocked in Slack and Teams
Short links get blocked in Slack and Teams when a shared shortener domain fails a security check like Safe Links. Why it happens, and the branded-domain fix.
5 min readshort links blocked in slack · bitly links blocked · microsoft teams safe links - Engineering
Agentic Commerce: Links Built for AI Agents to Use
Agentic commerce means AI agents, not humans, follow your links and buy. Why links must be stable, machine-resolvable, and tracked server-side to survive it.
4 min readagentic commerce · agentic ai checkout · links for ai agents - Engineering
How to Shorten a URL in Python With the requests Library
Shorten a URL in Python with a few lines of requests: POST to a shortener API, read the short link back, then add retries, idempotency, bulk, and async.
6 min readhow to shorten a url in python · python url shortener · shorten url python requests - Engineering
GA4's AI Assistant Channel: What It Tracks and Misses
GA4's new AI Assistant channel breaks out ChatGPT, Gemini, and Copilot traffic - but excludes Perplexity and isn't retroactive. What it tracks, and the gaps.
4 min readga4 ai assistant channel · ga4 ai traffic · track chatgpt traffic ga4 - Engineering
Firefox and Brave Are Breaking Your UTM Attribution
Firefox strips UTM parameters and Brave blocks the scripts that read them, so browser privacy is quietly breaking your attribution. Why, and how slugs survive.
4 min readfirefox strip utm parameters · browsers strip utm · brave utm tracking - Engineering
Bitly API Alternative for Developers: What to Look For
A Bitly API alternative for developers: where Bitly's rate limits and plan gating bite, and what a dev-first shortener API should give you instead.
4 min readbitly api alternative · bitly api · url shortener api - Engineering
Free URL Shortener API: Code Examples That Run
A free URL shortener API with runnable curl, JavaScript, Python, and Go examples, plus the honest part: what free tiers gate and what production needs.
5 min readfree url shortener api · url shortener api · shorten url api - Engineering
Open Redirect Vulnerabilities and How to Prevent Them
An open redirect lets an attacker bend a trusted link to a malicious site. How the bug works, why it powers phishing, and the server-side fix that kills it.
6 min readopen redirect vulnerability · open redirect · unvalidated redirect - Engineering
How to Build a URL Shortener: Architecture and Code
How to build a URL shortener that survives production: short-code generation, the redirect path, caching, click tracking, abuse defense, and what to maintain.
8 min readbuild a url shortener · url shortener system design · short code generation - Engineering
Types of URL Redirects: 301, 302, 307, 308, and More
Every URL redirect type explained - 301, 302, 303, 307, 308, meta refresh, and JavaScript - what each does, how it affects SEO, and which one to use.
7 min readtypes of redirects · url redirect types · 301 redirect - Engineering
301 vs 302 Redirects: Which One Should Short Links Use
A 301 is a permanent redirect that passes ranking signals; a 302 is temporary and usually does not. What that means for short links, SEO, and caching.
7 min read301 vs 302 redirect · 301 redirect · 302 redirect - Engineering
URL Shortener API: Rate Limits, Retries, Idempotency
How to call a URL shortener API in production: token-bucket rate limits, which status codes to retry with backoff, and idempotency keys that stop duplicates.
8 min readurl shortener api rate limits · api idempotency key · retry with exponential backoff - Engineering
Do URL Shorteners Hurt SEO? The Mechanics That Matter
Do URL shorteners hurt SEO? Reputable ones do not - Google passes ranking signals through redirects. The four cases that cost you rank, and how to avoid them.
8 min readdo url shorteners hurt seo · are short links bad for seo · 301 vs 302 redirect seo - Engineering
Short link monitoring with Sentry and Datadog
Forward 4xx/5xx redirect events and edge latency p99 to Sentry as issues and Datadog as metrics. Sample dashboards, alert thresholds.
8 min readshort link monitoring · sentry url monitoring · datadog short link metrics - Engineering
How Do URL Shorteners Work? The Mechanics Explained
How do URL shorteners work? Store a slug-to-destination mapping, look up the key on each click, return an HTTP redirect. The mechanics, end to end
12 min readhow do url shorteners work · url shortener mechanics · 301 vs 302 redirect - Engineering
Shipping the TinyURL migration: Pro/Bulk REST, no free tier
How we built one-click TinyURL Pro/Bulk imports for Elido - why public TinyURL has no API, the alias-vs-slug terminology, and the limit we shipped on purpose.
6 min readtinyurl migration · url shortener · go worker - Engineering
Shipping the Short.io migration: per-domain pagination
How we built one-click Short.io imports for Elido: the per-domain pagination model, the deactivated-private-link rule, and our fastest migration source.
6 min readshort.io migration · url shortener · go worker - Engineering
Shipping the Rebrandly migration worker
How we built one-click Rebrandly imports for Elido: the 25-per-page pagination, the optional workspace filter, conflict strategies, and what we don't migrate.
6 min readrebrandly migration · url shortener · go worker - Engineering
Shipping the Dub.co migration: folders flatten into tags
How we built one-click Dub.co imports for Elido: the cleanest API of the five vendors, folder-to-tag flattening, and the EU-residency side-grade.
7 min readdub.co migration · url shortener · go worker - Engineering
Fire-and-forget click ingestion with Redpanda
How edge POPs emit click events without blocking the redirect, how the click-ingester worker batches into ClickHouse, and what we trade away for the latency win
11 min readfire and forget click ingestion · redpanda click events · clickhouse batch insert - Engineering
Edge POPs vs DNS-only routing: the latency budget tradeoff
Why DNS-based load balancing tops out near 50ms p50 and what an anycast edge POP gives you below it, with four numbers that decide which fits your URL shortener
9 min readedge pop vs dns · anycast vs dns failover · edge routing latency - Engineering
Cache strategy for URL redirects: L1 LRU and L2 Redis
How a two-tier cache keeps p95 redirect latency under 15ms: the L1 LRU eviction policy, the Redis warming strategy, and failure modes we have seen in production
13 min readurl redirect cache · ristretto lru · redis cluster - CornerstoneEngineering
Sentry/GlitchTip across 12 Go services on the hot path
How Elido shipped a shared sentryinit package giving every Go service the same panic + 5xx auto-capture, staying zero-alloc on edge-redirect's hot path.
13 min readsentry go middleware · glitchtip self-hosted · observability url shortener - Engineering
Why we use ClickHouse for click analytics (and not Postgres)
The workload is 100M+ events/month, write-heavy, analytical-query-shaped. Why columnar wins, the schema we ship, and what we hit at 90 days of Postgres
13 min readclickhouse click analytics · clickhouse for analytics · click event storage - CornerstoneEngineering
Hitting p95 < 15ms for redirects from FRA, ASH, and SGP
How Elido's edge-redirect path holds a 15ms p95 budget on cache HIT across three regions - architecture, cache strategy, real-region measurements
15 min readurl shortener performance · edge redirect latency · multi-region url shortener - CornerstoneEngineering
Self-hosting Elido on k3s - a complete playbook
A step-by-step guide to deploying the full Elido stack on k3s: Helm bootstrap, 14 services, StatefulSet data plane, Caddy on-demand TLS, backups, and upgrades.
13 min readself hosted url shortener · k3s · kubernetes url shortener - CornerstoneEngineering
Manage your short links as Terraform with terraform-provider-elido
terraform-provider-elido is the only Terraform provider in the URL-shortener space. How the link lifecycle and drift detection work, plus v0.1.0 trade-offs.
13 min readterraform · infrastructure as code · url shortener - Engineering
Shipping the Bitly migration: one worker, four caps
How we built one-click Bitly imports for Elido - the worker design, the conflict-resolution rules, and the four caps that keep an in-process goroutine safe.
8 min readbitly migration · url shortener · go worker