2025-12-13

How to Deploy Your App on Render — Free Tier, Step-by-Step Guide

Flask, Deployment, Render, GitHub, Python · Dorian Sotpyrc

Deployment feels intimidating the first time because it introduces new moving parts: GitHub, build commands, and something running outside your laptop.

This guide is intentionally simple: follow these steps and you’ll end with a live public URL serving your Flask app on Render’s free tier.

Flask app deployed on Render free tier
A Flask app running live on Render’s free tier.

Deploy your Flask app on Render in 9 steps

  1. Create a new GitHub repo

    Create a repository for your Flask app and push your code to it. Render will deploy from this repo.

    Creating a new GitHub repository
    Create a new repository on GitHub for your Flask app.
  2. Ensure you have a correctly configured render.yaml

    render.yaml is the recipe Render uses to build and start your app. If this file is missing or the start command doesn’t match your code, the deployment will fail.

    For this guide, we use the simplest and most reliable pattern: a single app.py file that exposes a top-level Flask object named app, started with gunicorn app:app.

    YAML
    services:
       
      - type: web
        name: render-dashboard-demo
        env: python
        plan: free
        buildCommand: "pip install -r requirements.txt"
        startCommand: "gunicorn app:app --bind 0.0.0.0:$PORT"
        
    
    What to double-check

    ✓ buildCommand installs dependencies from requirements.txt

    ✓ startCommand matches your entrypoint — app:app means “import app.py and use the Flask object named app”

    ✓ The app binds to $PORT so Render can route traffic correctly

    The #1 deployment mistake

    Don’t mix patterns. If your start command uses app:app, your code must define app = Flask(__name__). If you use an app factory like create_app(), your start command must use the factory form.

  3. Log in to Render using GitHub

    Log in at render.com and authenticate using your GitHub account so Render can access the repository you created in Step 1.

  4. Create a new Web Service

    In the Render dashboard, click New and choose Web Service.

    Creating a new web service on Render
    Create a new Web Service on Render.
  5. Select and connect your GitHub repo

    Choose the repository you created in Step 1 and connect it to Render.

  6. Leave defaults and ensure Free tier is selected

    Leave the defaults as-is and confirm the instance type is set to Free. This is plenty for learning, demos, and small hobby projects.

    Connecting the GitHub repository and selecting defaults
    Connect the repo and confirm the Free tier is selected.
  7. Watch the build start and confirm there are no errors

    Render will kick off the first build immediately. Watch the logs and look for a clean run: dependencies install, Gunicorn starts, and there are no red stack traces.

    If you hit issues, check these two things first:

    Quick checks

    ✓ Check 1: Did the application run locally without errors?

    ✓ Check 2: Does your render.yaml start command match your app entrypoint (for this tutorial: gunicorn app:app)?

    Render build logs running successfully
    Watch the build logs and confirm there are no errors.
  8. When it says Live, open the public URL

    When Render signals Live, your app is running publicly. Open the URL Render provides and confirm your site loads.

    This is the moment your project becomes real: it’s live on the internet, not just on your laptop.

    Render service marked Live with public URL
    Your service is Live — open the URL and view your public site.
  9. Share the link with your friends

    You now have a real public deployment. Send the link to someone else and enjoy the fact it works outside your laptop.

Get the exact deployment project

The repo used in this walkthrough:
https://github.com/dorian-sotpyrc/render-deployment-demo
Clone it and deploy your own copy.

Related PLEX reading

References & further reading