Citrine Programming Language

With Citrine you can easily create apps and games using your native language. You can export your creations to any PC, mobile phone, game console or website. Citrine is Open Source (source). * * Some features are still under development.

Latest News

Translation Kit Media Plugin
Citrine ASCII/EN available
Citrine 0.9.6 released
More news »



Citrine thinks in objects. Everything is an object. You create a program by sending messages to these objects. There are 3 types: Unary messages have no arguments. binary messages have 1 argument and consist of 1 character. keyword messages have 1 or more arguments.

☞ x ≔ ‘Hello’ length.
☞ x ≔ 3 + 7.
☞ x ≔ Number between: 0 and: 10.

With , you declare a new variable. On line 1, you see a single message length. On line 2, we send the binary message + 7 to 3. You can group pieces of code with { ... }, then it becomes a task. You can repeat tasks (×) or only execute them under certain conditions:

(x ≥ y) yes: { ✎ write: ‘buy!’. }.
{ :i ✎ write: i. } × 3.
{ x add: 1. } whilst: { ↲ x < 9. }.

A task can have parameters (:i is, for example, the iteration: 1,2,3). To use a variable in a text, you send a message with the text to be replaced and that variable:

‘Hello visitor!’ visitor: ‘John’.
Hello John!

To create your own object, you send new to Object. But you can also base your own objects on other objects. You can add new tasks to any object with: on:do:.

on: ‘double’ do: { ↲ ⛏ × 2. }.
 ✎ write: 3 double.

represents the object itself. To declare a property of an object, you use: . These properties can only be accessed from a task belonging to the object itself or belonging to a derived object.

☞ cat ≔ Object new.
cat on: ‘name:’ do: { :me
	⚿ name ≔ me.

Apart from a few details, that's basically all there is to it! Now you know Citrine! For more examples, open the learn-by-example manual, which is available for all languages supported by Citrine! * Translated manual available


Citrine is a localized scripting language. For some languages, we have to rely on machine translations because we haven't found translators yet. We appreciate any help! All natural languages are welcome**, even if they are not very common (EGIDS-status 6). ** Artificial languages, fantasy languages, private languages and other non-natural languages will not be included but you are free to fork the project of course.
Improve Translations
Also, check the technical FAQ for advanced users (this page is currently available only in English).


Want to learn more about Citrine? In our online shop you can buy the official Citrine book. This extensive manual covers all the core concepts as well as advanced Citrine programming techniques. The Citrine book is currently available in English and Dutch.


Export your own Citrine creations using our online build server to Android, iOS, Windows, Linux, SteamOS, the web and more!