Troubleshooting
Most of what looks broken on this site is either a deliberate silence or a known rough edge, and this page separates the two. Each entry says what you are seeing, why, and what to do instead. Where something is genuinely a defect, it says that too.
Updated: 2026-08-20
Contents
- The map
- Search
- Live data — trains, weather, the river
- Places and pages
- Your trip, and things that should have been saved
- Accounts and sign-in
- Games and progress
- Using the site without JavaScript
- Still stuck
1. The map
The map is blank, or shows a banner instead of tiles. /map needs WebGL and JavaScript. If either is off — or if your network blocks the tile host — you get a plain banner saying so with a link to the A–Z. That banner is the correct behaviour, not a crash. The basemap comes from OpenFreeMap; corporate networks and some content blockers filter it.
What to do: /places holds every place as text and needs no scripting; /districts does the same, grouped by neighborhood.
I turned on a layer chip and nothing appeared. Most likely the Accessibility chip. There is no structured accessibility data on any record, so that layer has nothing to select today. See the FAQ.
The two rail chips — Blue Line and Gold Line — also own no pins at all. They draw the route, the stations and the vehicles running right now; their counts are live fleet sizes, not place tallies. Both start switched off, because a full-length polyline on first load would dominate a map about places.
A closed place is missing from the map. Permanently-closed, site-only and unconfirmed records are hidden until you turn the History chip on. That is the same rule the neighborhood pages follow.
/map?district=… did nothing. An unrecognised district value is ignored silently and you get the plain city view rather than an error page. Check the slug against /districts — for example /map?district=south-end. The same applies to ?tour=: a tour with fewer than two locatable stops falls back to the plain map.
The map won't rotate, and won't let me pan out of the region. Both are deliberate. It is a guide map, not a survey instrument.
2. Search
My search returned nothing. The results page runs several looser versions of your query for real and offers you the ones that actually return something. If it offers nothing at all, your query had nothing to loosen — a single unknown word, or an emoji — and you get three queries known to work right now instead.
Worth knowing: the placeholder text in the box (chili mac) genuinely returns zero results. It is an example of a query, not a suggestion.
"near south end" didn't behave like a location. Station names resolve to locations; neighborhood names do not. If you see a "Near …" chip under the box, the walkshed search worked. If you don't, your words fell through to an ordinary text search — which usually still gives good results. Name the station to get the walkshed: breweries near new bern, coffee near 36th street.
Pressing Enter in the box on the results page does nothing. This happens with JavaScript disabled, and it is a real rough edge rather than a decision. That box re-runs the query live in your browser instead of submitting a form. Use the search box in the top navigation bar or the mobile drawer — those are ordinary forms and work fine — or edit the ?q= value in the address bar.
A shared search link lost one of its filters. A filter value the guide no longer recognises is dropped quietly rather than erroring, so an old link loses a chip and keeps its results. One known case: a Gold Line station chip can be dropped when the link is reopened, because the station filter is validated against the Blue Line only. Re-apply it from the filter bar.
The filter bar won't let me pick something. By design. Every option carries the count it will leave after you click it, and an option that would leave zero results is never offered. If a group reads "Breweries — from your search" rather than offering a toggle, your query already applied it and switching it off could not widen anything.
3. Live data — trains, weather, the river
No trains are showing. The ride pages take positions from the live agency feed only — there is no schedule fallback pretending to be a position. When nothing is reporting you get a sentence saying so ("No trains reporting right now — service winds down after 1am"), not a blank space. A vehicle whose last report is more than five minutes old is dropped rather than drawn in a place it may no longer be.
An arrivals board says "scheduled" instead of a countdown. That board always states whether its minutes are the agency's live prediction or the published timetable. Seeing the word is the feature.
A live panel says "unavailable". An upstream service — the transit feed, the weather service, the river gauges, the airport status — is not answering. Every one of these degrades to a stated absence rather than to a stale number presented as current. Nothing else on the page is affected.
The airport page looks out of date. Airspace status is cached for up to thirty minutes. For a flight you are actually catching, check your airline.
4. Places and pages
A place page has no hours, no price and no parking note. That is the guide saying nobody has checked this, which is the honest answer. Only 28 of 343 published places carry a structured week of hours; 225 carry none at all. The site will not print a plausible guess to fill the space. See the FAQ.
A place page has no Directions button. It is one of the 14 history records — six permanently closed, eight where the building is gone. Routing you to a demolition is not a route. Add to trip takes the highlight instead, and the page tells the building's story.
A link to a place gave me nothing. Three records are marked unconfirmed and have no public page. They are withheld, not deleted.
A neighborhood page says no rail reaches it. Eleven of the 22 neighborhoods have no station, and those pages say so in a plain sentence with a pointer to the map. That is the intended output, not an error state.
A neighborhood page has no history beat, or no tours. Both sections render only when there is something real to put in them. An empty one is omitted rather than shown as a placeholder.
An old link to a place still worked but landed somewhere else. Slugs are permanent. Where two records were merged, the retired slug redirects to the surviving page rather than 404ing.
5. Your trip, and things that should have been saved
My trip is empty / my home base is gone. Everything the planner remembers lives in your own browser. Clearing your browser data clears it, and there is no backup and no undo. Private browsing, a full storage quota, or storage disabled entirely all mean the same thing: the site works for the session and does not persist.
I edited my trip in two tabs and lost work. This is a real defect, not a misunderstanding. Two open /trip tabs do not know about each other, and the last one to write wins — silently. Your home base does sync across tabs; your itinerary does not. Plan in one tab.
A stop in my trip says "This place is no longer in the guide". The place closed or the record was withdrawn. The row deliberately stays, keeping the shape of your day intact, so you can decide what to do with it rather than discovering a hole.
The offline page is empty. Nothing has been pinned yet, so no snapshot has been written. Pin a place, or open /trip once with a connection — that rebuilds the whole copy from the live records.
A place I added from someone's shared link has no detail offline. Pinning a place from its own page banks that page's facts. A place arriving through a share link that you have never opened has nothing true to say about it offline until you open /trip with a connection.
The offline copy won't tell me if somewhere is open. Deliberate. It carries hours by season and prints the date the copy was taken; it will never cache "Open now", because that answer is true for minutes.
6. Accounts and sign-in
/login says sign-in isn't available. Sign-in is not configured in this environment. The page says so rather than showing a button that fails. Everything except posting photos, posting reviews and cross-device sync works signed out.
The sign-in button appears but the flow fails. A known configuration case: the site can look sign-in-ready when part of its authentication setup is missing. If it happens, nothing about your local progress is lost — you are still in the fully supported signed-out mode.
I signed in and nothing seemed to happen to my progress. Signing in is the claim. There is no separate "claim your progress" step: the first successful sync submits your entire local history in one batch and the server de-duplicates it. It is debounced and runs in the background, so give it a moment. Your local game is never deleted by a sync.
7. Games and progress
My high score didn't save. Scores are highest-wins — a run only replaces your best if it beats it. If storage is unavailable (private browsing, full quota, storage disabled) the games still play and simply do not remember; you will never be shown an error about it.
My streak broke and I did play. Days are counted on Charlotte's clock, not your device's and not UTC. If you played at 11pm Pacific, that was already tomorrow in Charlotte. There are no streak freezes, no grace days and no repair purchases — that is a decision, not an omission.
A crossword says I revealed a letter and I want that undone. The reveal flag is never cleared except by clearing that puzzle. A badge earned with a revealed letter is not one the site will call perfect.
Trivia paid me nothing for a question I answered. Rewards are keyed to the question, not the round. A question answered in the whole-city round and again in its neighborhood round pays exactly once. Getting a question wrong at a place still records your check-in, and the trivia bonus stays available to claim later.
Cabinet artwork looks wrong for the game. Six of the seven cabinets ship placeholder marks borrowed from other games. The games are finished; the icons are not.
8. Using the site without JavaScript
What works: the A–Z at /places, every place page, every neighborhood page, both ride pages, the entire history record at /history/timeline, the prose chapters, /answers (the disclosures are native), the offline page, and search from the navigation bar.
What does not, and says so: /map, the column browser at /browse, and the activity cloud on the home page. Each states plainly what it needs and where to go instead.
What partly works: /trip renders the starter Saturday as real prose — the date named, the three places listed and linked — plus a line saying that reordering, times, meals and the offline copy need scripting. It is not a skeleton.
Deep links behave: ?brush= and ?year= on the timeline are read after the page loads, so without scripting you still get the complete decade record, just not the brushed view.
9. Still stuck
Email corrections@clt.theperfectship.com — it goes to a person, not a queue, and it is answered within five business days. Include the page address if you can.
Two things worth reporting that most people assume are their own fault:
- A share-card preview quotes a fact you cannot find on the page. Previews are built to quote only sentences the page actually prints, so a mismatch is a real bug.
- A recovery suggestion that leads to another empty page. Every suggestion is run before it is offered, so nothing in that panel should be able to land you back on it.