{{ initial(sessionUser) }} {{ sessionUser.username || sessionUser.name }}
Group trip planning, reimagined

Plan the trip.
Together.

Pick a country and your vibe. WanderWish builds a day-by-day itinerary on a live map, then you invite your crew with a link or a one-time code.

Got an invite code? Sign in to join
{{ c }}

Everything in one view

Your itinerary on the left, your route on the right. No more tab-juggling.

Day {{ i + 1 }} — {{ d }}
1 2 3 4 5
01

Instant itineraries

Real places, real routes, weather-aware days, and a budget estimate, generated in seconds.

02

Invite with a link or code

Share a join link, or read out a one-time 6-letter code. Friends sign in and they're in.

03

Edit together, live

Reorder stops, move them between days, leave notes. Everyone sees changes as they happen.

Where to next?

Create an account and plan your first trip in under a minute.

Create free account
WanderWish · Built for wanderers

Welcome back

{{ next.startsWith('/join/') ? 'Sign in to join the trip you were invited to.' : 'Sign in to see your trips.' }}

{{ authError }}

New here? Create an account

Start wandering

Free, and it takes 30 seconds.

{{ authError }}
Available
Username taken
Letters, numbers and underscores only
At least 6 characters

Already have an account? Sign in

Pick a username

Friends use it to add you to trips.

{{ authError }}
Available
Username taken

Where are we going, {{ firstName }}?

Set the basics. We'll handle the rest.

🎲
Somewhere in {{ state.region || 'the world' }}We'll reveal it when your itinerary is ready
{{ state.country }}
Days
{{ state.days }}
Budget
{{ b.label }}
Pace
{{ p.label }}
Interests
{{ t.label }}

Join a friend's trip

Enter the 6-character code they shared.

Recent trips

Nothing yet. Your trips will show up here.

{{ t.title }}
{{ t.days }} days · {{ t.role === 'owner' ? 'Yours' : 'Shared · ' + t.role }}
Photo: {{ coverCredit(state.country).name }} · Wikipedia

{{ tripTitle || state.country }}

{{ state.country }} 🎲 Surprise pick Starts {{ fmtDate(tripStartDate) }} You're a {{ currentRole }}
{{ initial(m) }}
Last edited {{ timeAgo(tripLastEditedAt) }} by @{{ tripLastEditedBy }}

No activity yet.

{{ initial(a) }}
{{ isMe(a.user_id) ? 'You' : '@' + (a.username || a.name || 'someone') }} {{ a.summary }}
{{ timeAgo(a.created_at) }}
Group spent · {{ cur }}
{{ money(amt, cur) }}
Group spent
—

Settle up

Fewest payments to even everyone out

Log what each person paid during the trip. At the end, this shows exactly who pays whom.

All square — nobody owes anything.
{{ initial(m) }} {{ isMe(m.id) ? 'You' : '@' + (m.username || m.name) }} {{ balanceText(st.balances[m.id] || 0, cur) }}
Split between · {{ expenseForm.splitAmong.length }}
{{ isMe(m.id) ? 'You' : '@' + (m.username || m.name) }}
{{ money(expenseForm.amount / expenseForm.splitAmong.length, expenseForm.currency) }} each
{{ e.description }}
{{ isMe(e.paid_by) ? 'You' : memberName(e.paid_by) }} paid · split {{ e.split_among.length }} way{{ e.split_among.length === 1 ? '' : 's' }} · {{ timeAgo(e.created_at) }}
{{ money(e.amount, e.currency) }}
No map available for this itinerary.
Click the map to pin “{{ pinMode.name }}” to Day {{ pinMode.day }}
Landmark names
All days Day {{ d.day }}

Your trips

No trips yet

Plan one, or join a friend's with their invite code.

{{ t.role === 'owner' ? 'Owner' : t.role }}

{{ t.title }}

{{ t.country }} · {{ t.days }} days

@{{ invite.owner }} invited you to

{{ invite.trip.title }}

{{ invite.trip.country }} {{ invite.trip.days }} days Join as {{ invite.role }}

Hmm.

{{ inviteError }}