The border jump
Moving from Geneva to Vaud is one of the most common tax optimization strategies in western Switzerland. The logic seems obvious: cross the cantonal line, escape Geneva's high tax burden, and keep your job in the city.
But looking strictly at the tax rate is a trap. You are not just changing your tax domicile; you are changing your daily life. The pace, the infrastructure, and the shape of the territory matter just as much as the final number on your tax return.

The question isn't whether Vaud is cheaper. It usually is. The question is whether Vaud offers a better overall fit once you factor in commuting time, housing availability, and lifestyle.
How to read the signals
If you are just comparing 1201 Geneva to a random village in Vaud, you aren't doing a real comparison. You need to look at specific indicators on PLZHub to make an informed choice.
First, look at the tax scenarios by canton to understand the baseline difference. Then, check how your target municipality compares to the Vaud cantonal median. Finally, look at the nearby postcodes. You don't want to evaluate a town in isolation; you want to know what the surrounding cluster feels like.

Apartment buildings at Avenue Beauregard, Lausanne.jpg.A tax gain is only valuable if the living context works for you. If a cheaper tax bill means you spend an extra hour on the A1 motorway every day, the trade-off usually fails.
Building a realistic shortlist
Start with your baseline in Canton Geneva. Then, define your maximum tolerable commute. This will drastically shrink your options in Canton Vaud.
Instead of looking at the whole canton, focus on the immediate commuter belt. A place like 1260 Nyon is incredibly useful here. It shows you exactly what a real, functioning Vaud destination looks like for someone who still wants access to Geneva.
A good shortlist is short. It should only contain places you would want to live in. Once you find an apartment that fits, drop the PLZHub estimates and run your exact salary through the official Vaud tax calculator to get the final, binding number.






