# Shortest code to produce infinite output

Write the shortest code you can that produces an infinite output.

That's all. You code will only be disqualified if it stops producing output at some point. As always in code golf, the shortest code wins.

Here's a list of answers that I think are really clever, so they can get credit:

var QUESTION_ID=13152,OVERRIDE_USER=8611;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>

• All answers disqualified because at some point the Earth will be swallowed by the sun, and at some point the universe will die :P
– Doorknob
Nov 9 '13 at 20:00
• Does "infinite until your computer crashes" count? <_< Nov 10 '13 at 1:39
• If I write mine in Piet, can I count the pixels of the text the other programs used? I believe the smallest possible repeating Piet program would be 6 pixels. That beats Befunge if "off" pixels still count. Nov 12 '13 at 20:27
• @Izkata So any answer that crashes your computer is also allowed :D Jul 11 '14 at 20:11
• @Doorknob So really, the challenge is to produce infinite output in a finite amount of time. Sounds easy enough. Apr 10 '15 at 21:15

## Hexagony, 1 byte

!


Try it online!

Prints an infinite amount of 0s by printing the value of the initial memory edge (which happens to be 0) over and over. The ! is executed in a loop because the source code is toroidal.

# Woefully, 49 bytes (newer than challenge)

||| |
|| |
| |
|| |
||| |
|||| |
||||| |
|||||| |


Explanation

v     v represents char pointer, instruction pointer finds first space after the char
|||A|                                                      pointed at by char pointer
||A|  A- Push zero
|A|
||B|
|||B| B- Pop and print (number)
||||B|
|||||B|
||||||B|
[end] End- go back to character char pointer is pointing at. Char pointer has not moved
so it will just execute the same again


## Sonic Pi, 19 Bytes

loop do puts "" end


Sonic Pi is a sound language, but it's also fully a programming language.

• What is sonic pi, for those who don't know? May 6 '16 at 15:33

# zsh (8 chars)

</dev/z*


Analogous to cat /dev/zero.

Note: This does depend on there not being any other files in /dev starting with z, other than /dev/zero.

• Given that this particular configuration of /dev is the default on many UNIX-like operating systems (e.g. Ubuntu, which I had easily available to test), I'm pretty sure there are "implementations" where this works.
– user62131
Nov 26 '16 at 21:36

TI-83 Hex Assembly, 6 bytes

PROGRAM:I
:AsmPrgm
:EF0A45
:C3959D


Run with Asm(prgmI). Prints garbage over and over again. The only way to stop the printing is to physically remove the batteries from the calculator and re-insert them, at which point the calculator's RAM will be cleared. I count each hex digit pair as one byte.

# Casio FX-7000G, 6 bytes

Lbl 0◢
Goto 0


This uses the calculator's own encoding, where each token is stored as a byte.

Lbl 0 sets the label of the first line to 0. The triangle means "print last value", which is in this case 0. The next line is your standard Goto statement, jumping back to the top so the value can be printed again.

Due to the calculator's limitations, the user must press EXE after each printed value before the next can be displayed.

• Very cool. The FX-7000G was cutting-edge tech in the mid 80s. Reminds me of my old FX-3900P (RIP) Jul 29 '19 at 10:20

# Labyrinth, 1 byte

!


Labyrinth's stack has implicit zeroes at the bottom and the ! character outputs the integer representation of top of the stack. Since the program never finds anywhere else to go besides this single character, it keeps repeating that instruction.

# GO, 13 bytes

for{print(0)}

Try it online!

# 8th, 24 19 bytes

: f 0 . recurse ; f


The word f pushes a 0 on the stack and print it in a recursive way

• Won't that fail with a "stackoverflow" ? (i.e. does 8th recognize the tail recursion?) Jan 17 '17 at 22:30
• @zeppelin - 8th implements "tail-call elimination" and the above mentioned code runs smoothly. See this post for further explanation. Jan 18 '17 at 6:45

# Commodore Basic, 5 bytes

1?:R╭


PETSCII substitution: ╭ = SHIFT+U

Prints a newline, then runs itself. Forever.

# SmileBASIC, 6 bytes

?EXEC.


? is print, EXEC runs a program, and . is the same as 0.0.

If newlines don't count as output, here's a 7 byte answer:

?.EXEC.


?. = PRINT 0.0, EXEC. = EXEC 0.0

## Alice, 1 byte

o


Prints null bytes indefinitely.

# Braingolf, 6 bytes

[1+!_]


Try it online!

# Decimal, 12 bytes

11D91D30191D


Try it online!

Explanation:

11D   ; push whatever's in RAM to the stack as an INT
91D   ; declare jump 1
301   ; print
91D   ; goto jump 1


Another version that does not invoke undefined behavior:

82D   ; builtin - push random INT to stack
91D   ; declare jump 1
301   ; print
91D   ; goto jump 1


## Check, 3 bytes (non-competing)

#<#


Outputs infinite newlines.

Check is my new esolang. It uses a combination of 2D and 1D semantics.

### Explanation

This uses a bit of a hack in the language - namely, that < means "print a newline" in 1D mode, and "move left" in 2D mode.

The IP first runs into a #, which turns it into 2D mode. However, it runs into <, which immediately points it back. It runs into the first # again and switches back to 1D mode. The IP then hits <, which outputs a newline, and then hits the second #, which switches it back to 2D mode again. The IP wraps around to the first #, where it switches back to 1D mode. It hits < again, printing another newline, and the process repeats.

• ...how is that 7 bytes? Jun 6 '17 at 4:11
• @MDXF I guess I awarded myself extra bytes for not being able to count. Jun 6 '17 at 5:00

'"""""'"""'"'"""


Try it online!

• Aren't Unreadable programs supposed to use the > '"""""'"""'"'""" markdown, to live up to its name? Dec 10 '17 at 14:52

# MOO, 39 38 bytes

while(!suspend(player:tell()))endwhile


Huge abuse of side effects; player:tell() by default does not return a value, which means it implicitly returns zero, and the resulting suspend(0) is necessary to avoid running out of ticks.

# Cubically, 3 bytes

%0)


This should look like this:

(%0)
(    open loop that can always be jumped to
%0   print 0th face sum as integer (0)
) jump back to loop regardless of faces


However, ) will just jump back to the start of the file if no jump point is provided.

# Dyalog APL, 5 bytes

⍞←⍣⊢0


⍞← character output

(f⍣g)Y power operator repeatedly applies left operand to the argument until (f Y) g Y returns true. In this case f is the assignment to output and g is ⊢ which returns the right argument, which is always 0 as the assignment doesn't modify it.

Note that the right operand could also be any of ⊣≠≢

• Nothing to worry about, TIO limits you to 128 kb and 1 minute: Try it online!
Aug 22 '17 at 15:47

# JavaScript, 20 bytes

for(;;)console.log()


Sends infinite undefined output.

# VBScript, 23 characters

Do:Wscript.Echo"C":Loop


Needs to be run with cscript.exe for command-line output. If run with wscript.exe (default action), it opens infinite dialog boxes.

Also, here's a shorter (17 character) version which opens boxes regardless of whether it's running using cscript.exe or wscript.exe.

Do:MsgBox"C":Loop


However I'm not sure if that counts too, as it doesn't print anything and just opens dialog boxes indefinetely.

# Pyth - 2 bytes

#0


Exlanation:

#0
#  Loop forever
0 Print 0


# Flipbit, 4 bytes

^[.]


Try it online!

Yay for Bra*nfuck derivatives!

• did you just censor the i in brain? Feb 12 '18 at 16:06
• @tfbninja Yes, I did Feb 12 '18 at 16:36

5?1 1-1


Try it online!

## Explanation:

In a more readable form (which can still be fed into the preprocessor), this program is:

numo 0
deref 1 -1


The numo (numeric output) statement does just about what you'd expect: it outputs 0. I could have used chro, but that makes it output unprintables and doesn't affect the byte count.

To understand the second line, you have to know a little bit about Dreaderef:

• Programs are loaded into the data space at the beginning of execution.
• The pointer to the current instruction is located at position -1.

What deref 1 -1 does is:

• Dereferences 1 (takes the value of the cell at index 1). This always returns 0.
• Stores the result in cell -1, which is effectively a GOTO to instruction 0.

Dreaderef doesn't have a "load constant" instruction, so the best way to load a constant into a cell is to use some sort of arithmetic instruction or copy it from some other cell with deref, which is what I do here.

# Forth, 24 bytes

Defines then calls a word that loops forever, pushing and printing <0> each iteration.

: f begin .s 0 until ; f


Try it online

With a do-loop (25 bytes):

: f 0 0 do 0 .s +loop ; f


Prints <1> 0  forever.

• I know this is a bit late, but technically the do loop isn't infinite, as eventually the counter will wrap around and reach 0 again (albeit it will possibly take years depending on speed and implementation). Use : f begin .s 0 until ; instead (plus it saves a byte) Feb 12 '18 at 14:15
• @reffu That's actually a byte longer. You have to call the function. Feb 12 '18 at 16:33
• good point, I didn't realize this one had slightly different rules than the typical codegolf challenge. Feb 12 '18 at 17:07

# TIS-n11, 12 bytes

@0
MOV 0 ANY


Try it online!

Just shoves a bunch of 0\n to the output. On TIO, reached the 128KiB cutoff quite quickly. Without the -n flag, prints null bytes instead.

If you are familiar with TIS-100, you will be used to a 3x4 array of computational nodes, however, this solutions only uses one such node, nominally giving the zeroes downward as output.

The only instruction that send data out of a computational node is MOV, and that requires a source and a destination. the smallest possible source is a single digit number, and the smallest possible destination is UP. However, to produce actual output, the data needs to travel downwards, restricting the choice to either DOWN or ANY.

# Gol><>, 1 byte

D


Try it online!

D is a command designed for debugging, which prints the entire stack (from bottom to top) between brackets. D on empty stack generates []\n to stdout, and the IP loops through the row endlessly.

# Alternative solution, 1 byte

Credits to Jo King

N


Try it online!

Unlike ><>, Gol><> has infinite zeroes at the bottom of the stack, which allows to print the top without pushing anything. Any of Nno will do; N prints 0\n, n prints 0, and o prints null bytes.

Alternatively, there are many 2-byte solutions:

• One of 0-9a-f, l, or m followed by one of NnoD; Try it online!
• Any of 0-9a-f pushes a hexadecimal digit to the stack, l pushes the current stack size, and m pushes -1.
• N prints the top as number with newline, n is the same without newline, and o prints as a char.
• S"; Try it online!
• Initially S" is interpreted as one command which prints the encountered chars up to ending ". The next loop of S" is interpreted as a literal S and then closing ", which prints a single S to stdout.
• " followed by any of NnoD; Try it online!
• Use " as both opening and closing quote, then print the char.

O


Prints 0 forever. O pops the stack and prints that value as a number written out (as opposed to a Unicode character). Like Befunge, the empty stack pops 0, so this will print 0.

Since this is a 1x1 board, the head has nowhere to go and will stay on this cell forever, outputting forever.

## Prolog (14 bytes)

a:-write(0),a.


Simple tail recursive predicate in swi-prolog. Called like so a.

• Welcome to PPCG! Jun 6 '18 at 14:16
• @Laikoni it's nice to be here :) thank you. Jun 6 '18 at 16:59

# Flobnar, 4 bytes

0,_@


Try it online!

Outputs 0x00 bytes indefinitely.

This works because _ is said to get the conditional from the cell on the other side of it, and then use its value to choose between the east and west cells. It is expected to be evaluated from a vertical direction, but it doesn't have to be.

@ indicates the starting point for the program and evaluates to the return value of the cell to its west (_). _ evaluates what's on the other side (0,) to print 0. , always has a return value of 0, however, and this causes the horizontal if to choose the branch to its east. This is @, which evaluates the cell to its west, continuing the cycle.

Flobnar doesn't have decimal output by default, but the linked implementation has a -d flag which enables . for decimal output. This allows a slightly prettier version that outputs printable characters instead.

0._@


Try it online!