User Tools

Site Tools

tools:gopher

This is an old revision of the document!


Gopher

Gopher is an ancient internet protocol invented at the University of Minnesota in 1991. It was once widely-used for serving something similar to web pages. It was once one of the most popular services on the entire internet, until the University squandered what they had and Gopher was overtaken by HTTP by 1994.

Like HTTP, it serves pages, media & files, using inline links to connect the pages of a Gopher site. Unlike HTTP, there are no fancy headers. Neither is there style information associated with it. Gopher markup language is a lot more concise than HTML, providing just barely enough functionality to tell the server where on the page to put links & plain text. All styling is decided by the visitor's Gopher browser, just like with IRC. As a result, Gopher sites are extremely fast to load, as they consume a fraction of the bandwidth it takes to transmit an HTML page.

Goldy Gopher, official mascot of the Gopher protocol.

Scripting options are far more limited as well. The Gopher ecosystem (also known as Gopherspace) is relatively resistant to many common methods of browser fingerprinting, as well as ad beacons & advertising in general (Though it is not entirely private as it does not support TLS, and a server can still geolocate your IP if you are not on a VPN). This has made the Gopherspace a popular niche destination well into the 21st century for those looking for a simpler, more intentional, and less distracting internet.

MIND THE GAP: A Gopher hole is located behind the Institute at gopher://bestpoint.institute on Port 70! There is nothing covering this hole, so be careful that you do not fall in!

Browsing Gopherspace

There are several ways to browse Gopher sites on your computer:

Visually

The slickest and easiest solution is to install Lagrange. It's fast, the interface is clean, and it's available for iOS, Flatpak, and a multitude of other platforms. Even better, it also supports the Gemini protocol, which is sort of a modern version of Gopher with a few extra convenience & markup features. The Gopher & Gemini ecosystems are very close to each other, so having them both in the same browser is very useful. It's not uncommon for Gopher/Gemini servers to have parallel Finger services either, and Lagrange has support for that protocol as well.

If you want more options, check Wikipedia, but I'm telling you that Lagrange (or maybe Kristall) is the way to go if you want an elegant GUI app that's easy to use.

Command Line

If you are using terminal you have a few solid options here. First are the text-mode web browsers Lynx & ELinks, which have decent built-in Gopher protocol support. For dedicated clients, ncgopher & Bombadillo are highly revered by the Gopher community.

Browser Extensions

Once upon a time, web browsers could access Gopher. Not anymore. Big Tech doesn't want you on a part of internet that can't run Javascript, advertising beacons & spyware, so the feature was just ripped out of all web browsers around 20 years ago.

You can install browser extensions to haphazardly duct-tape Gopher support back into your browser. If you don't want to install anything, you can use the Floodgap Proxy. But I wouldn't recommend either of these options outside emergency use. The whole point of using Gopher in 2026 is so that you can read plaintext articles without the mammoth memory footprint of modern web browsers. Dedicated Gopher apps are so much faster & smoother. Just install Lagrange and you'll see why certain old heads still appreciate Gopher.

Advanced Wizardry

Because Gopher is a super simple protocol, you can easily hack it into things. Two tools of note:

First is the popular swiss-army knife curl. If you need to start scripting Gopher requests or spidering sites, curl is just as useful with Gopher sites as it is HTTP sites.

You can also mount Gopher sites as filesystems! Remember that Gopher was designed over 30 years ago to make it easy to organize basic articles, images & files for public distribution. The way Gopher data is formatted is extremely easy to pump into a mount point. To demonstrate this, I used ChatGPT to whip together a quick example in Go using FUSE, which I have for reference on Github at HumphreyBoaGart/gophuse. It's a bit risky to use (Without TLS, Gopher is extremely vulnerable to man-in-the-middle attacks) but if you're using Gopher to power a filehost, this hat trick makes it really easy to grab files off a trusted local machine in bulk.

Hosting Gopher Sites

Popular Gopher server daemons include Geomyidae, xvxx/phd and Gophernicus. I personally prefer Geomyidae since it's lean & more faithful to the protocol. The Grackle server management package actually has a Geomyidae installer built into it, for running a Gopher server alongside normal web sites. Meanwhile Raven has built-in support for managing Gopher docroots served by Geomyidae & similar daemons.

Dynamic Gopher Sites

It is true that you can only transmit a limited amount of datatypes between server & visitor over the Gopher protocol. However, you can do virtually unlimited server-side processing as long as the output follows the protocol's transmission format.

Most Gopher servers have support for running CGI scripts, like the internet of old used to have to do with PHP scripts. Modern PHP installs use heavily abstracted versions of this now, which are tailored specifically for HTTP, so they don't work with Gopher servers too well. However, modern PHP installs also come with php-cli, a command-line version of PHP which spits out plaintext data in a form especially suited for Gopher. You just make a CGI wrapper for your PHP script, and pass Gopher requests to php-cli like this:

loader.cgi
#!/bin/sh
exec /usr/bin/php /path/to/script.php

You are not even limited to PHP, as CGI is basically just shell scripting and capable of executing everything your terminal can. As long as the returned data can be parsed by a Gopher server, you can actually have complex database-driven websites (within reason) in the Gopherspace. This trick is equally applicable to the Gemini platform as well.

Goldy Gopher

How “Gopher” got its name.

Since Gopher was invented at the University of Minnesota, Goldy Gopher is the closest thing the protocol has to an official mascot. Even the name of the protocol is a reference to UMN's beloved mascot.

Goldy himself is a reference to Minnesota's status as The Gopher State, a nickname it earned on the eve of statehood after publication of a political cartoon lampooning Minnesota's handout of a $5,000,000 loan to the widely-detested railroad tycoons of the era. By the early 20th century, Minnesota sports teams were already being named after gophers, and in 1952 the anthopomorphic Goldy Gopher was unveiled to an unsuspecting world.

Unlike the Gopher protocol, which was beaten like a redheaded stepchild and abandoned to die on the hard-hitting streets of Murderapolis by the University of Minnesota, Goldy is still much-loved by the University and millions of fans today.

More Reading

tools/gopher.1774981137.txt.gz · Last modified: (external edit)

Find this page online at: https://bestpoint.institute/tools/gopher
CC Attribution-Noncommercial-Share Alike 4.0 International The Anonymous Fruit Company The East Internet Trading Company Erischan Novelty Lanterns

Copyright 2026 Best Point Holdings Limited