1. What PythonAnywhere Does Well
PythonAnywhere has helped beginners put Python online for more than a decade. You sign up, open a console in your browser and run Python on a real server. You never install anything. Its Flask and Django tutorials are some of the friendliest on the web.
It also gets one thing right that many modern platforms get wrong. Your files stay on disk. A SQLite database in your home folder is still there tomorrow. That makes PythonAnywhere a natural first home for a small Flask or Django project.
So why do so many people search for an alternative? Usually, their project grew past what the plan allows. This guide covers the common reasons, compares five alternatives and walks through a move step by step.
2. Why People Look for Alternatives
The facts below come from PythonAnywhere's own pricing and help pages. Check them again before you decide, because plans change.
- The free web app expires. Free accounts get one web app, and PythonAnywhere's help pages list a one-month expiry. You must log in and extend it, or the app stops.
- Free apps can reach only some websites. Code on a free account can make outgoing requests only to an allowlist of sites over HTTP or HTTPS. Calling a new API from your app often fails until you upgrade.
- No custom domain on the free plan. Free apps live at
yourname.pythonanywhere.com. Paid plans, which start at $10 a month, add your own domain. - CPU time is metered. The free plan includes 100 CPU-seconds a day, and the first paid plan includes 5,000. Heavy consoles and scheduled jobs use up that allowance.
- Async frameworks are experimental. PythonAnywhere describes ASGI hosting, which FastAPI needs, as a beta and an experimental feature.
- Scheduled tasks are limited. The free plan has no scheduled tasks. The $10 plan includes 20, which can run hourly or daily.
None of these are flaws for a learning project. They become friction when the app has real users, needs your own domain or uses FastAPI.
3. Six Things to Compare
Use these six questions to judge any host. They are the questions that matter most after your app goes live.
- Does your data survive a deploy? PythonAnywhere keeps files. Many container platforms delete them on every update unless you pay for a disk. If you use SQLite, this question comes first.
- Which frameworks run without extra setup? Flask and Django need a WSGI server. FastAPI needs an ASGI server. Streamlit needs WebSockets.
- Is https automatic on your own domain? Certificates should appear and renew without your help.
- Can you run scheduled jobs? Most real apps need a nightly cleanup, a report or a data import.
- How do you deploy changes? Options include a browser editor, a zip upload, a Git push or a GitHub link.
- What does a month cost, and what is included? Compare the full price, including disks, databases and extra apps.
4. Five Alternatives Reviewed
Render
Render deploys from GitHub and detects Python projects. It runs web services, background workers and cron jobs, and it offers managed PostgreSQL. Its standard instances use a temporary filesystem, so a SQLite file disappears on each deploy unless you attach a paid persistent disk. Render suits teams that want PostgreSQL and a Git-based workflow.
Railway
Railway has a polished visual dashboard and detects Python projects on its own. It bills by the resources your app uses, which suits spiky projects and can surprise you on a busy month. It supports volumes for apps that run as a single instance.
Fly.io
Fly.io runs your app as small virtual machines in regions around the world. Its launch command detects Flask and FastAPI and writes a config file and a Dockerfile for you. It supports volumes for persistent data. Expect to use its command-line tool regularly. Fly.io is the strongest choice when your users are spread across continents.
A VPS from Hetzner, DigitalOcean or Vultr
A virtual private server gives you a whole Linux machine for a few dollars a month. Your files stay put, and nothing is metered by the CPU-second. In return, you set up Gunicorn, a reverse proxy, certificates, security updates and backups yourself. If you enjoy Linux, this is the cheapest route. If you do not, the hours add up fast.
Cloudilio
Cloudilio is built for Python apps only. It keeps the part of PythonAnywhere people love, files that stay on disk, and removes the limits people outgrow.
- Flask, Django, FastAPI, Streamlit and plain Python scripts run without config files.
- Every app has a data folder at
/app/datathat survives updates and is backed up every day. - Your own domain and automatic https are included on every plan.
- Outgoing internet access is open, so your app can call any API.
- Scheduled tasks run on any cron schedule, down to every five minutes.
- You can edit code in the browser, upload a zip, link GitHub or describe a new app to the AI builder.
Plans have a flat monthly price with no CPU-second meter.
5. Comparison Table
| Feature | PythonAnywhere (free) | PythonAnywhere ($10) | Render | VPS | Cloudilio |
|---|---|---|---|---|---|
| Your own domain | No | Yes | Yes | Yes | Yes |
| SQLite survives a deploy | Yes | Yes | With a paid disk | Yes | Yes, with daily backups |
| FastAPI (ASGI) | Experimental | Experimental | Yes | Yes | Yes |
| Outgoing internet | Allowlist only | Open | Open | Open | Open |
| Scheduled tasks | None | 20, hourly or daily | Cron jobs | You set up cron | Any cron schedule |
| Server upkeep | None | None | None | All yours | None |
6. How to Move a Flask or Django App
Most PythonAnywhere apps move in under an hour. Follow these steps in order.
Step 1. Download your code and data
Open a Bash console on PythonAnywhere and pack your project folder, including your SQLite file.
cd ~
tar -czf mysite-backup.tar.gz mysite/
Download the archive from the Files tab. Keep it somewhere safe until the move is finished.
Step 2. Write a requirements.txt
PythonAnywhere comes with many packages already installed, so your project may never have listed them. Activate your virtual environment, if you used one, and write the list.
pip freeze > requirements.txt
Open the file and remove packages your app does not import. A shorter list installs faster and breaks less often.
Step 3. Point your database at the data folder
On PythonAnywhere, your database path probably looks like /home/yourname/mysite/app.db. Change it to read the folder from an environment variable. That way, the same code works on your laptop and on the new host.
import os
DATA_DIR = os.environ.get("APP_DATA_DIR", os.path.dirname(__file__))
DATABASE = os.path.join(DATA_DIR, "app.db")
Step 4. Move your secrets
Search your code and your WSGI file for API keys, passwords and Django's SECRET_KEY. Replace each one with os.environ["NAME"], and add the values on the new host's secrets page.
Step 5. Remove the PythonAnywhere WSGI file
PythonAnywhere uses a special WSGI file in /var/www/. You do not need it elsewhere. On Cloudilio, a Flask app is found from its app = Flask(__name__) line, and a Django project is found from manage.py. Cloudilio then starts Gunicorn for you.
Step 6. Publish and copy your data
Upload your project as a zip or link your GitHub repository, then publish. Next, put your existing database file into the app's data folder. On Cloudilio, the simplest way is to include the database file in your first upload and copy it into /app/data with a one-time command. Open the Tasks page, paste the command below under Run a command and press Run.
cp app.db /app/data/app.db
Press Restart at the top of the app's page so it opens the copied database. Then leave the database file out of future uploads. You can confirm the copy worked on the Data & backups page, which lists the files in your data folder.
Step 7. Move your domain
Add your domain to the new host, then change the DNS record at your domain company to point at it. Visitors switch over as DNS updates, which usually takes minutes and can take a few hours. Keep the PythonAnywhere app running until the new one has worked for a few days.
7. Who Should Stay on PythonAnywhere
Moving is not always the right call. Stay on PythonAnywhere if any of these describe you.
- You are learning Python and value the browser console more than anything else.
- Your app uses MySQL, which PythonAnywhere includes on paid plans.
- Your app is a small personal tool, and logging in once a month to extend it is no trouble.
- You use Jupyter notebooks on the same account as your web app.
Move when your app has users who notice downtime, needs FastAPI or Streamlit, calls APIs outside the allowlist or needs reliable scheduled jobs.
8. Questions People Ask
Is there a free PythonAnywhere alternative?
Several platforms have free tiers, but most either sleep idle apps or delete files on deploy. For a free Flask app with a SQLite database that stays online, PythonAnywhere's free plan is still one of the better options. Expect to pay a few dollars a month for anything with real users.
Will my Django admin and static files work after the move?
Yes, with one setting. On PythonAnywhere, you mapped /static/ on the Web tab. Elsewhere, add WhiteNoise to your project so Django serves static files itself. Our Django and SQLite deployment guide covers this step by step.
Can I run FastAPI on Cloudilio?
Yes. Cloudilio detects a FastAPI app from its FastAPI() line and runs it with Uvicorn. WebSockets work too.
What happens to my scheduled tasks?
Recreate them on the new host. On Cloudilio, each task has a command, a schedule and a time limit. Each run's output is saved so you can check it later.
Cloudilio Engineering Team
Infrastructure Architecture Group • CloudilioCloudilio hosts Python apps. You publish Flask, Django, FastAPI, Streamlit and plain Python scripts without managing a server, and your app's data stays safe between updates.