Categories
Net transport

Melbourne rail map in ASCII

Back to the 90s

I’m working on a post about the train service upgrades announced yesterday, but waiting for some detail before publishing.

Meanwhile, I was digging around and found this.

Many moons ago when Usenet was a popular way of sharing information online, and a lot of people communicated via email lists, I maintained a Melbourne public transit “FAQ”. It was posted to the TRANSIT-L email list, and to the misc.transport.urban-transit Usenet group, and was a mix of dot points (following more-or-less standard format across cities), tables of service frequencies, and even a representation of Melbourne’s train map in ASCII art – because actual graphics were difficult to share back then.

Here is the map in all its glory.

                                                ZONE 2      .
*Epping .
ZONE 2 | *Hurstbridge . ZONE 3
Broad- * .....|....... / .
meadows| *Upfield. | ________*Eltham .
| ...|...... | / . .
ZONE 2 .|. | ZONE 1 |/ .. . *Lilydale
. \ | *Clifton .. . /
St Albans* . \ | Nth |Hill ..Box Hill . /
.\ \ | Melb | .. *_______*Ringwood
. \__*__\_\_*___*_*_ | Camberwell. / . \
Footscray/ | 3 4 | | *_______/ . \
. | 2* 5* |Richmond / \ . ZONE 2 . \
______*Newport \_*__|_/__*______*/ | . . *Belgrave
/. | 1 \Burnley\ *Alamein .
/ . * ~~~~~~~~ Sth Yarra*_ \ .. .
* . Williamstown~~ | \ \______*Glen Waverley
Werribee ~~~~~~~~~~~~~~~ ZONE 1| \ . .
~~~~~~~~~~~~~~~~~~~~~~ | *Caulfield ..
~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |\ . ..
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..|...|.\.. ZONE 2 ..
~~~~~~~~~~~~~~~~~~~~~~~~Sandringham* | \ ..... ZONE 3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | .\...
CITY LOOP~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...|.. *Dandenong
1 Flinders St~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |\
2 Spencer St~~~~~~~~~~~~~~~~~~~~Frankston* | \----*Pakenham
3 Flagstaff~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
4 Museum~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | *Cranbourne
5 Parliament~~~~~~~~~~~~~~~~~~Stony Point*

\___ Rail lines
__*_ Major stations
.... Fare zone boundaries; overlaps generally apply over 2-3 stations
~~~~ Port Phillip Bay

(Sorry phone users; this may look terrible on your tiny screens. You can see an image of it here)

This version is from 1995, and includes the Cranbourne line, electrified/opened that year.

Apart from being text-only, it was also designed so it fit within a then-standard 80 column character display commonplace to pre-graphical computers and the dumb terminals often used to connect to the pre-web Internet.

How about a modern version of the map? Well I’ve had a go, including suburban extensions since then, adding back the Altona Loop (not sure how that was missing), the Metro Tunnel, and V/Line’s suburban lines.

            Wallan*
| *Mernda ZONE 2
Craigieburn* /
| ZONE 2 | *Hurstbridge ZONE 2
Sunbury | .....|........ /
* | *Upfield.. | ________*Eltham
\ | ...|...... | / . Lilydale
\ .|. | ZONE 1 |/ .. *
ZONE 2 \ ... \ | *Clifton .. /
Deer\.... \ | ______ |Hill ..Box Hill /
Park.\Sunshine \ |/ \4 | .. *_______*Ringwood
*______*___*______*___\_\_*___*_*__ | Camberwell. / \
Melton/ . |Foot- 6 | 3 | | | *_______/ \
/ . |scray 2* | 5* |Richmond / \ . ZONE 2 \
/ . | \__*__|_/__*______*/ | . *
* . ______*Newport 1 \Burnley\ *Alamein Belgrave
Wyndham ./____/ | ~~~~~~~ \_______*_ \ ..
Vale / . * ~~~~~~~~~~~ Sth Yarra| \ \______*Glen Waverley
* . Williamstown~~~~~ | \ .
Werribee~~~~~~~~~~~~~~~~~~~~~ZONE 1| *Caulfield
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |\ .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..|...|.\.. ZONE 2
~~~~~~~~~~~~~~~~~~~~~~~~~Sandringham* | \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | \
CITY STATIONS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | *Dandenong
1 Flinders St/Town Hall~~~~~~~~~~~~~~~~~~~~~ | |\
2 Southern Cross~~~~~~~~~~~~~~~~~~~~Frankston*_ | \____*Pakenham
3 Flagstaff~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
4 Melbourne Central/State Library~~~~~~~~ | *Cranbourne
5 Parliament~~~~~~~~~~~~~~~~~~~~~~~~~~ |
6 North Melbourne~~~~~~~~~~~~~~~~~ Stony Point*

\___ Rail lines
__*_ Major stations
.... Fare zone boundaries; overlaps generally apply over 2-3 stations
~~~~ Port Phillip Bay

To fit things in, I’ve moved things around slightly, but it’s still within 80 columns.

What counts as a “major” station is debatable, but originally it was junctions and terminus locations. (Wallan, Melton and Wyndham Vale are neither, but are the last stops within Melbourne’s Urban Growth Boundary to the north and west.)

A truly modernised 2026 version could also include, like the official map, all the regional lines, and perhaps emojis?


Have I made any errors? Or any suggested improvements? Leave a comment.

Just before publishing I noticed I’d posted the original ASCII map before, but it’s been a while, so about time to enjoy it again.

By Daniel Bowen

Transport blogger / campaigner and spokesperson for the Public Transport Users Association / professional geek.
Bunurong land, Melbourne, Australia.
Opinions on this blog are all mine.

9 replies on “Melbourne rail map in ASCII”

If you want modern, well all the cool kids use ANSI now, so they get to use braille characters to draw nicer lines.

I suspect this won’t render well in a comment, but it’s worth a shot:

⠀⠀⠀⠀⠀⠀⠀⣤⣤⣤⣤⣤⣤⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠒⠒⠒⠖⠒⠒⠖⠒⠒⠖⠒⠒⢶⡒⠒⠖⠒⠒⠆
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠁⠀⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄
⠀⠀⠀⠀⠖⠒⠲⠒⠒⠲⠚⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠤⢤⠤⠤⠤⡤⠤⠤⣤⠤⡄
⠀⠀⠀⢦⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎
⠀⠀⠀⠀⠻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠃
⠀⠀⠀⠀⠀⠹⣄⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⡠⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⣰⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠁
⠀⠀⠀⠀⠀⠀⠘⢦⠀⠀⠀⠀⠀⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⡔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⡼⠁
⠀⠀⠀⠀⠀⠀⠀⠈⢣⡀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⢀⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢀⡞⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⡀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⣠⠋⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠘⢆
⠀⠀⠀⠀⢀⣤⣤⣤⣤⣤⣼⣦⣤⣤⣤⣽⣦⣤⣦⣤⣴⣤⣴⣤⣤⣤⣤⣷⡤⠤⠴⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⡷⠁⠀⠀⠀⠀⠀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀
⠀⠀⠀⢠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠉⠈⠉⠉⠙⣿⣦⣶⣶⣿⣶⣦⡀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⢀⡜⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡀
⠀⠀⠀⢸⠀⠀⠀⠀⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎⠀⠀⠀⠀⠀⠀⣼⣿⠋⠉⢙⠉⢻⡷⠀⠀⣠⠋⠀⠀⠀⠀⠀⢠⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠈⢣⠀⠀⠀⠀⠀⠀⠀⠀⠰⠃⠀⠀⠀⠀⠀⠀⠀⣛⣟⠀⠀⢸⠀⢸⣿⠀⡴⠃⠀⠀⠀⠀⠀⡰⠷⠶⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠂
⠀⠀⠀⢘⠀⠀⠀⠀⠀⠀⠀⠱⡄⠤⠤⠤⠤⢤⣾⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣄⣀⣨⣀⣼⣿⡞⠁⠀⠀⠀⠀⢀⡜⠁⠀⠀⠈⢣⡀
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠘⢤⣤⣤⡤⠎⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣀⣀⣀⣀⣀⣠⠎⠀⠀⠀⠀⠀⠀⠹⡄
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⢸⠉⠉⠻⣯⡉⠉⠉⠉⠱⡄⠀⠀⠀⠀⠀⠀⠀⠘⢆
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⣀⣀⣸⣷⣀⠀⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠁⠀⠻⣧⡀⠀⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠹⣷⡄⠀⠀⠀⠳⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⡃
⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠈⢷⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⠀⠀⠀⠀⠀⢸⠙⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀⢸⠀⠈⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⠀⠀⠀⠀⠀⢸⠀⠀⠀⠻⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠹⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠘⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠈⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣀⠞
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸

Wow! I’m really impressed that an ASCII map at this scale is even possible. I would have guessed that the columns just wouldn’t work, especially with the characters needed to indicate the zone boundaries.

Interesting to see that there were three zones at the time. I know pieces and bits (to reverse an irreversible binomial) about the history of Melbourne public transport, but I know basically nothing about the history of the fare zones.

@Craig, good point!

@David, that is a masterpiece!

@Nathaniel, at the time the zones were important because you had to pre-purchase all tickets. Nowadays it’s a little easier as you load money onto the card and tap on and off. Soon there’ll also be phone/bank card payment, so even easier.

Potted history of Melbourne fare zones:

For most of the time from the early 1980s until 2007, Melbourne had 3 zones, with the inner Zone 1 more expensive than the outer zones. Zone 3 merged with zone 2 that year. Then in 2016 the pricing was changed so the maximum fare is a Zone 1 fare.

Since 2009 a daily cap (2 x single journeys) was also in place. In 2023 the daily cap for Melbourne (eg Zone 1) was applied statewide.

@Daniel Bowen, plus for a period we had the neighbourhood zones (e.g. Werribee, St. Albans, Broadmeadows, Greensbrough, Box Hill, Ringwood, Morrabbin, Frankston and Dandenong, plus the Inner Neighbourhood. Too young to remember it (or even wasn’t around for it).

And the vast void the Doncaster rail line
How good would it be if the circle rail through Carlton and the outer suburban link through Kew to oakleigh still exited

It might make more sense to interpret the first map as only depicting the Altona route and not depicting the express route since Altona was the main route of the Werribee line before 2011 (and the express route has no stations anyway).

@indigohex3, yes 1983-1989 was the Neighbourhood system (which is why I included the caveat “most of the time”!)

Not worth mentioning in a brief history, and wisely reverted back to a simple three zone system.

There’s some history here if anybody’s interested, from the late Rob O’Regan: https://robx1.com/victkt/

@Terry K, true enough, the Werribee express route flew under the radar a bit in the 1990s, though from a quick look at a timetable of the era, a few services each day did use it.

Leave a Reply

Your email address will not be published. Required fields are marked *