Skip to content

spoo.me is a free and easy-to-use URL shortener that lets you create short links for any website. You can choose your own alias, set a password, and limit the number of clicks.

License

Notifications You must be signed in to change notification settings

spoo-me/url-shortener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

spoo.me

Shorten Your Url not Your Possibilities πŸš€

πŸ”₯ Features πŸ“Œ Endpoints πŸ› οΈ API Docs πŸš€ Getting Started 🀝 Contributing

Total URLs Shortened Total Clicks Redirected Discord X (formerly Twitter) Follow

⚑ Introduction

spoo.me is a free, open-source service for shortening URLs. It offers comprehensive URL statistics, a free API, and extensive customization options. You can create and manage your URLs, generate API keys, create custom slugs, add password protection, and manage link lifespans.

πŸ”₯ Features

  • Custom Slugs - Create custom slugs for your URLs 🎯
  • Emoji Slugs - Use emojis as slugs for your URLs πŸ˜ƒ
  • Password Protection - Protect your URLs with a password πŸ”’
  • Link Max Clicks - Set a maximum number of clicks for your URLs πŸ“ˆ
  • URL Statistics - View detailed statistics for your URLs with advanced analytics πŸ“Š
  • BOT Tracking - Track bot clicks on your URLs πŸ€–
  • API - A free and open-sourced API for URL shortening and statistics πŸ› οΈ
  • Export Click Data - Export click data as a CSV, JSON, XLSX, or XML file πŸ“€
  • Dashboard - Manage all your URLs and view analytics in one place πŸ“±
  • API Keys - Generate API keys for programmatic access with rate limiting πŸ”‘
  • Open Source - spoo.me is open-sourced and free to use πŸ“–
  • Absolutely Free - No hidden costs, no premium plans, no limitations πŸ’Έ
  • No Registration Required - Create short URLs without an account πŸ“
  • Self Hosting - You can host spoo.me on your own server 🏠

πŸ“Œ Endpoints

The basic structure for accessing a shortened URL is: https://spoo.me/<short_code>

Example - https://spoo.me/ga

πŸ” Accessing Password-Protected URLs

For password-protected URLs, use the same basic structure. This redirects to a password entry page.

Example - https://spoo.me/exa
Password - Example@12

Tip

Bypass the password entry page by appending the password to the URL parameters - https://spoo.me/<short_code>?password=<password>

πŸ“ˆ Checking URL Statistics

To view the statistics for a URL, use the following structure: https://spoo.me/stats/<short_code>

Example - https://spoo.me/stats/ga

Note

You won't be able to view statistics for a password-protected page unless you provide its password.

πŸ“Š Analytics Dashboard

Get deep insights into your shortened URLs with our comprehensive analytics platform:

  • Geographic Intelligence - Interactive world map showing click distribution by country and city 🌍
  • Device Analytics - Detailed breakdowns of devices, browsers, operating systems, and screen sizes πŸ“±
  • Traffic Patterns - Time-series charts showing clicks over time with granular date ranges ⏱️
  • Referrer Tracking - Understand where your traffic comes from with full referrer analysis πŸ”—
  • Bot Detection - Separate human traffic from bot clicks for accurate metrics πŸ€–
  • N-Dimensional Filtering - Apply multi-layer filters across browsers, platforms, referrers, short URLs, and more for granular analysis πŸ”
  • Custom Time Ranges - Filter analytics by specific date ranges, from hours to months, for precise temporal insights πŸ“…
  • Export Capabilities - Download your data in CSV, JSON, XLSX, or XML formats πŸ“€

Access statistics for any public URL at https://spoo.me/stats/<short_code> or manage all your links through the dashboard.

πŸ› οΈ API Docs

Spoo.me offers a free, open-source API for URL shortening and statistics. Check it out below:

spoo.me API

πŸš€ Getting Started

To self-host spoo.me on your server, follow the this detailed guide:

Self-Hosting Guide 🏠
Expand this for a Quick Start

Method 1 - Docker (Recommended)

πŸ“‹ Prerequisites

πŸ“‚ Clone the repository (Docker Method)

git clone https://github.com/spoo-me/url-shortener.git

Rename .env.example to .env

mv .env.example .env

βž• Adding environment variables to .env file

MONGODB_URI=<your_MONGODB_URI>
REDIS_URI=<your_REDIS_URI>

# OAuth Configuration (Optional - for social login features)
GOOGLE_CLIENT_ID=<your_google_client_id>
GOOGLE_CLIENT_SECRET=<your_google_client_secret>

# JWT Secret Keys (Required for authentication)
JWT_ISSUER=
JWT_AUDIENCE=
ACCESS_TOKEN_TTL_SECONDS=3600
REFRESH_TOKEN_TTL_SECONDS=2592000
COOKIE_SECURE="false"    # false: for local dev, true: for production
JWT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n.....\n-----END PRIVATE KEY-----"
JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n.....\n-----END PUBLIC KEY-----"
JWT_SECRET=""

[!NOTE]

  • The above is a minimal set of environment variables required to run spoo.me using Docker. Please refer to our official self-hosting guide for a complete list of environment variables and their descriptions.
  • OAuth credentials are optional. Users can still register with email/password if OAuth is not configured.
  • JWT secret keys should be long, random strings. You can generate them using openssl rand -hex 32.
  • With this method, you can either use a cloud service like MongoDB Atlas to store the data remotely or you can use a local MongoDB instance.
  • If you want to use a local MongoDB instance, your MongoDB URI would be mongodb://localhost:27017/.

πŸš€ Starting the server

docker-compose up -d

Method 2 - Manual

πŸ“‹ Prerequisites

  • MongoDB 🌿
    • MongoDB is only required if you want to store the data locally. You can also use a cloud service like MongoDB Atlas to store the data remotely.
  • Python 🐍
  • uv πŸ› οΈ

πŸ“‚ Clone the repository

git clone https://github.com/spoo-me/url-shortener.git

Installing uv for tooling

pip install uv

πŸ“¦ Install dependencies & setting virtual env

uv venv
uv sync

Rename .env.example to .env

mv .env.example .env

βž• Adding environment variables to .env file

Same as in the Docker method above.

[!NOTE]

  • OAuth credentials are optional. Users can still register with email/password if OAuth is not configured.
  • JWT secret keys should be long, random strings. You can generate them using openssl rand -hex 32.
  • If you installed MongoDB locally, your MongoDB URI would be mongodb://localhost:27017/ or if you are using MongoDB Atlas, you can find your MongoDB URI in the Connect tab of your cluster.

πŸš€ Starting the server

uv run main.py

🌐 Access the server

Open your browser and go to http://localhost:8000 to access the spoo.me URL shortener.

🀝 Contributing

Contributions are always welcome! πŸŽ‰ Here's how you can contribute:

Important

For any type of support or queries, feel free to reach out to us at βœ‰οΈ support@spoo.me



Β© spoo.me . 2025

All Rights Reserved

About

spoo.me is a free and easy-to-use URL shortener that lets you create short links for any website. You can choose your own alias, set a password, and limit the number of clicks.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published