- 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.5
AWK
GNU AWK 5.3.2
Bash
5.3.9
BASIC
FreeBASIC 1.10.1
Berry
7af8289
brainfuck
103be5b
C
TCC 0.9.27
C#
C# 14.0 on .NET 10.0.1
C++
Clang 21.1.8
Civet
0.11.1
Clojure
Babashka 1.12.213
COBOL
GnuCOBOL 3.2.0
Coconut
3.2.0
Common Lisp
GNU CLISP 2.49.92
Crystal
1.18.2
D
DMD 2.111.0
Dart
3.10.6
Elixir
1.19.4
Erlang
OTP 28.3
F#
F# 10.0 on .NET 10.0.1
Factor
0.101
Forth
GNU Forth 0.7.3
Fortran
GNU Fortran 15.2.0
Gleam
1.14.0
Go
1.25.5
GolfScript
6155e9f
Groovy
5.0.3
Haskell
GHC 9.8.2
Hexagony
770406a
J
9.6.3
Janet
1.40.1
Java
OpenJDK 25.0.1
JavaScript
V8 14.3.127.17
jq
1.8.1
Julia
1.12.3
K
717063f249
Kotlin
2.3.0
Lua
5.5.0
Nim
2.2.6
OCaml
5.4.0
Pascal
FPC 3.2.2
Perl
5.42.0
PHP
8.5.1
PowerShell
PowerShell 7.5.4 on .NET 10.0.1
Prolog
SWI-Prolog 10.0.0
Python
3.14.2
R
4.5.2
Raku
Raku 6.d on Rakudo 2025.12
Rockstar
2.0.31
Ruby
4.0.0
Rust
1.92.0
Scheme
Chez Scheme 10.3.0
sed
GNU sed 4.9
SQL
SQLite 3.51.1
Swift
6.2.3
Tcl
9.0.3
TeX
3.141592653
V
0.5.0
VimL
9.1
Wren
0.4.0
Zig
0.15.2
Experimental languages:
05AB1E
c31668b
ALGOL 68
Algol 68 Genie 3.10.9
APL
Dyalog APL 19.0.50027
ArkScript
4.1.1
Arturo
c8aa8b4
Befunge
29e4cfa
BQN
CBQN 0.10.0
CJam
0.6.5
CoffeeScript
2.7.0
Egel
0.1.14
Fennel
1.6.1
Harbour
3.0.0
Hare
0.25.2
Haxe
4.3.7
Hush
0.1.4
Hy
1.1.0
iogii
1.1
Knight
d118d76
Luau
0.703
Odin
2025-12
Picat
3.9
Qore
2.2.0
Racket
9.0
Rebol
2.7.8.4.10
Rexx
Regina 3.9.7
Scala
2.13.18
Squirrel
3.2
Stax
1.2.1
Uiua
0.17.3
Umka
1.5.5
Vala
0.56.18
Vyxal
3.10.3
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.
Some experimental languages that make heavy use of multi-byte
characters (APL, UIUA, 05AB1E, BQN, Vyxal) have a third scoring
method that does not yet affect leaderboards or solution saving.
This method allows multi-byte characters commonly used in the
language to count for only one stroke, while all other characters
count as one stroke for every UTF-8 byte in their encoding.
Reference
PR#2513
for more detail.
- How are solutions scored?
-
There are two leaderboards. There is a global leaderboard and
a language specitic leaderboard.
For the language specific leaderboard, the best answer gets
1,000 points and the rest will get points inverseley
proportional to their length.
For example, if your solution is double the strokes of the the
best solution, it will get 500 ponts for the language specific
leaderboard.
For the global leaderboard, instead of using the best score
for a language, we use an Par Value, a value
always at least as high as the best score in a language.
Getting exactly par will give you 1,000 points,
double the length will get half the points etc.
The par for a hole in a language is calculated as follows:
Par = ((√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 formula for par was chosen such that the shortest
solution in any language will always 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.