The city serves these live and keeps nothing, and neither does this page.
Scroll or pinch to zoom, drag to pan, double-tap to snap back.
A share of any grid will be dark, frozen, or pointed at a pole, and after sunset most of
them tell you only whether headlights are moving.
Where this comes from
Austin publishes a few thousand datasets at data.austintexas.gov. Most of them are
spreadsheets nobody opens. A handful carry coordinates, and those are the interesting ones —
they describe the city as a physical place, hour by hour. This page stitches a dozen of them — from
both the Socrata portal and the city's GeoHub — onto
one map and lets you cross-reference them against who actually lives where.
Live traffic incidents — dx9v-zd7x, refreshed by APD/ATD every few minutes. Pulsing pins are still open right now.
311 service requests — xwdj-i9he. Potholes, loose dogs, dead animals,
noise complaints. These do carry coordinates, so the breakdown of what people are calling
about can be scoped to a real bounding box or a radius around you.
Issued construction permits — 3syk-w9eu, with job valuation and contractor.
Crashes — y2wy-tgr5, the Vision Zero record. Runs a couple of weeks behind.
Live fire incidents — wpu4-x69d, the same CTECC dispatch feed
as the traffic layer, both re-read every two minutes. Fire, rescue and hazmat; no medical
calls, which the city withholds under HIPAA. Pulsing pins are still open right now.
Power outages — Austin Energy, through the KUBRA feed behind
their public outage map. It reports by ZIP rather than by outage, so the shapes are the
51 ZIPs they serve and the counts are joined in the browser; only the ZIPs actually out
are drawn. Customers out, customers served and a restoration estimate where there is one.
Refreshed every five minutes against a source that republishes every ten. This is the
one feed on the page with no archive behind it — the city publishes a map of what
is true now and never writes it down — so a scheduled job in this repo has been
recording it since 8 September 2026 to build the history that otherwise would not
exist.
APD crime reports — fdj4-gpfu, 2.7 million of them going back to
2003. This one carries no coordinates at all — only a council district and a census
block group, which is why it shades those units rather than dropping pins. All the counting
happens on Socrata's side.
Traffic cameras — the city's live stills, which arrive at
1920 × 1080 — measured, because it decided the feature. Under about
640 px the right answer would have been showing two or three nearby cameras at once,
since enlarging a small frame only enlarges the blur; at full HD the popup was simply
showing one percent of the pixels the city was already sending, so tapping the thumbnail
opens it near full width with a manual refresh. Nothing is stored. The dataset says
plainly that these monitor live conditions and that no video is recorded or retained, and
a still of a public street holds identifiable cars and people — an outage count is
infrastructure state, this is not the same thing, and building the archive the city chose
not to build is the one version of this page's habit that would create liability instead
of value. Expect a share of any grid to be dark, frozen or pointed at a pole, and expect
most of them after sunset to tell you only whether headlights are moving.
Fire stations, libraries, public art, traffic cameras — i8r8-6nhk, tc36-hn4j, uuk6-933w, b4k4-adkb.
Council district boundaries + demographics — w3v2-cj58 and puux-7swp, simplified and joined ahead of time so the shading is instant.
Census block groups, tree canopy and urban heat — the Tree Equity Score layer on
Austin's GeoHub, the city's ArcGIS side, separate from the Socrata portal. 644 block
groups, each carrying population, canopy cover and a summer surface-temperature reading
against the city average. It's the only public source that puts all three in one place, and
it's what lets this map shade 644 units instead of 10.
Parks, trails, floodplain, low-water crossings — also GeoHub, server-simplified into
static files ahead of time.
Street condition — 28,006 segments, each graded A–F by Public Works off a
measured roughness index. The drawable layer is the heavy one here, so it only loads if you
ask for it; the per-area averages behind the two street metrics are joined to the block
groups at build time and cost nothing to use.
Time — nothing extra is fetched to play a window back. Every point already
carries its timestamp, so the scrubber is a filter. The layers don't share a clock, though:
traffic is live to the minute while crashes stop wherever Vision Zero last published, so
each layer sweeps the same relative position through its own range rather than pretending
to one timeline. Anything without a clock — stations, libraries, art, cameras, and
every ground shape — is standing infrastructure and stays put.
Live congestion — TomTom raster flow tiles, on when the page opens.
They bill per tile and refetch on every pan, which runs to 185,000–212,000 requests
a month against a 200,000 allowance — so they are the one layer here with a real
marginal cost. The reason that is affordable is that the traffic archive no longer shares
the risk: it rations itself against its own much smaller allowance, and the corridor board
below is sampled once by a scheduled job rather than once per visitor. It sits deliberately under the APD/ATD dispatch pins, because traffic
on its own is something every phone already has — the jam next to the wreck causing it
is not. TomTom is the one vendor whose terms allow their traffic over someone else's
basemap; Google's renders only on a Google map and their terms forbid it elsewhere, which
would have meant discarding everything this page is built on.
Congestion as objects — the same TomTom congestion the flow tiles
paint, from the Incident Details endpoint, drawn as lines you can tap and counted
into a number. The tiles are pixels: you cannot count one, tap one, or ask it how many
minutes of delay it represents. These are the same events the archiver has been recording
for days. They also cost differently — tiles bill per tile and scale with map
motion, which is how nine days came to 68,665 requests; this bills per request and scales
with attention, one call per settled view on a snapped grid, cached for a minute.
Off by default. Probe-derived, not reported: a jam here with no dispatch pin beside it
means nobody called it in.
How fast is this road — TomTom Flow Segment Data, on a tap and never
otherwise. Current speed against free-flow for the stretch of road under the incident you
tapped, with the segment it measured highlighted so the number is not read as being about
wherever your finger landed. Confidence is reported beside it, because it varies.
How far can I get — TomTom Reachable Range. Ten, fifteen and twenty
minutes of driving from a point, as three nested polygons, in the traffic that exists
right now. It is the only thing on this page that answers a question instead of describing
a fact — everything else says what is; this says what you could do about it.
Ask from the locate readout, or long-press anywhere on the map. Tap-only by design: three
requests per ask is fine, three per pan would not be.
How the highways are moving — TomTom Flow Segment Data for nine named
stretches: current speed against free-flow, as numbers. This is what the coloured flow
tiles could never tell you — an overlay can say a road is red, it cannot say Mopac is
doing 34 of 65, and you cannot read it without looking at the map.
Sampled every twenty minutes by this site, not by your browser, so the reading
costs the same whether one person is looking or a thousand — which is the only
reason it can exist on a free allowance.
Every coordinate was snapped to a motorway centreline and checked against OpenStreetMap:
an earlier set chosen by eye landed on residential side streets, and the flow endpoint
answers for whatever road is nearest without complaint, so it would have reported a
cul-de-sac's speed under the name of a highway.
Rain — NOAA's base reflectivity ImageServer, which is time-enabled:
each read asks for a narrow window at the end of its extent, because a request with no time
on it returns the whole two-hour archive composited into one image, and three quarters of
that rain has already fallen. None of the imagery is ever drawn. 565 m pixels are a
fact about the instrument rather than about the weather, so the reflectivity is read as a
density field and the map draws falling drops through it instead.
Cloud — GOES East infrared through Iowa State's mesonet WMS. Same
treatment for a stronger reason: at 4 km a pixel is half of downtown, so it is drifting
puffs sampled from the field, moving on the wind the Camp Mabry station actually reports.
Infrared rather than visible on purpose — visible light is reflected sunlight, so that
product is black for half of every day, and cloud at 2am is exactly when you would look.
In infrared, brighter means colder means higher cloud top.
Satellite — Esri World Imagery, which over Austin is Nearmap
orthophotography at about 8 cm. The panel reads the acquisition date out of Esri's own
footprint layer for whatever you are looking at, so it says whose picture it is and when it
was flown rather than just "satellite". It earns its place on detail rather than looks: the
dark canvas has no tiles past zoom 16 and upscales a blurred one from there, so past 16 the
imagery is the sharper map. It is filtered hard on the way in — most of the saturation
removed, contrast up, and the same hue rotation that puts Esri's grey canvas into this
page's navy — because raw aerial is the one basemap guaranteed to fight every colour
on top of it. It rides the same day/night variables as everything else.
The light — computed, not fetched, and the only thing on this page
that is not a feed. The sun's altitude and bearing come from the standard low-precision
solar series for the map's own centre and the hour on display — no request, no
library, nothing to be offline for. Checked against an independent almanac at both
solstices and the equinox: within two and a half minutes on the sunrise instant, which for
a colour ramp is nothing. It moves three things and deliberately not a fourth. The basemap
stays dark always and only shifts along a warm/cool axis, deepest around 3am and warmest at
noon — a light daytime map would break the contrast on every layer at once. The rain
and the cloud take the sun's actual colour, gold when it is low and city-lit grey when it
is down, dimmer at night but never invisible, because rain at 2am is still rain you came
here to see. And a warm band leans in from the sun's own bearing while it is near the
horizon — west at dusk, east at dawn. The hour it uses is the scrubbed hour, not the
wall clock, so playing a window through walks the map across a day.
Buses and trains — CapMetro GTFS-realtime, about a hundred vehicles in
service across thirty routes, reported within thirty seconds. This is the one feed the page
cannot read directly: data.texas.gov answers with a redirect that carries no CORS header,
and the file it points at rotates its name on every publish, so a small relay adds the
missing header and changes nothing else. Vehicles in the yard are left off — where
CapMetro parks is not the question. They move rather than blink: positions land
about once a minute and each vehicle slides from where it was to where it is, on a canvas
of its own so a hundred moving buses never repaint the sixteen thousand other marks.
When the next bus comes — CapMetro's trip updates and
service alerts, through the same relay. Tap a stop for the next few arrivals by
route, which stops are being skipped, and any detour or suspension affecting it.
A caveat that matters: the feed publishes predicted arrival times and no delay
field at all — checked across all 1,591 trips in a live pull — so this can say
“next one in six minutes” and cannot say “four minutes late”.
Saying the second would need CapMetro's static timetable to subtract from, which is
megabytes. The alerts feed also carries the name and work email of the CapMetro staffer
who filed each one; nothing here reads those fields.
Headlines — local newsroom RSS, read by a scheduled job in this repo
rather than by your browser: the feeds do not send CORS headers, so the page could not
fetch them directly even though they are public. The job reads them, keeps the item and
drops everything else, and writes one small file to an orphan branch that the page loads
cross-origin from raw.githubusercontent, which does send the header. An item only earns a
dot on the map if its text names a place the gazetteer knows — a street, an
intersection, a ZIP — so most headlines ride in the ticker and never land anywhere.
A headline about the city is not a headline about a location.
Signals in fault — City of Austin traffic-signal status, the
city's own record of which signals it cannot talk to or which are on flash. It is the
nearest thing to a live map of where the grid is hurting, which is why it is worth having
beside the outages — though the two do not always agree, and the City only operates
City signals: TxDOT's, and other jurisdictions', are somebody else's dataset.
MetroBike docks — GBFS, the bikeshare interchange standard, straight
from CapMetro's operator. Two files, one for where the docks are and one for what is in
them, which is the whole reason the count can be live: the docks change yearly, the bikes
change by the minute.
Wildfires — the national incident layer Esri hosts, filtered to
Texas and then to what is near enough here to matter. Deliberately not clipped to the
county: a fire 150 km upwind is the one you would want to know about, and it would
never appear on a map of Austin.
Creek gauges — USGS instantaneous values, stage and discharge for
every active gauge in the metro box, refreshed by them every fifteen minutes. No key, CORS
open, and an endpoint that has outlived most of the web. It is the half the crossings
layer is missing: crossings say what is closed, gauges say what is rising.
An hour of readings is fetched rather than the latest one, because a stage on its own does
not say whether the creek is coming up, and that is the part anyone acts on. Rising means
a tenth of a foot an hour — measured, not guessed: across a dry hour the largest
change on any of 37 gauges was 0.075 ft/hr, so a tenth is movement rather than the
sensor breathing. And a stage is meaningless without a scale, so the
National Weather Service flood thresholds are baked in beside it: 4.2 ft is
alarming on Shoal Creek and nothing on the Colorado. Eleven of the 36 gauges NOAA lists
here publish one, and they are the named creeks. Tap a closed crossing and it names the
nearest gauge and what the water is doing — straight-line nearest, so it says which
creek and lets you judge whether that is the one under the road.
School zones — three sources joined at build time: the city's
zone register, the beacons themselves, and GeoHub centrelines. The
register carries no geometry and the beacons carry the schedules, so the join is the
feature: a beacon id reads “7322-529-”, and that 7322 is the zone, which is
also GeoHub's. 161 of the 162 active zones come out with both a real window and a
position; 27 have no published centreline and are drawn at their beacons instead, which
the popup says. Only Active zones — the register also lists Inactive and Removed
ones, and drawing a retired zone would be worse than drawing nothing.
What it will not tell you is whether school is in session. The hours are published
and exact, including the early-release window, so the page says a zone is
scheduled when a weekday window is open and leaves the last step to you. No
district here publishes its calendar in any form a page can read, and there are eight of
them — Austin, Pflugerville, Round Rock, Leander, Eanes, Del Valle, Manor and a set
of private schools — with different terms, different holidays, and one that runs
year round. A school-zone layer that is confidently wrong on a teacher work day is worse
than one that tells you what it actually knows.
Roadway work zones — open right-of-way permits rather than cones on
the ground, which is why the count runs to thousands and some end dates run years out.
Filtered to permits that have not expired, and drawn quietly except on the corridors the
city itself flags as traffic-sensitive. Off by default: it is the heaviest ground layer
and at city zoom it is the loudest thing on the map.
Routes and stops — CapMetro's static GTFS, which is a different feed
from the live one: 34 MB zipped and 168 MB open, almost all of it in two files no
browser should ever download. A weekly job streams them once — 3.3 million shape
rows and 843,000 stop-time rows — and keeps only what is drawable. CapMetro publishes
7,323 shape variants for 71 routes, one for every detour and short-turn, so the most-used
shape per route per direction is kept; that is what anyone means by “the 20”
— unless that shape has a hole in it. Some do: 579 of the 7,323 skip more than a
kilometre between consecutive points, and five routes were being drawn flying across open
ground because of it. Those now fall back to the most-used sound variant, which in every
case here is used by exactly as many trips. Route 491 has no sound variant in any
direction, so it is drawn with a visible break rather than a confident straight line
through country the bus does not cross. What is drawn stays within eight metres of the
shape CapMetro published, and the build refuses to ship if it does not.
Tapping a stop lights its routes and filters the live vehicles to them, because most stops
serve several routes — Lavaca at 6th serves fifteen — and a stop therefore has
colours rather than a colour.
Power history — outage state is not published as history anywhere, so a
scheduled job here writes it down every quarter hour and the page reads that archive back:
how long each ZIP was dark, and whether Austin Energy restored by the time it had published.
Joined to census demographics by ZIP to ask whether the parts of town that stay dark longest
are also the poorest — with the caveat, stated on the panel, that a few days of
archive cannot answer that yet.
Current conditions — the Camp Mabry station (KATT) through
api.weather.gov, which is the central Austin reading the city itself quotes, falling back to
Austin-Bergstrom if it goes quiet. It rides in the news ticker every few headlines rather
than in a bar of its own.
Next twelve hours, and air quality — Open-Meteo, free and keyless,
and the one modelled thing on this page. Everything else here is an observation:
a gauge read a stage, a station read a temperature, a bus reported where it was. A
forecast is not, and neither is the air quality — the US AQI comes out of the CAMS
model for this patch of the map rather than from a monitor standing in it. That is said
plainly wherever it appears, because the claim this page makes is that it shows what is
measured, and one row quietly not being that would cost the others their credibility.
The hourly strip only appears when some hour reaches 20% — it exists to answer
“which hour”, and twelve bars at the floor read as a broken chart rather than
as a dry afternoon. The backlog suggested PurpleAir or AirNow; both now require an API
key, and this page has nowhere to keep one a reader could not also read. Measured beats
modelled, so if this earns its place the upgrade is AirNow behind the relay that already
exists, where a key can live.
Weather alerts — api.weather.gov, the National Weather Service's own
feed. Free, no key, and the only non-Austin source on the page. Every alert carries FIPS
county codes whether or not it ships a polygon, which is what scopes it to Travis and its
neighbors; warnings draw their real polygon, advisories that name only zones get the county
outline instead, drawn dashed to mark the difference. Refreshed every three minutes. Most of
the time there is nothing, and the section stays out of the way.
Your own location, if you tap the crosshair — read from the browser's geolocation
API, used to work out which block group you're standing in, and never sent anywhere. There
is no server here to send it to, and nothing is written to storage; close the tab and it's
gone.
The per 10,000 residents shading is the part worth playing with. Raw counts just find the
dense places. Normalizing by population surfaces where something is genuinely out of proportion
to how many people live there — and at block-group resolution you watch it change street by
street instead of across a tenth of the city.
Caveats worth knowing. 311 records reflect who calls 311, not where problems are. Crash data
lags. Fire incidents are geocoded to the response area, not a doorstep. Demographics are the
2022 profile built on the 2020 census, so they age against everything else here.
And per-capita rates break downtown: a block group with 200 residents and 40,000 daily
workers will always look catastrophic per resident. The choropleth is shaded by rank rather
than by raw value for exactly that reason — one runaway unit would otherwise render the
whole city black — and the legend carries the real numbers.
One worth trying for yourself rather than taking on trust: shade the districts by
percent of streets graded D or F and then by median household income. The
pattern is messier than you would guess — downtown has the worst pavement in the city
despite the money, because pavement follows traffic volume as much as it follows spending.
Everything on this page is a link, so whatever you find you can send to someone.