Create Your Own URL Shortener with Python: A Complete Guide

In the digital world, URL shorteners are used to make long web addresses more manageable and easier to share. While there are many URL shortening services like Bit.ly and TinyURL, why not create your own URL shortener using Python? In this guide, I will walk you through building your own custom URL shortener from scratch, allowing you full control over how it looks and functions.

Not only will this be an exciting project for you, but it will also help you learn valuable Python and web development skills. And if you’re looking for more interesting Python projects, be sure to check out the full range of tutorials at Codeezy.org, where you’ll find practical, easy-to-follow guides.


Why Build Your Own URL Shortener?

URL shorteners are handy, but having your own means you can:

  1. Control the format and domain of your shortened links.
  2. Learn more about Python, Flask, and web development.
  3. Develop a tool that is customizable to your needs.

Codeezy.org is dedicated to providing simple and effective tutorials that help you create real-world applications like this one.


Requirements for the URL Shortener Project

Before diving into the code, here’s what you’ll need:

  • Python installed: Ensure you have Python installed. If not, download it from Python’s official site.
  • Flask Framework: Flask is a lightweight web framework in Python. We’ll use it to handle HTTP requests.
  • shortuuid Library: This library generates short, unique IDs for our URLs.

To install Flask and shortuuid, run the following commands in your terminal:

				
					pip install flask
pip install shortuuid

				
			

Once installed, you’re ready to start coding your own URL shortener!


Step 1: Set Up Your Python Project

First, let’s create a project folder and the main Python file.

				
					mkdir url_shortener
cd url_shortener
touch app.py

				
			

In your app.py file, import the necessary libraries and initialize Flask:

				
					from flask import Flask, request, redirect
import shortuuid

app = Flask(__name__)
url_mapping = {}

				
			

We’ve initialized our Flask app and created a dictionary url_mapping to store the original URLs along with their shortened versions.


Step 2: Shorten URLs

Next, create a function that takes the original URL, generates a short unique ID, and stores the URL in the dictionary.

				
					@app.route('/shorten', methods=['POST'])
def shorten_url():
    original_url = request.form['url']
    short_id = shortuuid.uuid()[:6]  # Generates a short unique ID
    url_mapping[short_id] = original_url
    return f"Shortened URL: http://localhost:5000/{short_id}"

				
			

In this function:

  • The original URL is taken from a form submission.
  • A short unique ID is generated using shortuuid.
  • The original URL is stored with the short ID in the dictionary.
  • The shortened URL is returned to the user.

Step 3: Handle URL Redirection

Now, we need to create a function that will handle redirection when someone clicks on the shortened URL.

				
					@app.route('/<short_id>')
def redirect_to_url(short_id):
    original_url = url_mapping.get(short_id)
    if original_url:
        return redirect(original_url)
    else:
        return "URL not found", 404

				
			

This function:

  • Retrieves the original URL using the short ID.
  • Redirects the user to the original URL if the ID is found.
  • Returns a 404 error if the short ID doesn’t exist.

Step 4: Running the Application

To run the Flask app, add the following at the end of your app.py file:

				
					if __name__ == '__main__':
    app.run(debug=True)

				
			

Start the app by running:

				
					python app.py

				
			

Visit http://localhost:5000 to test your application.


Step 5: Testing the URL Shortener

We can add a simple HTML form to test the shortening functionality directly from the browser. Add the following route for a form that users can input their URLs into:

				
					@app.route('/')
def home():
    return '''
    <form action="/shorten" method="POST">
        <label for="url">Enter the URL to shorten:</label><br>
        <input type="text" id="url" name="url"><br><br>
        <input type="submit" value="Shorten URL">
    </form>
    '''

				
			

When you visit http://localhost:5000, you’ll now see a form where you can enter a URL to shorten.

Example Output:

  • Original URL: https://codeezy.org/all-projects/
  • Shortened URL: http://localhost:5000/abc123

Now, when you visit http://localhost:5000/abc123, it will redirect you to the original URL https://codeezy.org/all-projects/.


Conclusion

Congratulations! You’ve successfully built a URL shortener using Python and Flask. This simple project is not only a great way to deepen your Python and web development skills, but it also provides a practical tool that you can use or modify further.

At Codeezy.org, we specialize in creating easy-to-follow guides like this one, helping you learn real-world skills. If you enjoyed this project and want to explore more Python projects, check out our growing list of tutorials. Whether you’re a beginner or an experienced developer, Codeezy.org is here to help you code better!


Why Choose Codeezy.org?

At Codeezy.org, we prioritize making coding easy and practical. Our tutorials are structured in a way that helps you apply your knowledge to real-world projects. Whether you’re just starting or want to level up your coding skills, our resources will guide you through projects, step-by-step, ensuring that you learn efficiently.

Visit Codeezy.org today and start building something amazing!