Questions people ask
Plain answers to what people wonder about first, each with a link to the longer story. Where an answer rests on a fact, the fact has a source; where it is our opinion, we say so.
About the language
What is brainfuck?
A programming language with eight commands, each one character. A program moves a pointer along a row of cells, adds to and takes from the cell under it, reads and prints characters, and repeats pieces of itself. Urban Müller made it in 1993 [1]. The language, precisely.
Is it a joke?
Partly. It was made to win a private contest: a compiler smaller than the 1,024 bytes of another language's [2]. The author thought the language itself "pretty useless" and said so in its README [1]. But it is a complete, working language, and people have taken it seriously enough to write compilers, proofs and papers about it. History.
What is the name about, and how do people write it politely?
The author says he wanted a name for uselessness and confusion, and that this one "turned out to be a better name than I had originally intended" [2]. It is written in lower case.
Because of the swear word, many texts avoid spelling it out. You will meet: brainf*** [3] [4] [5], brainf*ck [6], Brainf_ck [7], and most often simply BF [4] [8] or bf. Program files end in .b or .bf. All of these mean the same language. This site uses the name as it is.
Is there an official definition?
No. There is the README of 1993, which is a table and three sentences [1], and there are careful descriptions by others. The author says he never submitted it to a committee, and that this is why there are "lots and lots of variants" [2]. Where implementations differ.
Why 30,000 cells?
Because the original had that many [1]. Why Müller chose that number we do not know; we found no statement by him. Many implementations offer more.
What it can and cannot do
Is it useful?
Not for getting work done. Nobody should write a payroll system in it, and nobody does. It is useful for other things: for learning how a computer works underneath, as a first language to write an interpreter or a compiler for, as a test of speed for other languages [9], and as a puzzle. Those uses are real, and they are why it is still alive after thirty years. Culture.
Can it do anything?
It can compute anything that any computer can compute, if the tape is long enough. That is proved [10] [11]. It cannot do everything: it reads characters and prints characters, and has no way to open a file, draw a picture or use a network. And being able to compute something says nothing about how long it takes. Theory.
Is it hard?
To learn: no. Eight commands, five minutes. It is one of the easiest languages there is to learn completely.
To write something in: yes, and that is the point of it. There are no names, no numbers written out, no ready-made arithmetic. Everything is built from counting. A small set of idioms takes you a long way, and for anything large people let a program write the brainfuck. Writing real programs.
How fast is it?
That depends almost entirely on what runs it. A simple interpreter is slow: one small step for every command. An optimising one merges those steps. In one published comparison, the same program took 38.6 seconds on a simple interpreter and 0.93 seconds when translated to optimised machine code [12] [13]. That is still far slower than the same task written in an ordinary language, because a brainfuck program has to build even multiplication out of adding.
A measure from this site: one word piece of an answer from its chat model brnfck-smollm2-135m costs 1.6 to 1.9 billion steps, and takes 0.6 to 1.0 seconds on a desktop computer with an optimising executor measured [14]. Implementations.
Can a chat model really run in it?
Yes, with honest limits. This site runs four, as programs of 1 to 11.4 billion commands. Brainfuck only runs them: the models were trained elsewhere, their numbers were rounded to whole numbers, the programs need 32-bit cells and an optimising executor, and their answers can be wrong [14]. Notable programs: this site's project.
What is the largest brainfuck program?
We do not know of a record that anyone keeps. The largest we can vouch for is this site's biggest chat program: 11,430,468,880 commands, counted in the file [14]. A text adventure of 2005 was called "probably the largest" of its day by its author, at 2.08 megabytes [15]. Notable programs.
Getting started
Do I need to install anything?
No. The programs on these pages run in your browser, and so does the playground. If you want one on your own computer, there are many to choose from. Well-known implementations.
Where do I start?
- Open Start here. It has one path in three parts.
- Begin with Brainfuck basics: ten short lessons on the language, one small task at a time.
- Go on to Build toward a chatbot: eleven lessons, from the eight commands to one number of a chat model. The last part is reading the real program.
- Play as you go: write in the playground, try the challenges, and copy a building block from the patterns.
- Then read good programs by others. Daniel Cristofani's commented programs and his series "get good at brainfuck" are the best we know [16] [17].
In a hurry? Brainfuck in five minutes, on the overview page of the Reference, has the whole language on one screen, with a program to run.
My program works here and not there. Why?
Most likely one of three things: the size of a cell, what happens when you move left of the first cell, or what the read command does at the end of the input. Where implementations differ shows each and how to avoid it.
Read next
Notes and sources
Where a source is a community wiki or the author's own account, the entry or the text says so.
- 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. Opened 11 October 2026. - 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. Opened 11 October 2026.
- Erik Bosman, Mandelbrot set viewer, files dated 1 June 2003, in the Brainfuck Archive: the mandelbrot directory with its
README.txt. Opened 11 October 2026. - Frans Faase, "Brainf***": the brainfuck pages on iwriteiam.nl. Opened 11 October 2026.
- Hugi Size Coding Competition, list of past competitions: the competition archive on hugi.scene.org. Competition 6 (1999) asked for a brainfuck interpreter. Opened 11 October 2026.
- mrjameshamilton, bf: mrjameshamilton/bf on GitHub. Opened 11 October 2026.
- Surma, bfwasm: surma/bfwasm on GitHub. Opened 11 October 2026.
- Ronald T. Kneusel, Strange Code, No Starch Press, 2022, chapter 10, read as the publisher's sample: chapter 10 on nostarch.com (PDF). Opened 11 October 2026.
- kostya, benchmarks: kostya/benchmarks on GitHub. Opened 11 October 2026.
- Frans Faase, "BF is Turing-complete": the proof page on iwriteiam.nl. Opened 11 October 2026.
- 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. Opened 11 October 2026.
- Eli Bendersky, "Adventures in JIT compilation: Part 1, an interpreter", 20 March 2017: part 1 on eli.thegreenplace.net. Opened 11 October 2026.
- Eli Bendersky, "Adventures in JIT compilation: Part 2, an x64 JIT", 2017: part 2 on eli.thegreenplace.net. Opened 11 October 2026.
- This site's own project. Counts and measurements are on How it works: the numbers and How do I know it is real?; the earlier work we know of is under Has this been done before?. Opened 11 October 2026.
- Jon Ripley, "The Lost Kingdom Brainfuck Edition", 2004 to 2005: the game's page on jonripley.com. Opened 11 October 2026.
- Daniel B Cristofani, brainfuck.org: the main page. The page licenses his programs under Creative Commons Attribution-ShareAlike 4.0. Opened 11 October 2026.
- Daniel B Cristofani, "get good at brainfuck": the series on brainfuck.org. Opened 11 October 2026.