Travel packing list generator
Enter 7 days, hot weather and a beach trip and you get a checklist of 57 items in five groups, from passport and sunscreen to 8 pairs of socks. Clothing grows with the trip and stops at ten days of laundry. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Duration days
- 7
- Climate
- hot
- Trip type
- beach
- Total items
- 57
The travel packing list generator turns three facts about your trip — how long you will be away, what the weather will be like and what kind of trip it is — into a complete, categorized packing checklist. Clothing quantities scale with the duration, capped at a sensible laundry point, so a three-day weekend and a three-week journey each get the list they actually need. The result covers essentials, clothing, climate gear, trip-specific equipment and toiletries, with a total item count so you can judge at a glance whether the bag you planned is big enough. Everything is computed deterministically: the same trip always produces the same list, which makes the output safe to cache, compare and automate against.
Three inputs, one complete checklist
Packing goes wrong in two directions: forgetting something essential, or hauling half a wardrobe you never wear. The travel packing list generator addresses both by starting from structure instead of memory. You provide the trip duration in days, the destination climate (cold, mild, hot or tropical) and the trip type (business, beach, camping or city).
From those three values it assembles five categories: essentials everyone needs, everyday clothing scaled to the duration, gear specific to the climate, equipment specific to the kind of trip, and toiletries. Each line carries an item name, a quantity and, where it matters, a short note — for example that medications should cover the whole trip plus two spare days, or that a power adapter should match the destination plug type.
Because the categories are fixed and explicit, the output is easy to review with a travel companion and easy to tick off while you pack.
How quantities scale with duration
Wearable quantities follow a simple, deterministic rule: one set per day, plus one spare where that makes sense, capped at ten days' worth. The cap encodes the standard packing advice that beyond roughly ten days you do laundry rather than pack more, so a thirty-day trip does not produce a thirty-underwear suitcase.
Bottoms scale at one per two days, sleepwear at one per four, and trip-specific wearables follow the trip logic — swimsuits, for instance, come at one per two beach days with a minimum of two so one can dry while you wear the other. Fixed items like chargers, documents and tents stay at quantity one regardless of duration. The duration must be a positive whole number of days; anything else is rejected with a clear validation error rather than silently interpreted.
All arithmetic is integer-based, so the same input always yields byte-identical output on any machine.
Where it fits and what it costs
Use it as the first step of trip planning, as a checklist inside a travel app, or as the backbone of a shareable packing page for a group. Travel agencies and corporate travel tools can call it per booking to give travelers a tailored list without maintaining packing templates for every combination of climate and trip type. There are no external lookups involved — no weather calls, no destination databases — which keeps both the latency and the privacy footprint minimal.
What you can do with it
Plan a trip without forgetting essentials
Enter your duration, climate and trip type and pack against a complete checklist instead of memory, with quantities matched to how long you are away.
Coordinate group or family packing
Generate the list once, share it, and let everyone tick items off the same categories so nothing critical is assumed to be someone else's job.
FAQ
Which climates and trip types are supported?
Climates: cold, mild, hot and tropical. Trip types: business, beach, camping and city. Anything else is rejected with a validation error.
How are clothing quantities calculated?
One set per day plus a spare, capped at about ten days' worth on the assumption that longer trips involve laundry. Bottoms and sleepwear scale more slowly.
Does it check the real weather at my destination?
No. The list is deterministic and based only on the climate you select — no external weather or destination services are called.
Is my trip data stored?
No. The input is processed and discarded; only the generated checklist is returned.
How many swimsuits should I pack for a beach trip?
One for every two beach days, with a minimum of two so one can dry while you wear the other. A 7-day beach trip therefore gets 4 swimsuits on the list.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/life/packing-list-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_days":7,"climate":"hot","trip_type":"beach"}'const res = await fetch("https://api.kit.forhosting.com/life/packing-list-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_days": 7,
"climate": "hot",
"trip_type": "beach"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/packing-list-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_days": 7,
"climate": "hot",
"trip_type": "beach"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/packing-list-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_days":7,"climate":"hot","trip_type":"beach"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_days":7,"climate":"hot","trip_type":"beach"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/packing-list-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"duration_days": 7,
"climate": "hot",
"trip_type": "beach"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.packing_list_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_days | 365 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Where it fits and what it costs
It runs on our global edge with nothing stored after the response, and the same deterministic code runs free in your browser on this page: paste your trip details, see the exact list the API would return, and only pay when you automate it. Via the API the cost is $0.002 per request, with no per-item surcharge, so generating lists for an entire season of bookings stays cheap.
Integration use cases
Add packing lists to a travel app
Call the API per booking and show each traveler a tailored checklist for their exact itinerary, with deterministic output you can cache.
Technical questions
What does it cost?
$0.002 per request via the API. It is also free to run in your browser on this page.
What happens with an invalid duration?
A duration that is not a positive whole number of days is rejected with an invalid_input error, and no charge is made.