Glk: An Interface Standard for Interactive Fiction



Here's where I talk about what Glk is, why Glk is, and what it's good for. Unfortunately I haven't actually written this bit yet. Until I do, please refer to chapter zero of the specification document, which explains all the basic ideas.

I do, however, have a glowing testimonial.

Glk is a free standard. Here's what I mean by this.


This is the Glk API Specification, version 0.7.5.

And, just as important,


If you're going to run a Glk program, you need a Glk library which runs on your machine.

The official and up-to-date archive of Glk libraries is on the IF Archive, under if-archive/programming/glk/implementations. Here is a list of some of them, but it's not a complete list and it is not immune to falling out of date:


These are source files that come with the Glk API, although they're not actually part of it. If you're writing a Glk library, you'll want to look at them. See the spec for their full ineffable significance.


In addition to a couple of pedagogical sample source files, we have games, interpreters, and other such goodies.


And if you're not into compiling, you can download the Glk programs as ready-to-run executables, for a couple of platforms at least.


Some other documents of relevance:

And, just to show off what I'm doing here:

What's New

As of April 2020, the copyright of the Glk spec document is transferred to the Interactive Fiction Technology Foundation. I still act as the maintainer.

API spec 0.7.5! Graphics windows can support character input; Unicode text files must be UTF-8.

I've posted RemGlk, a very experimental library that uses JSON structured data on stdin and stdout.

API spec 0.7.4! Adds a way to read data from a Blorb chunk.

API spec 0.7.3! Expands the audio functions.

API spec 0.7.2! Adds date and time (clock and calendar) functions.

API spec 0.7.1!

API spec 0.7.0! Now with Unicode.

GlkOte, a Glk-style Javascript library for web applications.

Alexander Beels has contributed a port of GlkTerm which can accept and display Unicode characters, using the ncursesw library.

Last updated July 4, 2022.

Glulx home page

Zarfhome (map) (down)