FringePlan: Why I Built It, How It Works, and Every Feature That Matters
Every August, Edinburgh turns into a city-sized constraint problem. Thousands of shows, hundreds of venues, and a few days to see as much as you can without double-booking yourself or sprinting across town on an empty stomach. I built FringePlan because that problem deserved a proper planner — not another listings browser dressed up as an app.
This is the long version: the why, the how, and the features — drawn from how the product actually works, and from the help docs (and their FAQs) that spell each piece out.
Why FringePlan exists
FringePlan is a side project, born of frustration. Every year the official Fringe app is rebuilt from scratch, and every year it arrives far too late — long after anyone organised has started planning. And even once it lands, it's a listings browser, not a planner.
Meanwhile I was planning 20–30 shows a trip by hand: spotting clashes by eye, guessing how long it takes to get between venues, and realising too late that I'd left no time to eat. Every serious Fringe-goer I know had the same spreadsheet and the same headaches.
So I built the planner I wanted. Paste in your shows, mark what's unmissable, press Generate — and get a day-by-day Fringe schedule that respects travel time, meals, and your priorities. Free for everyone, forever. No subscriptions, no ticket markups, no hidden fees. Independent fan project — not affiliated with the Fringe Society — with show data from public listings. Always double-check times and tickets on edfringe.com before you book.
How hard Fringe planning actually is
On paper it sounds simple: pick shows, put them in order. In practice it's a constraint puzzle.
Shows run multiple times across the festival. Your must-sees clash on the only day you're free. Venue A finishes at 14:00 and Venue B starts at 14:15 — on the map that looks fine until you remember they're twenty minutes apart on foot, plus queue time, plus the inevitable wrong staircase. You want lunch. You want a buffer. You want to lock the tickets you've already bought so the rest of the plan rearranges around them, not through them.
Do that for thirty shortlisted shows across a week and your brain gives up. Spreadsheets help until the first venue change. Colour-coded calendars help until someone asks "can we fit one more comedy at 19:00?" and you have to recompute everything by hand.
FringePlan exists for that moment. The planning loop is deliberate:
- Add shows from edfringe (subscribe to them — don't pick times yet).
- Prioritise what must survive contact with a full day.
- Set trip boundaries — arrival, hotel, departure — so the schedule never books something you can't physically make.
- Generate a clash-free week that respects travel, meals, and locks.
- Tweak, lock, copy, share — then book the locked slots on edfringe in one sweep.
The rest of this post walks that loop, feature by feature.
How Generate works
Generate is the heart of FringePlan: one click runs the planner over your subscribed shows, locked slots, breaks, and auto-meal config, and produces a day-by-day schedule with no overlapping shows. It weighs every performance of every show against your priorities, travel time between venues, and meals — the tedious part of Fringe planning, done in seconds.
Locks pin what you've decided
A lock pins the current state of a schedule item so regeneration preserves it. Lock a show once you've bought tickets, or once you're simply sure about it, and every future Generate builds around that fixed point. Locked items are immutable occupancy: the planner never moves them, shrinks them, or trades them away. Locks are never released by the system — only you unlock.
What yields to what
When the day is full, the rules are explicit:
- Locked items never move — not for a higher-priority show, not for a meal.
- Required meals beat unlocked shows. A show candidate that would make a required meal unplaceable is rejected — unless you've skipped that meal for the day.
- Higher priority beats lower among unlocked shows competing for the same gap.
- Travel time is a hard constraint — the generator never books a connection you can't physically make.
Generate is safe to run again and again: locks hold your decisions while everything unlocked reshuffles around them. For bigger experiments, save a copy of the plan first and generate inside the copy.
Features, end to end
Add shows from edfringe.com
Everything starts with your show list. There are three ways to build it, and all of them pull the details straight from the show's public edfringe.com listing — nothing typed in by hand:
- Paste a link — copy a show URL into the add box; FringePlan fetches the listing and all performances.
- Bulk add — paste a whole list of links, one per line. Ideal when you've been collecting candidates in a note all spring.
- Search by name — type a title and pick from matching shows without leaving FringePlan.
For each show, FringePlan reads title, venue, genre, description, running time, and the full performance calendar — every date and start time — plus edfringe's ticket status colour for each performance (available, preview, 2 for 1, free, cancelled, no allocation remaining, and the rest of the legend). Those colours show as bars on the show page and as swatches on calendar chips; Generate does not use them when scoring.
Important: adding a show subscribes you to it — it doesn't pick a date or time. Choosing the best performance is the generator's job. If you already know exactly which performance you want, schedule it and lock it, and Generate builds around it.
Priorities that mean something
Not every show survives contact with a Fringe schedule — there are always more shows than gaps. Priorities are how you tell the generator what to fight for. Every show is High, Medium, or Low:
- High means unmissable. High-priority shows are scheduled first; when two shows want the same gap, high wins.
- Medium is the default — shows you'd like to see if the day allows.
- Low means if-it-fits. Low-priority shows only fill gaps left after everything above them is placed.
A high priority never displaces a locked show, and it never squeezes out a required meal. A good rule of thumb: mark the handful of shows you'd rearrange your trip for as high, leave the rest medium, and demote the "maybe" pile to low.
Trip setup around your travel
A Fringe trip doesn't start at your first show — it starts at a station, an airport, or a car park. Trip setup tells the planner where and when your trip actually begins and ends.
Set an arrival location and time for your first day, and a departure location and time for your last (they can differ — arrive by train, leave by car). Both are hard constraints: nothing is scheduled before your arrival leg completes, and nothing is scheduled that would make your departure leg impossible.
With hotel-first on arrival (on by default), the arrival day chain is arrival location → hotel → check-in → first show. Hotel-first on departure mirrors it: last show → hotel → check-out → departure location. Arrival, check-in, check-out, and departure blocks are editable in place on the calendar, so you can fix a trip boundary without leaving My Fringe.
Meals built in
The most common Fringe planning mistake is forgetting to eat. FringePlan treats breakfast, lunch, and dinner as first-class schedule items — auto-meals placed by the generator around your shows.
Each meal has a configurable meal window, target duration, and preferred start. The planner places the meal inside its window first; if no in-window gap exists it may place the meal elsewhere and mark it with an out-of-window flag (dashed red border). When the only workable gap is shorter than the target, the meal shrinks toward a per-meal floor — never below.
A required meal is always placed somewhere on the day: unlocked shows yield to it. Locked shows are the exception — if they leave no room, you get a could-not-place warning on the day header instead of a silent gap. Some days deserve four shows and a bag of chips: skipping a meal frees the slot, and locking the skip keeps the absence across regenerations.
Travel time between venues
Edinburgh in August punishes optimism about distances. FringePlan reserves real travel time between consecutive venues for your chosen mode — walking, cycling, driving, or public transport — so a tight connection across town is flagged while it's still fixable.
On top of the mapped time, travel padding (default 15 minutes, configurable) covers the unglamorous parts: the queue, finding the door, the flyerer you couldn't dodge. When a place has no location at all, a configurable unknown travel gap stands in rather than pretending the move is free.
When the mapped time is wrong for your reality — a known shortcut, a slow hill, bags on the airport transfer — open the travel leg and set a travel time override: one total in minutes that fully replaces the computed value. Generate respects it; a padlock marks the leg as pinned.
Every trip day has a day plan map — venues, meal spots, and each travel leg in order. The Map tab on My Fringe plots every venue in the plan; the Travel page has a place picker for looking up times between any two places in the catalog.
Hotels and food venues
Travel times are only as honest as the places they connect. Add your hotel and the planner can start and end days there. Pin a meal to a real food venue — the curry house you always go back to — and the travel to and from it is counted in the schedule, instead of the meal floating with no location.
Plan with people
Group trips fail when one loud voice picks all the shows. Add the people on your trip, then tag who picked each show. Generate uses those tags to keep the plan fair after priority — so everyone's picks get a fair shot.
People are chooser tags for fairness, not accounts and not colour tags: friends don't need to sign up to be represented in the plan or to view it through a share link. If someone should actively edit with you, plan access grants another account full edit rights.
Colour tags
Priorities tell the generator what to fight for; colour tags are a separate visual layer for how you organise the list. Create named labels in Settings — maybe, split group, must-see — then apply them to shows. They render as left-edge colour stripes on the calendar and schedule, plus pills on show modals. Generate never consults them.
Copies and the live plan
Your live plan is the single active schedule — the one share links, the iCal feed, and collaborators see. Before a big reshuffle, Save a copy forks it: settings, slots, locks, and breaks duplicated, fully editable. Like the copy better? Promote it. The copy becomes the live plan and the old one is kept as "Previous plan" — a free rollback. Share links and calendar feeds follow the live plan automatically.
When edfringe changes
Fringe listings move: times shift, runs shorten, shows cancel. FringePlan re-checks listings and flags drift instead of letting your plan go quietly stale.
When a scheduled show's date and time no longer match any schedulable performance, the slot becomes an unlisted slot — flagged in red with "Time no longer listed" and a page-top alert. You resolve it by picking a currently listed time, unlocking, or removing the show. A locked unlisted slot stays locked until you resolve it — the system never silently unpins your decisions. When a show has no performances left at all, it's a delisted show: remove it rather than reschedule.
Sharing and exporting
A plan you can't show anyone is only half a plan. FringePlan gives your schedule three ways out:
- Share link — a read-only view of your live plan for anyone with the URL (no account needed). Friends get Schedule and Calendar tabs plus day travel plan maps. Shared plans stay out of search engines; you can revoke a link anytime.
- iCal feed — a live calendar subscription for Google Calendar or Apple Calendar that tracks your live plan automatically.
- Markdown export — the whole plan as a portable text file for the group chat or a printed backup.
Need more than read-only? Plan access lets another FringePlan account open your plan with full edit rights.
Booking tickets
Booking twenty shows one at a time is misery. Checkout sweeps every locked show in your plan into a held basket on edfringe — real tickets, reserved in one go — then opens the edfringe basket page for you to apply and pay. FringePlan never takes payment and never marks up a ticket.
You set full-price and concession quantities separately. Because the held basket lives in FringePlan's session, the FringePlan bookmark (a bookmarklet you install once) applies it to your own edfringe session when you're on edfringe.com. The held basket expires on edfringe's side after roughly 30 minutes, so apply it promptly and always double-check before paying.
Free, on purpose
No subscriptions, no ticket markups, no hidden fees. FringePlan is free for everyone, forever — create an account and start planning in minutes. If something's missing, there's a feature requests board on the site; the help pages cover each of the topics above in more depth, with FAQs for the sharp edges.
The Fringe is a logistics problem. Treat it like one.
The official app will keep changing. Listings will keep multiplying. The walk from the Pleasance to the Traverse will stay exactly as long as it is.
FringePlan won't solve "which comedy should I see" — that's still on you and your friends. It will solve "can I actually get there," "do these two clash," "where does lunch fit," and "what does my week look like if I lock these six tickets and ask the planner to fill the gaps."
If you're heading to Edinburgh this year (or next), try it: fringeplan.com. Paste a few show links, set your dates and hotel, and Generate with travel and meals turned on. That first time a clash, a tight walk, or a missing lunch shows up before you've bought the wrong ticket is the whole point.