
Cue — English by Dialogue
Learn the English phrases people actually say, inside the short conversations where they say them — then keep them by coming back.
Visit projectBlick
A fully native nonlinear video editor built from scratch for an editing workflow that keeps up.
Visit project
Vigil
A portable, software-rendered desktop workspace for packages, symbols, documentation, and source navigation.
Visit projectLiquiGen
Real-time liquid simulations for water, blood, and slime with instant meshing.
Visit projectEmberGen
Real-time volumetric fluid simulations for fire, smoke, and explosions.
Visit projectIlluGen
Procedural asset generation for noise, flowmaps, meshes, masks, and more.
Visit projectGeoGen
Real-time terrain and planet generation with node-based workflows.
Visit project
MMT
Advanced crypto liquidity and order-flow analysis for professional traders.
Visit project
Understanding the Odin Programming Language
A digital book for beginners and intermediate Odin programmers.
Visit project
ChiAha™ Digital Twin Toolkit
Written in Odin. Predicts production line performance and OEE within 1% accuracy, and answers factory-flow questions before you change the line.
Visit project
OLS
Language server for Odin with completion, hover, and go-to-definition support across all major editors.
Visit project
Spall
Fast, easy-to-use profiler that runs in your browser and natively on your computer.
Visit project
Todool
To-do editor with modal editing, advanced movement, and powerful commands for tracking development cycles.
Visit project
Diorama Break
The special tactics JRPG where you can talk directly to the Hero (whether he wants it or not). Fight through tactical turn-based battles and awkward conversations alike.
View on Steam
Fish Lab
An upcoming incremental game about collecting fish, making discoveries, and upgrading your lab — synced to music.
View on Steam
Little Backpack
A cozy inventory management game about packing a small backpack, made with Odin and raylib.
View on Steam
Daisy Trains
A vibrant 3D train puzzle game about building railways, managing trains, and delivering coloured cargo.
View on Steam
Volt Deck
A deckbuilding roguelite about hacking terminals and building powerful card combinations, made with Odin and raylib.
View on Steam
Quilt
An in-development puzzle game that combines nonograms, Minesweeper, and jigsaw mechanics, made with Odin and raylib.
View on Steam
Terrafactor
You have one job — feed The Hole. Harvest the land with your hands, build machines to do it for you, craft more advanced technology... then feed it to The Hole.
View on Steam
Relative Frame
Explore space in a hand crafted, physics based universe, with immersive sound and atmosphere. Fight and board ships, collect rare cargo, and upgrade your ship.
View on Steam
2Deez
A simple fighting game distilling the core essence of 3D fighting games! And yet, it's 2D...? Fight through a story mode featuring a cursed rat, a cotton candy monster, and evil wizards.
View on Steam
DUMMS!
A fast-paced action game about dummies causing chaos, developed with Odin and Sokol.
View on Steam
Solar Storm
A retro turn-based artillery shooter, built from scratch in Odin and inspired by Worms and Scorched Earth.
View on Steam
CAT & ONION
A cozy, whimsical short cat adventure written entirely in Odin with raylib.
View on SteamThe Data-Oriented Language for People Who Ship
Software from the Showcase and games shipping on Steam, all built with Odin.
See the Showcase See the GamesJoin the Odin community on Discord.
Programming Done Right
Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming.
Odin is the C alternative for the Joy of Programming.
package main
import "core:fmt"
main :: proc() {
greetings := []string{"Hellope", "Bonjour", "こんにちは"}
for greeting, i in greetings {
fmt.println(i, "=", greeting)
}
}package main
import "core:fmt"
main :: proc() {
a := [3]f32{1, 2, 3}
b := [3]f32{4, 5, 6}
fmt.println(a * b) // [4, 10, 18] component-wise
fmt.println(a + b) // [5, 7, 9]
fmt.println(a.zyx) // [3, 2, 1] swizzle
}package main
import "core:fmt"
main :: proc() {
nums := make([]int, 3)
defer delete(nums) // runs when main returns
nums[0], nums[1], nums[2] = 1, 2, 3
fmt.println(nums)
}package main
import "core:fmt"
Permission :: enum {Read, Write, Execute}
Permissions :: bit_set[Permission]
main :: proc() {
p: Permissions = {.Read, .Write}
fmt.println(.Execute in p) // false
fmt.println(p + {.Execute}) // Permissions{Read, Write, Execute}
}package main
import "core:fmt"
Suit :: enum {Hearts, Diamonds, Clubs, Spades}
main :: proc() {
symbols := [Suit]rune{
.Hearts = '♥',
.Diamonds = '♦',
.Clubs = '♣',
.Spades = '♠',
}
fmt.println(symbols[.Spades]) // ♠
}package main
import "core:fmt"
Pos :: struct { line, col: int }
Token :: struct {
using pos: Pos,
text: string,
}
main :: proc() {
tok := Token{Pos{3, 12}, "hello"}
fmt.println(tok.line, tok.col) // reach in without .pos
fmt.println(tok.text)
}package main
import "core:fmt"
main :: proc() {
xs := [5]int{10, 20, 30, 40, 50}
fmt.println(xs[:]) // [10, 20, 30, 40, 50] whole array as a view
fmt.println(xs[1:4]) // [20, 30, 40]
fmt.println(xs[2:]) // [30, 40, 50]
fmt.println(xs[:3]) // [10, 20, 30]
}package main
import "core:fmt"
main :: proc() {
grid := [3][3]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
search: for row, y in grid {
for val, x in row {
if val == 5 {
fmt.printfln("found at (%d, %d)", x, y)
break search
}
}
}
}package main
import "core:fmt"
divmod :: proc(a, b: int) -> (quotient, remainder: int) {
return a / b, a % b
}
main :: proc() {
q, r := divmod(17, 5)
fmt.println(q, r) // 3 2
}package main
import "core:simd"
// Vectorized check that a utf8 buffer is all ASCII
is_ascii :: proc(utf8: []#simd[16]u8) -> bool {
acc: #simd[16]u8
for chunk in utf8 {
acc |= chunk // fold every set of code units into the result
}
return simd.reduce_max(acc) < 0x80 // every lane in the ASCII range?
}
package main
import "core:fmt"
rdtsc :: asm() -> (lo, hi: u32) [
lo = %eax,
hi = %edx,
] {
rdtsc
}
main :: proc() {
lo, hi := rdtsc()
cycles := (u64(hi) << 32) | u64(lo)
fmt.println("cycle counter:", cycles)
}The Odin Principles
Simplicity
Odin has been designed for readability, scalability, and orthogonality of concepts. Simplicity is complicated to get right, clear is better than clever.
High Performance
Odin allows for the highest performance through low-level control over the memory layout, memory management and custom allocators and so much more.
For Modern Systems
Odin is designed from the bottom up for the modern computer, with built-in support for SOA data types, array programming, and other features.
Joy of Programming
We got into programming because we love to solve problems. Why shouldn't our tools bring us joy whilst doing it? Enjoy programming again, with Odin!
Batteries Included
Odin comes with high quality packages out of the box in its core library.
Odin provides official libraries for all major graphics APIs: OpenGL, Vulkan, Direct3D11, Direct3D12, Metal, wgpu, and WebGL 1 & 2.
Odin additionally brings you officially maintained bindings for popular libraries such as SDL2, GLFW, raylib, microui, miniaudio and much more, in its vendor library!
The Odin Community
Odin is Open Source
Odin is an open source programming language and contributions from the community are welcome! If you want to help out, check the issue tracker for open issues that may interest you. Those labelled help wanted are in particular need of community assistance right now.
Join the Odin Discord and help us bring the joy of programming in Odin to all. 🥳
GitHub Sponsors
Thank you to everyone who sponsor Odin.





