Travel Itinerary Templates

Six starter templates for the most common trip shapes. Click one to clone it into the builder and customize.

Weekend Getaway

3-day Fri–Sun escape with arrival, full day, and easy departure.

3 days · leisure

7-Day Europe Trip

A week across Paris, Amsterdam, and Berlin — trains and city walks.

7 days · leisure

Business Trip

3 days, flights both ways, two meeting days, dinners in between.

3 days · business

Honeymoon

A week at a beach resort: spa, dining, couples activities, slow mornings.

7 days · leisure

Family Vacation

5 days with theme parks, kid-friendly dining, and travel-day buffer.

5 days · family

Backpacking

2 weeks of hostels and trains — flexible activities, low cost.

14 days · solo

What it does

Day-by-day builder

Pick your dates and the day cards generate automatically. Add unlimited activities per day, group them by morning / afternoon / evening, or pin exact start and end times. Reorder days and activities with arrow buttons (keyboard-friendly).

Six starter templates

Weekend Getaway, 7-Day Europe Trip, Business Trip, Honeymoon, Family Vacation, and Backpacking — each pre-loaded with realistic activities, time blocks, and rough costs. Clone, then customize.

Multi-currency cost tracking

Every activity carries its own currency. Per-day and trip totals roll up into your chosen display currency. A snapshot rate table for 30 common currencies ships built in — override any pair if you need today's number.

Five export formats

PDF (print-ready), Markdown (.md), plain text (.txt), ICS calendar (.ics, RFC 5545), and shareable read-only link. PDF generation is lazy-loaded so it doesn't slow down the initial page.

Packing checklist with smart defaults

Default checklist seeded based on trip type (business, leisure, family, solo, group). Check off items as you pack, see a live completion bar, add or remove anything.

Document vault — client-side only

Passport number, visa info, insurance details, emergency contacts, blood type, allergies. Stored only in this browser's localStorage. Never sent to any server. Excluded from share links by default.

Edit mode + presentation mode

Two-pane layout on desktop with live preview on the right. Switch to presentation mode for a clean, print-ready single-column view perfect for sharing or printing.

Undo / redo, autosave, keyboard shortcuts

Last 20 actions reversible with Ctrl/Cmd+Z and Shift for redo. Autosaves to localStorage every 600ms. Ctrl/Cmd+P prints. No data ever leaves your browser.

How to use Travel Itinerary Templates

  1. 1
    Browse the six templates

    Each shows the shape (number of days), the trip type, and a one-line description of what's inside.

  2. 2
    Click "Use this template"

    The template is cloned into the builder with today's date as day 1. Nothing is saved to your account because there are no accounts — the cloned trip lives in your browser only.

  3. 3
    Customize destinations, dates, and activities

    Change the trip name, push the start date, add or remove days, and edit every activity. Templates are starting points, not constraints.

  4. 4
    Export when you're happy

    PDF, Markdown, plain text, ICS calendar, or a share link. All in one click from the toolbar.

When to use this

Family vacation with multiple stops

Parents planning a 7-day Disney + beach trip use the Family Vacation template, add park reservation times, pack the checklist with kid essentials, and email the PDF to grandparents with the emergency-contact section visible.

Business trip the calendar app understands

A consultant builds a 3-day client trip with flights at custom times, exports the .ics file, and imports it into Google Calendar — every flight, meeting, and dinner shows up with the right time and location.

Backpacking route across multiple cities

A solo traveler clones the 14-day Backpacking template, drops in real hostel names and transit costs in EUR, USD, and CZK, and shares the read-only link with friends planning to meet at stop #4.

Honeymoon planning the long way

A couple uses the Honeymoon template, customizes spa days and dinners, tracks total spend across USD and the destination currency, prints a clean PDF for the resort concierge.

Group trip with shared logistics

A group of friends builds a single itinerary together, includes a shared restaurant reservation list in the packing section, and shares the read-only link in their group chat — no signup, no per-person account.

Common errors & fixes

Share link too large to copy
The share link encodes the entire trip in the URL. Itineraries with very long notes or 50+ activities can exceed the 32 KB browser-safe limit. Export as Markdown or PDF instead, or trim notes.
Shared link won't open — "invalid or corrupted"
The link payload failed validation. This usually means the URL was truncated when pasted (chat apps sometimes wrap long URLs). Re-share with a service that preserves the full URL, or send the .md file instead.
.ics file imports with the wrong time
The exported ICS uses floating local time (no timezone). Most calendar apps treat that as "the device's current timezone." Set the activity's custom start time, then open the .ics on the device you'll use during the trip.
Costs in foreign currency look off
Built-in FX rates are a snapshot from 2026-05-17, not live. For accurate totals, open "Set custom FX rates" under the cost summary and enter today's rate for each pair.
My trip vanished after clearing cookies
Trips are stored in browser localStorage. Clearing site data deletes them. Export to Markdown or share-link before clearing if you want to restore later.
Document vault data showed up in my shared link
You enabled "Include this vault in share-link exports" under the vault section. Turn it off and re-copy the share link to exclude vault fields.

Technical details

StorageBrowser localStorage (`dz.trip.*` keys). No server, no cookies for trip data.
Share linkURL fragment (`#a=...`) with lz-string compression. Fragment never sent to server.
Max trip size60 days · 25 activities per day · 100 packing items · 20 destinations
PDF enginepdf-lib (dynamically imported only when "Export PDF" is clicked)
Calendar formatICS / RFC 5545 with CRLF line endings, 75-octet line folding, standard VEVENT
Currency snapshot30 currencies, USD-pivoted, dated 2026-05-17
Undo depth20 actions (ring buffer)
Autosave600ms debounced to localStorage on every change
Privacy100% client-side — verifiable in DevTools → Network during use
BundleTool-specific JS well under 80 KB gzipped (PDF generator lazy-loaded)

Why a fragment-based share link instead of a server-stored share URL

Most "share my trip" tools persist the itinerary on a server and give you a short URL. That requires an account or at least a database, and the data sits on someone else's machine indefinitely. We chose the URL-fragment approach because the trip data, compressed with lz-string, fits comfortably inside a URL for almost every realistic itinerary — and the browser never sends the part after the # to the server. The trade-off is a longer URL and a hard size limit. For trips under ~30 KB of compressed JSON (which is almost all trips), this is a feature, not a bug: you own the data, the link is the data, and nothing requires our infrastructure to keep working.

If the link exceeds the limit, the tool tells you and points you at the Markdown export, which has no size constraint.

Multi-currency without lying about rates

A travel planner that hides the exchange rate behind a friendly total is making a guarantee it can't keep. Rates move. The honest design is: every activity stores its own cost and currency, and the per-day and trip totals are computed at display time using a clearly-labeled snapshot rate. If today's rate matters to you, override the pair — the override lives in the trip, syncs through autosave, and travels with the share link.

The snapshot was sourced from widely-cited cross rates on 2026-05-17 and uses USD as the pivot. That keeps the table to 30 entries instead of 30 × 29 = 870.

ICS exports are floating local time on purpose

A meeting at 14:00 in Tokyo and the same meeting at 14:00 in Lisbon mean very different absolute moments. If we wrote the .ics with explicit UTC offsets based on the user's current timezone, importing the calendar on a phone set to a different timezone would shift the event. Floating local time — DTSTART without a TZID — tells every calendar app "this is 14:00 wherever you are."

That's the right behavior for a printed itinerary: if your phone is set to Tokyo time when you arrive, the meeting still says 14:00. The cost is that you can't see "what time is my Tokyo meeting in my home timezone before I leave." Treat the .ics as a destination calendar, not a planning calendar.

The document vault is a privacy-first surface

Passport numbers, insurance policies, and emergency contacts are sensitive data, and there's no good "share my passport on the internet" UX. The vault lives in localStorage on your device only, with an explicit callout above the section. It is excluded from the share-link payload by default — if you want to include it, you have to tick a checkbox that warns you anyone with the link will see those fields.

This is the same threat model as keeping the data in Notes or a spreadsheet on your phone: another app on the same browser profile could read it if compromised, but no remote attacker can. For higher-sensitivity scenarios (long-term storage, multiple devices), use a dedicated password manager and link it from the booking-reference field.

Frequently Asked Questions

Is anything saved on a server?

No. Everything stays in your browser. The trip data, the document vault, the packing list — all stored in localStorage. The share link encodes the entire trip in the URL fragment (after the #), which browsers never send to servers. You can verify in DevTools → Network: no XHR or fetch calls leave the page during normal use.

How do I share my trip with someone?

Click "Share" in the toolbar. The tool builds a URL that contains your entire itinerary, compressed and encoded into the URL fragment, and copies it to your clipboard. Anyone who opens that URL sees your trip — read-only, until they click "Edit". They can save their own copy independently.

What's in the .ics calendar export?

One VEVENT per activity, with title, location, category, cost, booking reference, link, and notes folded into the description. Activities with a custom start time get a timed event; activities without get all-day events for their day. Times are written as "floating local" — they show up as whatever wall-clock time you set, in whatever timezone the device opens the file. Import into Google Calendar, Apple Calendar, Outlook, Fantastical, or any RFC 5545-compliant app.

Does this work offline?

Yes, after the first page load. The tool, the templates, the export logic, and the share-link decoder all run client-side. PDF generation pulls in pdf-lib on the first click via dynamic import — that one transfer is the only thing that needs a connection during the session.

Can I plan a trip with multiple stops in different currencies?

Yes. Every activity carries its own currency code. Per-day totals and the trip total roll up into your chosen display currency using a built-in snapshot rate table dated 2026-05-17. If today's rate matters, open "Set custom FX rates" under the cost summary and enter your own number for each pair.

How big a trip does this handle?

Up to 60 days, 25 activities per day, 20 destinations, and 100 packing items. The share-link limit is around 32 KB compressed JSON — most realistic trips fit easily. If yours is too big to share via link, use the Markdown or PDF export instead.

Why a hash-fragment share link instead of a /share/[id] URL?

A /share/[id] URL needs a backend to store the data. The PRD called for one, but it also said "client-side only, no backend." The fragment-based link satisfies both: you own the data, nothing is stored on our servers, and the URL works forever (until the link itself is lost). The trade-off is a longer URL.

What about my passport number — is the document vault safe?

The vault writes to localStorage only — same place your browser stores cookies for the sites you log into. No remote attacker can read it. The risk surface is local: anyone with physical access to your unlocked browser profile can open DevTools → Application → localStorage and see the values. We exclude the vault from share-link exports by default; you have to opt in per trip.

Do you store any of this for me across devices?

No. We deliberately do not. There's no account, no sync, no cloud copy. If you want to move a trip to another device, copy the share link (or export to Markdown), open it on the second device, and the trip hydrates there.

How do I edit a trip someone shared with me?

When you open a share link, the trip hydrates into the editor and the URL fragment clears. From there it's yours — edit anything, autosave kicks in, and you can re-share or export from your own copy. The original sender's link is unchanged.

Can I use my own templates?

Not in v1 — only the six built-in templates. The Markdown export is a fine starting point if you want to keep your own template files in a notes app and paste them back in. Custom user-saved templates are on the v2 list.

What about live exchange rates?

Live rates would require a backend or a third-party API, which would compromise the "everything in your browser" guarantee. The built-in rate table is dated 2026-05-17 and ships with the app. For accurate per-pair conversion, use the per-pair rate override under the cost summary.

Related Tools