Free Esoteric & Obfuscated Programming Languages

Compilers & interpreters for crazy and just-for-fun languages

Free Esoteric, Obfuscated, Unusual and Downright Crazy Programming Languages

This page contains compilers and interpreters for programming languages that may be said to be esoteric, obfuscated, weird, unusual, zany, crazy or just for fun. Depending on your sense of humour ("humor" in US English), and what you're required to do with them, you may have other (less charitable) names for them. You may need to throw out everything you've learned in school about programming, and if you're in an evil mood, you can even set an assignment for your students using them. Be warned: this page is for only those with a sense of humour.

Note: due to unprintable nature of the names of some of these languages, their names have been somewhat modified (read "censored") for the purpose of this family-friendly website. To get the real name, just click the link to go to the website for that language.

If you are looking for the compilers and interpreters for the more traditional programming languages, please see the Free Compilers and Interpreters for Programming Languages index instead.

Related Pages

Languages For the Truly Idle

Piet New

The artistic among us, who despair over the programming languages that use words to describe operations and procedures, may find Piet appealing. Or maybe not. Unlike normal programming languages, you use coloured (or "colored" if you use a different variant of English) blocks to create your program, with the result that your completed programs not only perform the function you intended, they also look like abstract art, your cultural contribution to humanity. There are a number of implementations of the language, written in Perl, Python, JavaScript, etc, so you can pick the version that appeals most to you. Other than the unusual use of colours for the language syntax, this programming language does not appear to include deliberate hurdles to frustrate your attempt to use it (unlike some of the other esoteric languages listed here).


If you believe that programming languages (like COBOL) are too wordy, you will like this language. It has no words at all — its entire command set consists of only eight non-alphanumeric symbols, namely, the full-stop (period), the comma, the plus and minus signs, the angle brackets and the square brackets. However, before you write it off as a totally useless endeavour, you should be aware that the DeCSS algorithm (which decrypts the system used to protect DVDs) has been ported to this language. If you feel the urge to torture yourself, you can find the source for that algorithm in Brainf*ck here.


The people that designed this language believe that whitespace has been discriminated against in the programming world (after all, most programming languages ignore them) and set about creating a language that consists entirely of whitespace characters. In this language, all non-whitespace characters are ignored.


The aim of INTERCAL was to have a language that shares no feature in common with existing major programming language. The effect of this is that it makes operations that are simple in other languages difficult to do in INTERCAL. The name stands for "Compiler Language With No Pronounceable Acronym" (don't ask). There are C, Java and Perl versions of the INTERCAL compiler, so it should be fairly easy to get at least one of the implementations running on your system. Note: Intercal is the archetype of all the languages listed on this page.


Unlambda is an obfuscated programming language that does not have any variables, data structures, loops, conditions, arrays, stacks, or many of the features found in the usual programming languages. Instead, functions in the language take functions as arguments and return functions.


If you thought it was devilishly difficult to write a program in a traditional programming language, wait till you try Java2K. Unlike the certainty afforded by languages like C++, Java, etc, when you call a function in Java2K, you cannot be certain that it will perform the task you intend. Worse, function names are numeric, and the language uses a 11-based number system (no, that is not a typo) with the space character having the value 10 in that system. Function names must be divisible by 7, and since numbers are function names, it is non-trivial to use a number as itself in a Java2K program. Java2K also has a garbage collector — "memory is freed when the program exits, or, at random intervals, whichever comes first." The language is implemented in Java and packages for Windows, Linux and Amiga are available.

Malbolge and Dis

If you ever meet a smart-aleck programmer you don't like, introduce him/her to Malbolge and Dis. Malbolge and Dis are probably the languages that take top place in the Programming Language Hall of Infamy for their sheer impossibility to use. Dis is supposed to be the easier of this evil pair of languages; it was created by the author (in a fit of compassion?) after finding that Malbolge "defied current attempts to use it". (Update: Dis does not appear to be available any more.)

Related Pages

Can't Find What You're Looking For?

Search the site using Google.

Newest Pages

Popular Pages

How to Link to This Page

It will appear on your page as:

Free Esoteric, Obfuscated, Unusual and Weird Programming Languages Free Programmers, Webmasters and Security Resource Site Free Webmaster Tutorials, Scripts and Articles Free How-To Guides Free Programmers, Webmasters and Security Resources
If you find this site useful, please link to us.