Every source behind the Reference: 53 of them, each opened on 11 October 2026. They are grouped by subject, and each has a line on what it is and why you might read it. If you read only a few, read the six at the top. At the end are works cited only through others.
Start here
Six sources that together give you the language, its story, how to write it and how to run it fast. All are short.
Urban Müller, brainfuck-2.lha, Aminet, dev/lang, dated 9 June 1993: the package page on Aminet. We read the files in the archive: README, bfc.asm (the compiler), bfi.c (the interpreter) and the six example programs. Sizes and dates are those of the archive listing.
Why read it: The original distribution, and the nearest thing the language has to a definition. The README is 2,863 bytes and takes two minutes to read. Read it before anything else.
Urban Müller, talk at Tamedia TX, 2017, read as the community transcript on the Esolang wiki: Tamedia TX 2017 transcript. The transcript says its last page is missing. Wikipedia gives the title as "Brainfuck, or how I learned to change the problem" and the date as 13 June 2017; we did not watch the recording.
Why read it: The author telling the story himself, 24 years later. Short and funny. The only source we found for his motives in his own words.
Why read it: One careful page by the language's best-known programmer. Says exactly what is defined and what is "unpredictable".
Esolang wiki, "Brainfuck": the wiki article on brainfuck. A community wiki; we use it for conventions and for its list of results, and name it where it is our only source.
Why read it: The best single page on the language as it is used today: conventions, examples, the computational class, and many links.
Why read it: A series that walks through his programs in the order he wrote them. The author calls it unfinished. The best next step after Brainfuck basics.
Why read it: The clearest account of the standard optimisations, each measured on six real programs. Start here if you want to write a fast implementation.
The original and its author
What Müller published and said. Everything else is commentary.
Urban Müller, brainfuck-2.lha, Aminet, dev/lang, dated 9 June 1993: the package page on Aminet. We read the files in the archive: README, bfc.asm (the compiler), bfi.c (the interpreter) and the six example programs. Sizes and dates are those of the archive listing.
Why read it: The original distribution, and the nearest thing the language has to a definition. The README is 2,863 bytes and takes two minutes to read. Read it before anything else.
Urban Müller, talk at Tamedia TX, 2017, read as the community transcript on the Esolang wiki: Tamedia TX 2017 transcript. The transcript says its last page is missing. Wikipedia gives the title as "Brainfuck, or how I learned to change the problem" and the date as 13 June 2017; we did not watch the recording.
Why read it: The author telling the story himself, 24 years later. Short and funny. The only source we found for his motives in his own words.
Why read it: The language that set Müller off, described by its author, who links to Müller's talk.
Descriptions of the language
Careful accounts of what is defined, what is not, and what implementations should do.
Esolang wiki, "Brainfuck": the wiki article on brainfuck. A community wiki; we use it for conventions and for its list of results, and name it where it is our only source.
Why read it: The best single page on the language as it is used today: conventions, examples, the computational class, and many links.
Why read it: Small programs that tell you how an implementation treats newlines, end of input and the edges of the tape.
Theory
Proofs, and the older work the language connects to.
Wikipedia, "P′′": the Wikipedia article on P′′. Our source for Corrado Böhm, "On a family of Turing machines and the related programming language", ICC Bulletin 3 (1964), 185 to 194, and for C. Böhm and G. Jacopini, "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules", Communications of the ACM 9(5) (1966), 366 to 371. We did not open the two papers themselves.
Why read it: The language of 1964 that brainfuck closely resembles. The article gives the instruction set and the exact correspondence.
Why read it: An early enthusiast's collection: an introduction, proofs, an interpreter written in brainfuck, and links.
Daniel B Cristofani, utm.b: the universal Turing machine on brainfuck.org. Its comments name the machine it implements: Yurii Rogozhin, "Small universal Turing machines", Theoretical Computer Science 168(2) (1996), 215 to 240, which we did not open.
Why read it: A universal Turing machine as a commented brainfuck program. The comments are a lesson in themselves.
Alan J. Perlis, "Epigrams on Programming", ACM SIGPLAN Notices 17(9), September 1982, read in the copy at Yale: the epigrams at cs.yale.edu.
Why read it: The source of "Turing tar-pit" (epigram 54). A list of one-liners, many of them still quoted.
Why read it: The standard cookbook: assignment, arithmetic, comparison, if and else, arrays, printing numbers. Each recipe says whether it needs wrapping cells.
Why read it: Compiles C to an intermediate form and from there to brainfuck and some sixty other targets.
Programs
The notable ones, at their authors' own addresses.
Daniel B Cristofani, brainfuck.org: the main page. The page licenses his programs under Creative Commons Attribution-ShareAlike 4.0.
Why read it: The best collection of hand-written programs there is, most with comments: sorting, Life, tic-tac-toe, e, a universal Turing machine, and contest results.
Why read it: A series that walks through his programs in the order he wrote them. The author calls it unfinished. The best next step after Brainfuck basics.
Why read it: A brainfuck interpreter in a few lines of brainfuck.
Oleg Mazonka and Daniel B. Cristofani, "A Very Short Self-Interpreter", arXiv:cs/0311032, 21 November 2003: the abstract on arXiv. We read the abstract only.
Why read it: An earlier self-interpreter, made by a C program that writes brainfuck.
Erik Bosman, Mandelbrot set viewer, files dated 1 June 2003, in the Brainfuck Archive: the mandelbrot directory with its README.txt.
Why read it: The famous Mandelbrot program with the macro files it was made from.
Code Golf Stack Exchange, answers to the "Hello, World!" challenge: the answer by KSab (27 April 2018, 72 bytes) and the answer by primo (3 January 2016, 78 bytes). Read through the Stack Exchange API.
Why read it: The record-holding short programs, with their authors' explanations of how they work and how they were found.
Why read it: A neural network of 7 neurons (2, 4 and 1) for XOR, compiled to a brainfuck program of 9,731 bytes.
Blaise Agüera y Arcas and others, "Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction", arXiv:2406.19108, 2024: the abstract on arXiv and the full text.
Why read it: Research that uses a brainfuck variant as the "physics" of an artificial world in which self-copying programs appear.
Why read it: The clearest account of the standard optimisations, each measured on six real programs. Start here if you want to write a fast implementation.
Why read it: "An industrial grade compiler" for brainfuck, with its optimisations documented one by one, with examples.
rdebath, Brainfuck repository: rdebath/Brainfuck on GitHub. Holds the Tritium interpreter, translators to many languages, test programs and a copy of Müller's 1993 compiler.
Why read it: A large toolbox: a very fast interpreter, tests such as bitwidth.b, and translators from brainfuck to dozens of languages.
Why read it: What an esoteric language is, a short history from INTERCAL (1972), and the kinds there are.
David S. Touretzky, "Gallery of CSS Descramblers", Carnegie Mellon University: the gallery at cs.cmu.edu.
Why read it: A collection made to argue that program code is speech. One exhibit is a descrambler in brainfuck.
Michael Mateas and Nick Montfort, "A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics", Proceedings of the 6th Digital Arts and Culture Conference, IT University of Copenhagen, 1 to 3 December 2005, pages 144 to 153: the paper on nickm.com (PDF).
Why read it: A scholarly look at why people write obfuscated code and invent strange languages. Has a section on brainfuck as minimalism.
Ronald T. Kneusel, Strange Code, No Starch Press, 2022, chapter 10, read as the publisher's sample: chapter 10 on nostarch.com (PDF).
Why read it: A book chapter that teaches the language (as "BF") and walks through Müller's original interpreter.
Why read it: Where the people are: the chat channel, its logs, forums.
The Brainfuck Archive, maintained by Panu Kalliokoski, first collected by Jeff Johnston: the archive at esoteric.sange.fi and its README.txt.
Why read it: An old file archive of programs, implementations and tools. Most files date from 2002 to 2005.
For orientation only
Encyclopedia articles. Good maps, not evidence.
Wikipedia, "Brainfuck": the Wikipedia article. Used for orientation and for its list of references, not as evidence.
Why read it: A fair overview with a good reference list. Check its details against the sources: see History for one date that does not match the archive.
Wikipedia, "Halting problem": the Wikipedia article on the halting problem. Our source for the statement of Turing's result (A. M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, 1936 to 1937), which we did not open.
Why read it: Orientation on the one question no program can answer about all programs.
Cited through others
These works matter to the story, and we did not read them ourselves. Where the reference mentions them, it cites the source that describes them.
Corrado Böhm, "On a family of Turing machines and the related programming language", ICC Bulletin 3 (1964), 185 to 194. The paper that introduces P′′. Cited through the Wikipedia article on P′′ and the Esolang wiki.
Corrado Böhm and Giuseppe Jacopini, "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules", Communications of the ACM 9(5) (1966), 366 to 371. Cited through the Wikipedia article on P′′.
Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, 1936 to 1937. Cited through the Wikipedia article on the halting problem.
Yurii Rogozhin, "Small universal Turing machines", Theoretical Computer Science 168(2) (1996), 215 to 240. Cited through the comments of Cristofani's utm.b.
The recording of Urban Müller's talk of 2017. We read a transcript, which says its last page is missing.
The first version of the brainfuck package (before 9 June 1993). Known only from the README of the second version. We did not find it.
Limits
It holds what we cited, not everything worth reading. Books and papers behind a paywall are missing unless a free copy was available.
Web pages change and vanish. Every address worked on 11 October 2026.