Open source · MIT · Self-hostable

Short links with real click analytics

3m4 turns long URLs into tidy short links and shows you exactly who clicks — geo, device, and referrer breakdowns, QR codes, and a public API. Hosted by us, or self-host the whole thing.

Early access: every account gets full access, free. Plans come later, with notice.

Everything you need to share & measure links

Short codes

Random base62 codes on 3m4.net, or custom vanity slugs like 3m4.net/launch.

Custom domains

Bring your own domain with automatic TLS so links stay on-brand.

301 / 302 redirects

302 by default for accurate analytics; flip any link to a permanent 301.

Click analytics

Time-series, plus breakdowns by country, device, and referrer — no raw IPs stored.

QR codes

Every link ships with a downloadable QR code, generated on demand.

Public API

Create and manage links programmatically with role-scoped API keys.

MCP server for AI agents

Claude Code, Cursor or any MCP host can shorten links and read analytics for you, with roles, confirmations and an audit log.

New · Model Context Protocol

Let your AI agent manage links

3m4 ships an MCP server. Connect it to Claude Code, Claude Desktop, Cursor or any MCP host and ask things like “shorten this URL and give me the QR” or “which of my links got the most clicks this month?”

  • Role-scoped keys. A viewer key never even sees the delete tool; editor and admin unlock more. Enforced by the API too.
  • Human in the loop. Destructive actions ask you to confirm before anything happens.
  • Audit trail. Every change and every refused call is logged, server-side and agent-side.
  • Local or remote. Run it over stdio with npx 3m4-mcp (npm) or point your host at https://3m4.net/mcp with your key.
Claude Code · local (npm)
claude mcp add 3m4 --scope user --env M4_API_KEY=m4_live_… -- npx -y 3m4-mcp
Claude Code · remote (nothing to install)
claude mcp add --transport http 3m4 https://3m4.net/mcp --header "Authorization: Bearer m4_live_…"
Any MCP host (JSON)
{
  "mcpServers": {
    "3m4": {
      "command": "npx",
      "args": ["-y", "3m4-mcp"],
      "env": { "M4_API_KEY": "m4_live_…" }
    }
  }
}

Create a key with the role you want under Dashboard → API keys.

Self-host it (MIT, open source)

The entire stack — Flask API, redirect service, worker, and this Qwik app — is MIT-licensed. Run it on your own VPS with onedocker compose up. No billing code, no limits beyond what you configure.

View on GitHub