HELGE SVERREAll-stack Developer
Bergen, Norwayv13.0
est. 2012  |  300+ repos  |  4000+ contributions
Tools  |   Theme:
curl drew a picture
April 1, 2026

I had Claude Code download a large file for me with curl --progress-bar. Instead of the usual progress bar, this came back:

#=#=#                                                                          #
#O#-#                                                                         ##
O=#  #                                                                       #=#
=-#  #                                                                      -#O#
 #   #                                                                     -#O#-

258 lines of it, forming a diagonal zigzag that climbed top-left to bottom-right, reversed, reversed again — a waveform drawn sideways.

curl --progress-bar — row 0/282
600 / 997 MB
one string, wrapping at 80 cols — each row overwrites the last via \r
speed8 fps
cols

Why this happens

curl's --progress-bar is designed for terminals. When you run it interactively, the bar animates in place — one line that rewrites itself. It does this using carriage returns (\r): print the bar, then return to column zero, then print the updated bar, overwriting what was there before. You see a smooth animation.

In a real terminal, it looks like this:

curl --progress-bar (real terminal)
                                                                           0.0%
one line, rewriting itself via \r

When stderr isn't a TTY — like when an AI agent runs curl in a subprocess and captures all output — the \r characters have nowhere to go. Each redrawn frame becomes its own line instead of overwriting the last one. 258 frames, 258 lines.

The pattern isn't random. Each row is one snapshot of the progress bar at a moment in time. The # characters encode how much has been downloaded. Reading the pattern diagonally from top-left to bottom-right traces the download from 0% to 100%. The angle of the diagonal reflects download speed — steeper means faster throughput, shallow means the connection was slow. The oscillating shape comes from curl's internal update rate interacting with the varying download speed over the ~4-minute transfer.

It's a time-lapse of a download, visualized sideways.




<!-- generated with nested tables and zero regrets -->