Switzerlandโs health insurance system offers six deductible options (franchises), from CHF 300 to CHF 2,500. But which one actually saves you the most money?
The answer is surprisingly simple:
- If your average yearly health expenses are below ~CHF 2,000, choose the CHF 2,500 deductible (lowest premiums).
- If your expenses are above ~CHF 2,000, choose the CHF 300 deductible (lowest out-of-pocket costs).
The other four options? Theyโre almost always more expensive in total.
This project crunches the numbers for you, so you can make the smartest, most cost-effective choiceโinstantly.
Insurek is a multilingual web tool and open-source project that helps you:
- Find your optimal Swiss health insurance deductible (franchise)
- Visualize your total costs (premiums + deductible + co-insurance)
- Understand the math behind the recommendation
You can use Insurek as:
- A web app: Enter your premiums, see your best deductible and a clear cost chart.
- A Jupyter Notebook: Run your own calculations with custom data.
Swiss law sets strict rules:
- You pay a monthly premium (varies by deductible, region, age, insurer).
- You pay out-of-pocket up to your deductible (franchise).
- After that, you pay 10% co-insurance on further costs, capped at CHF 700/year for adults.
Insurek compares all six deductible options for your real premiums and shows:
- Where the total cost lines cross (the "break-even" point)
- Which deductible is optimal for your health expense level
Result:
- If youโre healthy and rarely see a doctor, the highest deductible (CHF 2,500) saves you the most.
- If you have high medical costs, the lowest deductible (CHF 300) is best.
Suppose your average yearly health expenses are CHF 1,500:
- CHF 2,500 deductible: Lowest premiums, you pay most costs out-of-pocket, but overall you save.
- CHF 300 deductible: Higher premiums, but you pay less out-of-pocketโonly worth it if your expenses are high.
The break-even point is usually around CHF 1,800โ2,000 (depends on your actual premiums).
- Go to Priminfo (official Swiss premium calculator)
- Enter your ZIP code, birth year, and insurance model
- Write down the six monthly premiums for each deductible (CHF 300, 500, 1,000, 1,500, 2,000, 2,500)
- Go to the Insurek web app
- Select your language (EN, DE, FR, IT)
- Enter your six premiums in descending order (highest = CHF 300, lowest = CHF 2,500)
- Click Calculate
- Instantly see which deductible saves you the most
- View a chart comparing all options
- Download the chart for your records
- Docker installed on your system
- Git (to clone the repository)
- [Optional] Jupyter Notebook (for advanced users)
git clone https://github.com/lucalevi/swiss-deductible-chooser.git
cd swiss-deductible-chooser/swiss-insurances- Create a
.envfile in theswiss-insurancesdirectory with:
FLASK_SECRET_KEY=your_secret_key_here # Replace with a secure random string
PORT=5000
HOST_PORT=8080
- Note: The
FLASK_SECRET_KEYis required for session management. Generate one usingopenssl rand -hex 16or a similar tool.
If you want to use the Jupyter Notebook, also install:
pip install notebook- Create a
docker-compose.ymlfile in the project root:
services:
app:
build: .
ports:
- "8080:5000"
env_file:
- swiss-insurances/.env
volumes:
- .:/app
container_name: insurek-app
- Build and start the container:
docker compose up --build
- Access the app at http://localhost:8080.
- Stop the container with
CTRL+C, then restart withdocker compose up(no--buildneeded unless code changes).
- Make changes to
app.py, templates, or static files. - Rebuild and restart with
docker compose up --buildto apply changes. - To stop and remove the container (optional cleanup):
docker compose down
If you prefer not using Docker Compose, run:
docker run -p 8080:5000 --env-file swiss-insurances/.env swiss-deductible-chooser
- This creates a new container each time. To reuse, name it and manage it:
docker run -d --name insurek-app -p 8080:5000 --env-file swiss-insurances/.env swiss-deductible-chooser
docker stop insurek-app
docker start insurek-app
If you want to experiment with your own data, use the included premium_chooser.ipynb:
- Open the notebook in Jupyter or Google Colab.
- Enter your own premiums in the
MONTHLY_PREMIUMlist. - Run all cells to see the break-even point and cost chart for your situation.
swiss-insurances/
โ
โโโ app.py # Flask web app (main entry point)
โโโ scripts/
โ โโโ insurance_calculator.py # Core calculation logic
โโโ static/ # CSS, JS, images
โโโ templates/ # Multilingual HTML templates (EN, DE, FR, IT)
โโโ .env # Environment variables (not committed)
|
requirements.txt # Python dependencies
premium_chooser.ipynb # Jupyter Notebook (advanced)
- ๐ฌ๐ง English
- ๐ฉ๐ช Deutsch
- ๐ซ๐ท Franรงais
- ๐ฎ๐น Italiano
Switch language anytime using the menu.
Pull requests are welcome!
If you find a bug or want to add a feature, open an issue or submit a PR.
GNU GPL-2.0 License. See LICENSE for details. Do mention the source when developing further.
Created by Luca Iacolettig.
Questions? Email: iacolettig.luca@gmail.com
- Transparent: All calculations are open-source and visible in insurance_calculator.py and premium_chooser.ipynb.
- Fast: Get your answer in seconds.
- Accurate: Follows Swiss insurance law and real math.
- Private: No data is storedโeverything runs locally or in your browser.
Save money. Choose smart. Insurek makes Swiss health