Aporia is stress analysis for crowds running on
neural networks.
Under 25 megabytes,
trained on 1,500 simulated bends, and a density map in
13 milliseconds.
Free, open-weight, runs locally in your browser.

How CFD-U is made. Three steps from crowd simulations to a model that runs in your browser.

Read the map, compare the fix. Every pixel is people per square metre, graded on Fruin's levels of service. Change one thing and the variant sits beside the current bend, at the same total flow.


Cutting the corner feels like the easy fix. It barely
helps.
In simulation, it lowers the peak density by 3 % at most, and in sharp
bends it raises it. The angle and the width set the load: same crowd,
wider corridor, less crowding.
Click here to try it
Measured, not promised. Held-out bends, scored against the simulator's own noise and two shortcuts. Means of three seeds.
How to read the numbers
- CFD-U
- Aporia's model.
- Noise
- The simulator against itself, run twice. No model can beat it.
- Nearest
- Copy the map of the most similar bend seen in training.
- Formula
- The hand calculation: density = flow ÷ walking speed.
- RMSE Average error per point of the map. Lower is better.
- Speed Time to draw one map. No GPU: a phone browser without WebGPU.
- Peak Error on the busiest spot (p99). Lower is better.
- Fruin level How often the peak gets the right A–F grade. Higher is better.
All on bends kept out of training.
13 ms per map. Warm, in the browser. A JuPedSim run takes 22 s.
1.2 % off the peak. The p99 load, on bends from 30 to 120°.
99 % right Fruin level. Same bends; 83 % on angles it never saw.
-
Real situations. Start from a metro transfer, a stadium exit or a museum rope line, then change one thing.
-
Fair comparisons. The variant carries as many people per minute as the current bend, so only the design changes.
-
Levels in plain words. Fruin's A to F, named for how it feels: from free flow to jammed.
-
Says when to doubt it. A warning outside its validated range, and a map of where its three networks disagree.
-
Share or export. Every setting lives in the link. Maps export as PNG, scale and legend included.
-
Private by design. It runs on your device: nothing to install, and nothing sent anywhere.
Questions? Answers.
What does Aporia do?
It shows where people get squeezed when a crowd walks around a corner, as a colour map of how crowded each spot is. You describe a corridor bend (its angle, its width, how much of the inner corner is cut off, and how many people walk through per minute) and the map appears at once. Then you change one thing and see whether it helps. The name is Greek for “no way through”.
Who is it for?
Anyone who shapes how people move through a space: architects, station and venue planners, event organisers, students, or the simply curious. No crowd science needed: the map and its levels are made to be read at a glance.
How do I use it?
Open the demo and pick a scenario, such as a metro transfer or a stadium exit. Each one is a pair: the current situation, A, and a proposed change, B. Move the sliders to adjust either; both maps update as you go, and B's header says how much its peak differs from A's. Hover a map to read the same spot on both.
Do I need to install anything?
No. It runs in your web browser, on a laptop or a phone. The first visit downloads about 25 MB, mostly the model; your browser keeps it, so later visits start in a moment. Browsers with WebGPU run it on your graphics card, the others on the processor: a little slower, the same maps.
What do the colours mean?
Each pixel is a density: how many people share one square metre, on average, once the flow has settled. Darker is more crowded. The colours follow Fruin's levels of service, a scale planners have used since 1971, from A, free flow (under 0.31 people per m²), to F, jammed (above 2.15). The number on each map is its peak: the density that only the most crowded 1 % of the corridor goes beyond, so one odd pixel cannot set it.
Why compare at the same total flow?
Because the crowd does not shrink when you redesign the corridor. Aporia keeps the number of people per minute fixed, so a wider corridor spreads the same people over more floor. The difference between A and B then comes from the design, not from fewer people.
How does it work?
In three steps. A research crowd simulator, JuPedSim, tuned on published experiments with real pedestrians, walked virtual crowds through 1,500 different bends. A neural network, CFD-U, then learned to draw the resulting density map directly from the shape of the bend. That network runs in your browser: a simulation takes about 22 seconds, the network about 13 milliseconds, so you can try ideas as fast as you think of them. The network's weights and the 1,500 simulated bends it learned from are public on Hugging Face.
How accurate is it?
On test bends it never saw during training, from 30 to 120°, its peak is within about 1 % of the simulator's, and it picks the right level of service 99 % of the time. The simulator itself was calibrated and checked against real experiments. The figures are in the numbers above, and the reports below go into detail.
When shouldn't I trust it?
It knows one shape: a single bend in a corridor, everyone walking the same way at an everyday pace. It is validated for angles up to 120°, widths from 1.5 to 3 m and moderate flows; outside that range, the app shows a warning and the error grows. The Disagreement view shows where its three networks disagree: read those areas with care. It models no pushing, panic, counter-flow or evacuation, so it cannot certify a safety plan: use it to compare ideas, then have a real study done.
Is it free? What happens to my data?
Something looks wrong, or I have an idea.
Please get in touch and paste the demo's link: every setting lives in it, so it reproduces your bend exactly.
Aporia is free, in any recent browser, on a laptop or
a phone.
Under 25 megabytes, a map in milliseconds, and nothing to install.