Engineering-artikelen
Hoe een URL-shortener écht werkt onder belasting: latency-budgetten voor redirects, cache-hiërarchieën, ClickHouse-analytics-pipelines, idempotente API's, en de infrastructuurkeuzes achter Elido's edge. Dit zijn technische deep-dives met echte cijfers uit onze productiesystemen, geschreven voor developers die op een linkplatform willen bouwen of die simpelweg van systeemarchitectuur houden. Als je leveranciers beoordeelt op hun architectuurpagina's, begin dan hier.
- Engineering
Canonical vs 301-redirect: hoe je het juiste signaal kiest
Een canonical tag is een hint die zoekmachines mogen negeren; een 301-redirect is een instructie waaraan ze moeten gehoorzamen. Welke past bij vier alledaagse duplicate-URL-gevallen.
9 min leestijdcanonical vs 301 redirect · rel=canonical · canonical tag - Engineering
Maximale URL-lengte: de tekenlimiet in de praktijk
Er is geen maximale URL-lengte in de spec. Het echte plafond is de laagste limiet in de keten die je link doorkruist: browser, server, inbox of QR-code.
8 min leestijdmaximum url length · max url length · url character limit - Engineering
AI-crawlers en korte links: wat de bots echt doen
Training-crawlers, live fetchers en zoekbots raken allemaal je redirects. Welke een 301 volgen, wat ze je klikaantallen kosten, en welke je moet doorlaten.
6 min leestijdai crawlers · gptbot · robots.txt - Engineering
URL-encoding uitgelegd: welke tekens je moet escapen
URL-encoding vervangt een teken door een procentteken en twee hexadecimale cijfers, zodat het niet als URL-syntax kan worden gelezen. Welke tekens dat nodig hebben, en waar het misgaat.
7 min leestijdurl encoding · percent encoding · encodeuricomponent - Engineering
Redirect-lus: hoe je ERR_TOO_MANY_REDIRECTS vindt en oplost
Een redirect-lus stuitert de browser heen en weer tussen URL's totdat hij het opgeeft. Traceer de redirectketen met één commando, benoem de regel die niet overeenstemt, en los het definitief op.
11 min leestijdredirect 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 leestijdurl 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdhow 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 leestijdshort 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 leestijdagentic 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 leestijdhow 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 leestijdga4 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 leestijdfirefox 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 leestijdbitly 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 leestijdfree 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 leestijdopen 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 leestijdbuild 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 leestijdtypes 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.
8 min leestijd301 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 leestijdurl 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 leestijddo 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 leestijdshort 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 leestijdhow 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 leestijdtinyurl 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 leestijdshort.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 leestijdrebrandly 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 leestijddub.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 leestijdfire 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 leestijdedge 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 leestijdurl redirect cache · ristretto lru · redis cluster - KernartikelEngineering
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 leestijdsentry 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 leestijdclickhouse click analytics · clickhouse for analytics · click event storage - KernartikelEngineering
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 leestijdurl shortener performance · edge redirect latency · multi-region url shortener - KernartikelEngineering
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 leestijdself hosted url shortener · k3s · kubernetes url shortener - KernartikelEngineering
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 leestijdterraform · 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 leestijdbitly migration · url shortener · go worker