Do I need to log in to play?
No. Submitted solutions will be executed and checked without logging in, but nothing will be saved and you won't appear on the leaderboards.
Is code.golf free as in speech?
Yes! It is written in Go, licensed under MIT, and available on GitHub; patches welcome!
Is code.golf free as in beer?

Yes! However hosting isn't, so if you enjoy Code Golf consider donating to its continued existence and improvement via GitHub Sponsors.

Sponsors will receive a couple of additional perks, with more planned:

* Badge hidden if sponsorship is anonymous.
Free Sponsor
Profile Badge No Yes *
Follow Limit 10 24
Solution Notes No Yes
What languages are supported?

><>

96b1cfc

Assembly

DefAssembler 2.4.3

AWK

GNU AWK 5.3.1

Bash

5.2.37

BASIC

FreeBASIC 1.10.1

Berry

1.1.0

brainfuck

077cc7f

C

Tiny C Compiler 0.9.27

C#

C# 12.0 on .NET 9.0.0

C++

Clang 19.1.4

Civet

0.8.15

Clojure

Babashka 1.12.195

COBOL

GnuCOBOL 3.2.0

Coconut

3.1.2

Crystal

1.14.0

D

D 2.103.1 on LDC 1.33.0

Dart

3.5.4

Elixir

1.17.3

F#

F# 9.0 on .NET 9.0.0

Factor

0.100

Forth

GNU Forth 0.7.3

Fortran

GNU Fortran 14.2.0

Go

1.23.3
gs

GolfScript

6155e9f

Haskell

GHC 9.8.2

Hexagony

770406a

J

9.5.6

Janet

1.36.0

Java

OpenJDK 23.0.1

JavaScript

V8 13.1.201.9

jq

1.7.1

Julia

1.11.1

K

67da192f47

Kotlin

2.0.21

Lisp

GNU CLISP 2.49.92

Lua

5.4.7

Nim

2.2.0

OCaml

5.2.0

Pascal

Free Pascal 3.2.2

Perl

5.40.0

PHP

8.4.0

PowerShell

PowerShell 7.4.6 on .NET 9.0.0

Prolog

SWI-Prolog 9.2.8

Python

3.13.0

R

4.4.0

Raku

Raku 6.d on Rakudo 2024.10

Rockstar

Rocky 2.1.2

Ruby

3.3.6

Rust

1.82.0

Scheme

Chez Scheme 10.0.0

sed

GNU sed 4.9

SQL

SQLite 3.47.0

Swift

6.0.2

Tcl

9.0.0

TeX

3.141592653

V

0.4.8

VimL

9.1

Wren

0.4.0

Zig

0.13.0

Experimental languages:

05AB1E

fe1ab18

ALGOL 68

3.5.9

Arturo

0.9.84

Befunge

b7bf640

BQN

CBQN 0.7.0
cj

CJam

0.6.5

CoffeeScript

2.7.0

Egel

0.1.14

Fennel

1.5.1

Gleam

1.6.1

Groovy

4.0.23

Hare

0.24.2

Haxe

4.3.6

Hush

0.1.4

Hy

1.0.0

Odin

2024-11

Racket

8.15

Rebol

2.7.8.4.10

Rexx

Regina 3.9.6

Rockstar 2

2.0.0

Scala

2.13.15

Squirrel

3.2

Uiua

0.13.0

If you'd like to see another language added then raise an issue.

Are warnings ignored?
Yes. Only STDOUT is checked against the solution, STDERR is however shown back to you to ease debugging.
Is trailing whitespace ignored?
Trailing whitespace is trimmed from each line and the entire output, except when solving Quine.
How are arguments passed to my program?
Some holes pass arguments, for those your program should read them from the command line arguments (ARGV).
How do I print Unicode characters?

Your source code is sent to the interpreter encoded in UTF-8, and is expected to write output encoded in UTF-8 to STDOUT. For languages where it matters, your code is run in the en_US locale with a UTF-8 output encoding.

In Unicode-aware languages like Python, this means print("๐Ÿ™‚") and print(chr(0x1f642)) both produce the emoji U+1F642 "Slightly Smiling Face" ๐Ÿ™‚, which is encoded as f0 9f 99 82 in UTF-8.

In less Unicode-aware languages where strings are byte strings, you might still get away with UTF-8 in string literals. For example, OCaml treats "๐Ÿ™‚" as a string of length 4 (four bytes), but Char.chr 0x1f642 is an error.

In yet other languages, like brainfuck, you have to print the individual bytes f0 9f 99 82 one by one.

How are solutions ranked?
There are two scorings in use, bytes and chars. Bytes is the number of bytes of a solution encoded in UTF-8. Chars is the number of Unicode codepoints of a solution. Users may submit up to two solutions per hole per language. This is handled automatically when you enter two solutions and each minimizes a different scoring. Each scoring has its own set of leaderboards. For the chars scoring, both โ€œAโ€ (U+0041 Latin Capital Letter A) and โ€œ๐Ÿ˜‰โ€ (U+1F609 Winking Face) cost the same despite the 1:4 ratio in byte count in UTF-8.
How are solutions scored?
For each hole, in each language, up to 1,000 points are available. The formula is:
Points = Sb รท Su ร— 1000
Where Su is the length of the user's solution, and Sb is a Bayesian estimator of the form:
Sb = ((โˆšn + 2) รท (โˆšn + 3)) ร— S + (1 รท (โˆšn + 3)) ร— Sa
n is the number of solutions in this hole in this language. S is the length of the shortest solution in this hole in this language. Sa is the shortest solution among all languages in this hole.

The confidence interval is chosen such that the shortest solution in any language will receive a score of at least 750.

Your overall score is the sum of your highest points in each hole.

Are submissions resource-constrained?
Yes. Execution time is limited to 5 seconds, CPU & RAM usage is unbounded but this will probably change soon. The length of each solution must be lower than 128 KiB as that's the maximum length of any program argument under Linux.
Is there an API?
An API is currently being developed and documented in standard OpenAPI format. A legacy API that just returns scores in JSON exists. The URL is /scores/all-holes/all-langs/all. Note that all-holes and all-langs may be replaced by the names of specific holes and languages.
Can I see other people's solutions?
No, that way all holes stay competitive. If you're stuck on how to shave a couple of strokes off your solution then why not visit our Discord server for some advice.