Harnessing ChatGPT hallucinations

 from Red Blob Games’s Blog
Blog post: 22 Sep 2025

The web server I use (nginx) logs errors to a file. I check this occasionally to make sure nothing’s going wrong with my server. I typically get these kinds of 404 requests:

typos
the url /pathfinding/a-star/inroduction.html was meant to be /pathfinding/a-star/introduction.html
parsing errors
the url /articles/visibility/)and was some text /articles/visibility/) and that went through a url regexp
misconfigured crawlers
the url /region-graph-path.png was originally from html <img src="region-graph-path.png" …> but the crawler tried fetching it from the top level instead of the subfolder
attackers
the url /FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=%2F is some crawler looking for weaknesses in my web site

Last week I noticed a request for /articles/autotiles/ with the HTTP Referer chatgpt.com. This is an unusual request. It’s not syntactic like the above. It’s a semantic error. An AI confabulation/hallucination[1] probably. The referrer means that the user was on chatgpt.com and clicked a link to https://www.redblobgames.com/articles/autotiles/, which is a 404 error.

I decided to investigate more.

If I ask what does red blob games have to say about autotiles, ChatGPT will tell me:

I couldn’t find any evidence that Red Blob Games (Amit Patel) has written anything specifically about autotiles (in the sense of tilesets that automatically pick tile variants based on neighbors). Their site covers many things like grids, map generation, procedural terrain, pathfinding, etc., but I didn’t locate a page dedicated to autotiling.

But if I ask tell me about redblobgames tutorial on wave function collapse, ChatGPT will tell me:

The Wave Function Collapse (WFC) tutorial by Red Blob Games is an in-depth guide to understanding and implementing the WFC algorithm for procedural content generation. It’s highly regarded for breaking down complex concepts in a very approachable way.

I don’t actually have a tutorial on Wave Function Collapse, but ChatGPT will give me the url https://www.redblobgames.com/articles/wfc/[2].

This is a reminder that you shouldn’t believe everything an LLM tells you! But lots of people have already written about that. I want to explore something different. Instead of treating the hallucinations as something to discard, I want to treat them as something to harness.

I looked through my error logs to find other non-existent URLs that ChatGPT gave out. I also looked at what OpenAI’s crawlers[3] found but they weren’t as useful. I looked at the top ten:

A subset of these are interesting to me — topics that I could write about. I went deeper into the list of 404s and collected these hallucinated URLs:

/x/2048/hilbert.html
/pathfinding/a-star/maze.html
/pathfinding/a-star/visualization.html
/x/1725-aabb-rectangle-overlap/
/x/1842-agent-based-model/
/x/1845-ai-car/
/grids/algorithms/
/x/1813-alpha-beta/
/pathfinding/ants/ /x/1844-ants/
/x/1841-atmosphere-simulation/
/articles/autotiles/
/x/1614-balance/
/x/1840-barycentric-coordinates/ /x/1842-barycentric-coordinates/
/x/1819-battleship-probability/
/x/1723-battleship-strategy/
/x/1846-battleship/
/x/1911-bits/
/x/1910-bitwise/
/x/1743-boids/ /x/1847-boids/ /x/2020-boids/
/x/1729-bresenham/
/maps/catan/ /x/1830-catan/
/maps/cave-generation/
/x/1845-cell-automata/
/x/2020-cells/
/articles/cellular-automata/ /grids/cellular-automata/ /x/1840-cellular-automata/ /x/1841-cellular-automata/ /x/1843-cellular-automata/ /x/2020-cellular-automata/ /x/2023-cellular-automata/ /x/2302-cellular-automata/
/grids/circle-circle-collision/
/x/1728-circle-drawing/
/x/1721-circle-packing/ /x/1830-circle-packing/ /x/1844-circle-packing/ /x/1945-circle-packing/
/articles/cities/
/x/1948-citizenship/
/maps/city-building/
/x/1840-city-generator/ /x/1841-city-generator/ /x/2023-city-generator/
/x/1842-citygen/ /x/1843-citygen/
/articles/collision-detection/
/x/1841-combat-model/
/x/compression/brotli.html
/x/compression/string.html
/articles/connected-tiles/
/articles/convex-hull/
/articles/conways-game-of-life/ /x/1721-conways-game-of-life/
/x/2020/cookie-clicker-save-editor/
/x/2020-cookie-clicker-save-viewer/
/grids/coordinates/ /maps/coordinates/
/x/2020-creature-trainer/
/x/1728-curve-editor/ /x/1729-curve-editor/
/articles/2d-geometry/
/articles/3d-octrees/
/pathfinding/d-star/introduction.html
/articles/3d-voxel-traversal/
/grids/3d/
/articles/data-oriented-design/
/x/1724-delaunay-triangulation/
/x/1722-delaunay/delaunay/
/x/1845-dialogue-trees/
/articles/dialogue/
/x/2018-dice-calculator/
/x/1846-digging/
/x/dither/
/x/1844-dots-and-crosses/
/articles/dungeon-generation/ /maps/dungeon-generation/
/articles/procedural-generation/dungeon/
/x/dungeon/dungeon.html
/x/2020/easing-graphs/
/x/1842-economy-sim/
/x/1843-ecosystem-simulation/
/x/1843-emacs-movement/
/x/1843-erosion/
/x/1843-evolution-creatures/
/x/1724-evolution-simulation/ /x/1841-evolution-simulation/ /x/1843-evolution-simulation/ /x/1844-evolution-simulation/ /x/1845-evolution-simulation/
/x/1811-evolution-simulator/ /x/1849-evolution-simulator/
/x/1810-evolution/ /x/1840-evolution/ /x/1842-evolution/ /x/1844-evolution/ /x/1846-evolution/ /x/1904-evolution/
/x/1942-evolutionary-algorithms/
/articles/finite-state-machines/
/x/1842-fire/
/maps/flag/ /x/flag/
/x/2023-flatbuffers/
/x/2020-float-to-bits/
/pathfinding/flowfield/
/fluid-simulation/ /x/1843-fluid-simulation/
/articles/fog-of-war/
/articles/formation-control/
/x/1843-fractal-tree/
/x/1843-frame-timing/
/pathfinding/funnel/
/maps/galaxy/
/x/1728-game-architecture/
/x/1842-game-loop/
/x/2023-game-programming-links/
/x/1618-genetic-algorithm/ /x/1842-genetic-algorithm/ /x/1844-genetic-algorithm/
/articles/genetic-algorithms/ /x/1717-genetic-algorithms/ /x/1724-genetic-algorithms/ /x/1816-genetic-algorithms/ /x/1830-genetic-algorithms/ /x/1845-genetic-algorithms/ /x/1951-genetic-algorithms/ /x/2020-genetic-algorithms/
/x/1844-genetic-drift/
/articles/geometry/
/x/1845-gradient-descent/ /x/1908-gradient-descent/
/x/1811-graph-maps/mazes.html
/x/1843-graphics-pipeline/
/articles/graphs/
/x/1844-gravity-simulator/
/grids/circle-rect-intersection.html
/grids/floodfill.html
/grids/wordsearch.html
/articles/hash-table/
/maps/heightmaps/
/x/1840-hex-map-editor/ /x/1843-hex-map-editor/
/x/hex-map-maker/
/x/1840-hex-range/
/x/2342-hex-roads/
/x/1843-hex-sphere/
/x/1843-hex-tile-mesh/
/x/1842-hex-viewer/
/x/1844-hexagon-tilings-spherical/
/x/hexagonal-grid-generator/
/x/1843-hexagons-on-sphere/
/x/1840-hexagons-vs-squares/
/maps/hexagons/
/x/honeycomb/
/x/1729-hydraulic-erosion/
/x/1843-icosphere-hexagons/
/x/1812-ik/ /x/1816-ik/ /x/1843-ik/ /x/1844-ik/ /x/1846-ik/
/x/2020-infection-model/
/x/1923-intro-aabb/
/x/1722-intro-spatial-partitioning/
/x/1724-inverse-kinematics/ /x/1840-inverse-kinematics/ /x/1842-inverse-kinematics/ /x/1849-inverse-kinematics/ /x/1908-inverse-kinematics/
/maps/islands/
/x/1842-isometric-depth-sorting/
/x/1911-isometric-projection/
/x/1847-isometric-tiles/
/x/1911-isometric-voxels/ /x/1911-isometric-voxels/
/articles/isometric/ /grids/isometric/ /isometric/
/x/1930-jigsaw-puzzle/
/x/1806-jumping/
/x/1721-kdtree/
/articles/kinematics/
/x/1728-langstons-ant/
/x/1840-langtons-ant/ /x/1844-langtons-ant/ /x/1943-langtons-ant/
/x/1844-life-simulation/
/x/2048-life/
/x/2022-lighting/
/x/1842-line-drawing-algorithms/
/x/2020-lorenz-attractor/
/x/1847-lowpoly/
/x/2023-lsystem/
/x/1722-lsystems/ /x/1843-lsystems/
/articles/map-generation/
/catan/map-generator/
/maps/mapgen/ /x/1844-mapgen/
/x/1843-mapgen4/
/maps/mapmaker/
/x/1843-mapping-spherical-worlds/
/x/1910-marching-squares/
/x/1728-markov-decision-processes/
/x/1843-matrix-transformations/
/matrix-transforms/
/grids/maze-generation/ /x/1847-maze-generation/
/articles/maze/ /pathfinding/maze/
/x/2020-mcts/
/maps/mesh/
/articles/minimax/ /pathfinding/minimax/ /x/1941-minimax/
/x/1840-model-view-controller/
/articles/monads/
/articles/monte-carlo-tree-search/
/x/monty-hall/
/x/1830-morphogenesis/
/pathfinding/multi/
/pathfinding/navmesh/
/x/1841-neural-networks/
/x/2217-nodal/
/x/1847-noise-viewer/
/x/1729-noise/ /x/1840-noise/
/x/1724-np-completeness/
/x/1846-octrees/
/x/1726-offset-paths/
/x/1845-optical-flow/
/articles/organisms/
/x/1729-p-vs-np/
/x/1924-packing-boxes/
/pathfinding/pacman/
/x/2020-pandemic-simulation/
/x/1843-particle-life/ /x/2020-particle-life/
/x/1846-particles/
/articles/partitioning/
/pathfinding/jump-point-search.html
/x/1843-pedestrian-simulation/
/maps/perilous-shores/
/maps/perlin-noise/ /x/1729-perlin-noise/
/x/1842-physics-simulations/
/articles/physics/ /x/1723-physics/ /x/1841-physics/
/x/pixel-count/
/x/1613-pixel-grid/
/x/1841-planet-generation/ /x/1844-planet-generation/
/x/1843-planet-generator/
/x/planet/
/articles/noise/poisson-disc/
/articles/poisson-disk-sampling/
/x/1830-poisson-disk/
/x/1848-polygon-boolean/
/x/1843-polygon-editor/
/articles/polygon-fill/
/articles/polygon-map-generation/
/x/1923-polygon-offsets/
/articles/polygon-partitioning/
/x/1721-polygons/
/articles/procedural-cave/
/x/1843-procedural-city/
/x/1843-procedural-creatures/
/articles/procedural-generation/
/x/1843-procedural-paths/
/x/1843-procedural-planet-gen/
/x/1723-procedural-rivers/
/articles/procedural-road-generation/
/articles/procgen-cave/
/maps/procgen/
/pathfinding/puzzle/
/x/1728-quadtree-visualization/ /x/1840-quadtree-visualization/
/x/1848-quadtree/
/articles/quadtrees/ /grids/quadtrees/ /x/1729-quadtrees/
/x/1843-ray-optics/
/x/1642-reaction-diffusion/ /x/1724-reaction-diffusion/ /x/1726-reaction-diffusion/ /x/1846-reaction-diffusion/ /x/1849-reaction-diffusion/ /x/2022-reaction-diffusion/ /x/reaction-diffusion/
/grids/rectangles/
/x/1844-robot-arm/
/x/1726-rock-paper-scissors/
/x/roguelike-java/
/articles/rooms-and-corridors/
/grids/rotation/
/x/1724-rotations/
/x/1723-rps-simulation/
/x/1720-sand/
/x/2216-sdf-physics/
/x/1922-self-driving-car/
/articles/shunting-yard/
/sliding-puzzle/
/x/2020-smooth-curve/
/pathfinding/smoothing/
/x/1849-soft-body-creatures/
/x/2001-solar-system-generator/ /x/2044-solar-system-generator/
/x/2142-solar-system/
/articles/spatial-indexing/
/x/1724-spherical-voronoi/
/grids/spiral/
/x/1843-spring-damper/
/x/1845-spring-mass/
/x/1843-star-map-generator/
/x/2020-starscape/
/x/1843-stat-scaling/
/articles/steering-behaviors/
/x/1844-straight-skeleton/
/x/1840-svg-vs-png/
/pathfinding/tangent-bug/
/maps/tectonics/ /x/1847-tectonics/
/x/2311-tensor-cores/
/x/1842-terrain-blending/
/x/1845-terrain-generation/
/maps/terrain/ /x/terrain/
/x/1841-tetris-ai/
/x/2312-tetris-art/
/x/1725-threading/
/articles/tile-map-logic/
/articles/tilemaps/
/grids/tiles/ /maps/tiles/
/x/1845-town/
/x/1840-triangle-intrusion/
/grids/triangle/
/x/1843-trig/
/x/1846-tsp-genetic/
/pathfinding/tsp/
/x/1723-turing-patterns/ /x/1729-turing-patterns/ /x/1844-turing-patterns/ /x/1847-turing-patterns/
/articles/turn-based-ai/
/x/1846-turn-based-loop/
/x/turtle/
/x/1841-vanishing-points/
/articles/vectors/ /x/1840-vectors/
/x/2022/06/virtual-machines-in-rust/
/x/1707-visibility-2d/
/x/1723-visibility/
/articles/visible-area/
/articles/visualizing-parallax/
/x/1846-volcano/
/x/1847-volumetric-light/
/x/1908-voronoi-3d/
/x/1836-voronoi-circle-growth/
/x/1830-voronoi-diagram/ /x/1841-voronoi-diagram/ /x/1843-voronoi-diagram/ /x/1846-voronoi-diagram/ /x/1847-voronoi-diagram/ /x/1848-voronoi-diagram/
/x/1840-voronoi-map-generator/ /x/1849-voronoi-map-generator/
/x/1721-voronoi-map/ /x/1723-voronoi-map/
/x/1730-voronoi-maps/
/x/1843-voronoi-noise/ /x/1912-voronoi-noise/
/x/1842-voronoi-relaxation/
/x/1843-voronoi-tile/
/x/1846-voronoi-tsp/
/x/1722-voronoi/ /x/1729-voronoi/ /x/1847-voronoi/ /x/2023-voronoi/ /x/voronoi/
/x/1728-voxel-meshes/
/articles/voxel-raycasting/
/x/1720-voxel-terrain/
/articles/voxels/ /grids/voxels/
/x/1840-wang-tiles/
/x/1847-water-simulation/
/x/1844-water/
/x/1843-waterflow/ /x/1844-waterflow/
/x/1728-wave-function-collapse/ /x/1729-wave-function-collapse/ /x/2023-wave-function-collapse/
/articles/wavefunction-collapse/ /x/wavefunction-collapse/
/x/2020-wavefunctioncollapse/
/x/2022-weather/
/articles/weighted-random/
/x/1836-weighted-voronoi/
/x/2023-wildfire-ca/
/maps/worldgen/
/x/1844-wraparound/
/x/1840-quadtrees
/x/1843-solar-system-generator
/x/1847-sine-wave-art
/x/1849-town
/x/1941-minimax

Most of the URLs it’s giving out are plausibly something I could have written.

I think it’s also interesting to see what it has “learned” about my URL structure. For my x/ pages, I use the first two digits for the year. ChatGPT is making up lots of URLs starting with x/18 which means that it thinks that 2018 was my most productive year. And … maybe it’s right. Hm.

This was a fun diversion. My server’s error logs tell me that ChatGPT thinks I’ve written pages I haven’t. Maybe I should actually write those pages!

Email me , or comment here: