A downloadable tool for Windows

Download NowName your own price

raylib is a simple and easy-to-use library to enjoy videogames programming.

NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helper... just coding in the most pure spartan-programmers way.

Are you ready to learn? Jump to code examples!.

WARNING: raylib Windows installer requires OpenGL 3.3 support and 64bit architecture. To use raylib with other configurations, please download it directly from GitHub and setup it manually for desired platform configuration. Instructions are provided on raylib GitHub Wiki.

NOTE: raylib is being developed and maintained with big effort by Ray (that's me!). If you like the library and you enjoy it, consider contributing to the project through GitHub Sponsorsraylib Patreon or just donating on downloading.


  • NO external dependencies, all required libraries are included in raylib
  • Multiplatform: Windows, Linux, macOS, RPI, Android, HTML5... and more!
  • Written in plain C code (C99) in PascalCase/camelCase notation
  • Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)
  • Unique OpenGL abstraction layer (usable as standalone module): rlgl
  • Multiple Fonts formats supported (XNA fonts, AngelCode fonts, TTF)
  • Outstanding texture formats support (including DXT, ETC, ASTC)
  • Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more!
  • Flexible Materials system, supporting classic maps and PBR maps
  • Animated 3d models supported (skeletal bones animation)
  • Shaders support, including Model shaders and Postprocessing shaders
  • Powerful math module for Vector, Matrix and Quaternion operations: raymath
  • Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC...)
  • VR stereo rendering support with configurable HMD device parameters
  • Huge examples collection with +140 code examples!
  • Bindings to +70 programming languages!

Wanna see all functions available in raylib? Check Cheatsheet

Looking for binaries for a different platform? Check GitHub official release page for precompiled library binaries for multiple platforms and compilers!

raylib is open-source and free to use. View license.

Rated 4.9 out of 5 stars
(133 total ratings)
Made withraylib
Tagscoding, Game engine, learn, Minimalist, Open Source, programming, raylib, tool
Code licensezlib License
Average sessionDays or more
InputsKeyboard, Mouse, Gamepad (any), Joystick, Touchscreen
AccessibilityConfigurable controls, Interactive tutorial
LinksHomepage, Patreon, Source code, Support, Community


Download NowName your own price

Click download now to get access to the following files:

raylib 5.0 Windows Installer 64bit (MinGW compiler) 118 MB

Development log

View all posts


Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 78 · Next page · Last page

Hi Ray

I have a question about texture loading and unloading correctness:

#include "raylib.h"

int main(void) {

    const int screenWidth = 400;

    const int screenHeight = 300;


    InitWindow(screenWidth, screenHeight, "DrawTexture Example");

    int fontsize = 20;

    char *getfont = "fonts/JuliaMono-Light.ttf";

    Font font = LoadFontEx(getfont, fontsize, 0, 250);

    char *ptr = "Texture";

    int x = 50, y = 30;

    Image image = GenImageColor(screenWidth, screenHeight, WHITE);

    ImageDrawTextEx(&image, font, ptr, (Vector2){ x, y }, fontsize, 0, BLUE);

    Texture2D texture = LoadTextureFromImage(image);

    while (!WindowShouldClose()) {

        if (IsKeyDown(KEY_ENTER)) {

            ImageDrawRectangle(&image, x, y, 300, 30, WHITE);   // erase or text will become ugly

            ImageDrawTextEx(&image, font, ptr, (Vector2){ x, y }, fontsize, 0, RED);

            UnloadTexture(texture);                             // 1 saving memory or is it wrong?

            texture = LoadTextureFromImage(image);


        else if (IsKeyDown(KEY_SPACE)) {

            ImageDrawRectangle(&image, x, y, 300, 30, WHITE);   // erase or text will become ugly

            ImageDrawTextEx(&image, font, ptr, (Vector2){ x, y }, fontsize, 0, PURPLE);

            UnloadTexture(texture);                             // 2 saving memory or is it wrong?

            texture = LoadTextureFromImage(image);




        DrawTexture(texture, 0, 0, WHITE);






    return 0;



The console reports an incremental higher TEXTURE: [ID num] each time I use Enter or space. Is it only an intern Raylib count or?

Thanks in advance.


(1 edit)

Hi Ray

I'm printing (Linux CUBS printer) on paper and use this test code snip, that works fine. 

// Raylib 5

    int x = 0;

    int y = 100;

    int fontsize = 16;

    char *getfont =  "arial.ttf"; // tried different fonts without success.

    Font font;

    font = LoadFontEx(getfont, fontsize, 0, 250);

    const char *t = "mimMIN";

    ImageDrawTextEx(&image, font, t, (Vector2){ x, y }, fontsize, 1, BLACK);

    const char *filename = "output.png";

    ExportImage(image, filename);

But I have issues with the sharpness of the letters, they become a bit blurred or unclear. I had similar issue month ago, when I printed from Windows using Raylib 4.5, but not using the same font from Notepad. I never got that problem solved.

Do you have a suggestion for what I can improve, if the problem at all is related to Raylib?

Thanks in advance.
Hobby programmer

I'm afraid there is not much it can be done in that regards. raylib uses stb_truetype for font rasterization. Afaik, it does not support better font rasterization options like ClearType hinting.

I solved the issue by using an image of higher resolution and then print and it very fine.

Thanks for answer.

ha pasado un año mas o menos para poder usar raylib en Dlang ahora me funciona, gracias autor por esa libreria <3, podrias compartir tutoriales sobre desarrollo pero en Dlang

the exe simply doesn't run for me on windows 11

It requires OpenGL 3.3 support to run... but it can also be locked by an antivirus.

I have made small relational database in C, which uses the fantastic Raylib graphics for the interface. Raylib just works perfect for me.

I'm using Linux Mint and it works fine, but if I have to use the database on another Linux Mint computer, I ran into some issues. When I try to run the executable, it respond not associated to any known programs...

What do the other computer need to run the executable file?

Any help would be appreciated.


Hi! Afaik, it should work ok on other computers with same OS and system libraries installed. 

If some external resources are required they should be provided along the executable.

It could also be a permissions issue.

Thanks Ray. 

I guess it might be, because I'm trying to use the executable on a Linux Mint LMDE(Debian) and I had made it on a Linux Mint(Ubuntu).

Right now, I'm trying to install Raylib on Linux Mint LMDE, but it's a struggle.

I have read that the installation can be as simple as this:

1. git clone https://github.com/raysan5/raylib.git

2. cd raylib

3. cmake .  gives lots of errors

4. make

I fairly new to Linux and uses CodeBlocks and C99.

After many issues, I think the above is okay. Now I got errors about rlgl.h line 1200  gives undefined reference to 'sqrtf' and many more raymath.h e.g.

That seems related to math library, are you linking with some math library? 

I don't think so, but now I got rid of that error and can compile without errors and warnings.

When I try to run the compiled file, the console shows: error while loading shared libraries: libraylib.so.500: cannot shared object file: No such file or directory

Thank you for this great library. I have been using it recently and enjoy it a lot. It’s such a great middleman between low-level graphics programming and something like Godot or a library that has scenes and things like that. Plus, I can use C. Very easy to use and highly intuitive.

If anyone is interested, I have created a little template project that uses a Makefile and a shell script to download and install for compiling for linux/web and for cross-compiling to win32. I haven’t really used CMake before so I wanted to try and keep it simple. https://git.sr.ht/~kmdodrill/raylib-template


Thanks! Glad you like it! :D

And thanks for sharing the template!

Hi, I have a problem on win 11. When I click installers exe, win thinks for a moment, but then nothing happens. Please help! 

This library is super cool. Can i use this in a custom version of Lua?


i started working on it

the name is lunar, i made decent progress, i think


Is this compatable with C++ or C#?

there are bindings for both

Hey, this is cool library!
Maybe my games will be powered on it :) 

Thanks! Hope you enjoy it! :D

How do I change what directory it installs to?


Installer does not allow to change the directory, it contains multiple compilation scripts preconfigured and choosing another path would require reconfiguring all those scripts. In any case, the installation is self-contained, experienced users can just move C:/raylib to any other directory if required compilation scripts are setup properly.

thank you so much for creating this. it saved a heck ton of time for me. i was using c-sfml before but this is a lot quicker and easier. again thanks for making it :)


thanks! glad you like it! 🙂


uhm, where does the exe of raylib even is?
is this a scam?

i cant find it

raylib is a C programming library to code games using a code editor. It does not include a visual tool like Godot, Unity or Unreal.


oh, but i (may) can only code visually

there are bindings and ports for various other programming languages that are easier to learn than C, maybe some of them have visual programming tools, but i don't know

how can i setup it in VS Code? im a beginner so i want to know :D


You can check raylib Wiki for details: https://github.com/raysan5/raylib/wiki/Using-raylib-in-VSCode but I also recommend joining raylib Discord and ask the community if you have any problem with the configuration.

Deleted 1 year ago

I think so but I haven't tested it.


hi, does raylib support networking?

I’m afraid it does not. I recommend using nbnet library for that task.


Hey Ray, I have been using Raylib for a small library for drawing pixels one at a time and slowly drawing lines to make cool animations.

Here is an example:

However, I want to create a flood fill algorithm which means getting the pixels on the screen and checking their color. Is there a function which can get the screen pixels or do I have to try something else entirely?

Hi! Nice application! You can use LoadImageFromScreen() to get screen data as an Image and LoadTextureFromImage() to get a Texture2D to draw on screen again but this can be very slow...

thanks that may actually work for my purposes since it’s not performance critical and just meant to do something good looking very slowly!

Nice! Feel free to share your creation on raylib Discord community, there is a #madewithraylib channel for that. Also, you can share your creations in raylib GitHub Discussion: https://github.com/raysan5/raylib/discussions/1326

will do if I manage to finish it!

(1 edit) (+1)

Any thoughts of providing written/video tutorials for total beginners?


It’s been on my TODO list for long time but my resources are limited and creating that kind of content requires lot of time that I usually invest in solving bugs and improving the library.


Honestly this is not just the best graphics / game library I've ever tried, It's all around one of the best written project I've ever seen. The code is extremely clean and easy to understand, while capable for almost anything that I could think of as for game programming at this level. Very good example of self documenting code: the simple and well organised cheat sheet with occasional look ups in the source code, and the very high quality examples on the project web page is perfectly enough for working with this Really happy to see projects like this! Thank you very much for your amazing work! 


Thank you very much! Glad you like it! I put a lot of work and lot of care to this project! I love to see it is appreciated! Thanks! 🙂


Been deep diving into the repos and all the custom tools.  The organization, polish, and simplicity is a thing of beauty. And all written in C, fully open source.  Exactly what I have been looking for, well worth a donation imo. I can't wait to get started on my project ideas.  Well done!!!

Thank you very much! Glad you like it! 😄

That looks interesting, i think i will try it out!


Hope you enjoy it! :D

What version of MinGW do i need to have installed for raylib? I’m reinstalling stuff but don’t remember the version needed.


Latest raylib installs w64devkit that includes an updated version of MinGW built with the latest tools. You can find it on GitHub.


Massive kudos, raysan. This framework is amazing and I'm extremely impressed with how much it can do. You're awesome, keep up the good work!


Thank you very much Zed! Glad you like it! :D

Hello, for my new game I want to use new things for me, rayLib and zig. Have you got a basic example written in zig with build.zig ? I am trying same way as SDL but I always an error at first rayLib command "initWindow". build.zig in zip package don't seem to help :)  (sorry for my poor english)

hey i'm very new to coder/programing games could this tool help me get better or should i find another tools to help me get better then come back to this


This tool is a C programming library, there is no visual interface, just coding in a text editor, it's recommended that you have some previous C language knowledge to use it.


does it support tiled maps


Tile maps is up to the user, raylib is a low level library, it supports textures drawing and also drawing a part of a texture, it could be used to draw tilemaps.


Seriously one of the best small game frameworks ever released. Simple, fast, and pretty damn elegant.

Well done raysan!


Thank you very much! Glad you like it! 😄

Hi Ray,

I've found an issue with the audio system. If an application uses audio and there is no audio device plugged into the computer, the application will crash. I've tried this on multiple devices and it always occurs. I also tried fixing this by using a try-catch block but this didn't work.

Raylib Version: Raylib 3.5.

Language: C++ 

Pleease, could you open an issue on raylib github repo for review?

While opening an issue on the Github page, I tested the newest version of Raylib and it seems this problem does not happen anymore, so I haven't submitted the issue. 

Oh, nice! raylib usually improves from version to version.


"improves from version to version"
wow I had no ideas that tihgns cen impov, uneleik me grammaer

When I install raylib 4.0 with tcc, I get raylib 2.0-dev instead.

I verified the file and it's actually raylib 4.0, how did you notice it was raylib 2.0-dev?

(1 edit)

It says so in the logging when I start up my game plus TextFormat and mp3 files were suddenly unsupported (I upgraded from 3.0).

I wanted to upgrade, because I made a small game that is basically done, but I suddenly noticed that the game crashes, when I play a sound that is loaded as number 11 or above (I have tried switching around and removing sounds). I recall it working before, but I must be wrong.

(1 edit)

I don't know where could be the problem. Did you had a previous raylib version installed? I recommend you remove previous raylib version and try installing it again. Idouble verified the TCC installer and it is raylib 4.0, it installs the library and it compiles the examples as expected with raylib 4.0. You can also join raylib Discord and ask there, in case anyone has found a similar issue.

I now have tried to remove the old installation before installing the new. The same has happened, but honestly, I would rather use another compiler, so I can debug and get better error messages. It was just the first install option that would actually work for me.


Hi Ray, I am having trouble setting up raylib for vscode. I have tried to do many things to solve this by myself but had no luck. im on windows 10


i downloaded raylib_4.0.0_win64_mingw-win64

my compiler is mingw32 with gcc

i want to use raylib with c++17

Here are some of the things i tried:

- I added the include and lib directory of raylib4.0 to my system path (PATH)

- I also added them to the include directory of my compiler.

-the compiler picked up the raylib.h file but when compiled, it just returns many undefined references to raylib's functions such as InitWindow()

Thanks in advance Ray

i could send a sample code.

You can check raylib Wiki for instructions: https://github.com/raysan5/raylib/wiki/Using-raylib-in-VSCode 

You can also join raylib Discord for some help, there is a specific channel (raylib-setup) for problems with setup configurations.

Hi! Can you show me an example of how to use functions SaveFileData and LoadFileData to store something on the hard drive? Or is there example for that already? I couldn't find...

How powerful/fast is Raylib? Is it possible to have more complex 3d scenes as the examples show ? The framework looks very nice and simple, but is that at the expense of performance


raylib is a thin layer over OpenGL, it should be quite performant but I recommend profiling it first to see if it fits your needs.

(1 edit)

Ok thanks for your fast reply. I'll have a look at it :D

I've seen a library release on a platform other than GitHub for the first time. Hehe

Hola ray.

Ya se que me dijistes que entrara en discord,pero ya entre hace tiempo y todo el mundo habla ingles y es demasiado dificil entenderse,tambien me dijistes que usara visual studio pero pide demasiados requisitos para mi ordenar.

Yo suelo usar zinjai pero ni idea de como usarlo con raylib,tal vez podrias crear una plantilla para este ide en una proxima actualizacion.


Tambien probe la plantilla que viene de codeblock y segui las instrucciones de la imagen pero no me funciona,¿alguna solucion?


Hola, pues la mejor solucion es que uses directamente el instalador que te preconfigura un entorno con Notepad++ y MinGW, justamente esta pensado para evitar este tipo de problemas configurando otros entornos. Respecto zinjai, no lo conozco, tendria que aprender como funciona y no tengo tiempo para ponerme con ello.

Es que es lo que llevo usando desde el principio,pero como te comente mas abajo no me deja crear multiples archivos.c con sus archivos de cabecera,me da error a la hora de compilar.

Se ve que la configuracion que trae de serie no enlaza automaticamente varios archivos y solo me deja trabajar con uno solo.

Entonces no se si me he explicado bien,pero quiero trabajar con multiples archivos de c y sus archivos de cabecera y ahora mismo el notepad++ solo me deje trabajar con uno solo.

¿Alguna forma de configurar las opciones de f6 para que compile multiples archivos? 

Hola Ray.

He estado intentando usar c++ con raylib pero me da algun problema,si instancio una clase sin puntero no hay problema pero si hago esto.

Jugador *jugador = new Jugador;

Me da error.

cc1plus.exe: warning: command line option '-std=c99' is valid for C/ObjC but not for C++

basicos22-imagenes-clases.cpp: In function 'int main()':

basicos22-imagenes-clases.cpp:39:14: warning: unused variable 'jugador2' [-Wunused-variable]

     Jugador *jugador2 = new Jugador;

C:\Users\usuario\AppData\Local\Temp\cc42TACp.o:basicos22-imagenes-clases.cpp:(.text.startup+0x68): undefined reference to `operator new(unsigned int)'

C:\Users\usuario\AppData\Local\Temp\cc42TACp.o:basicos22-imagenes-clases.cpp:(.text.startup+0xfe): undefined reference to `operator delete(void*, unsigned int)'

C:\Users\usuario\AppData\Local\Temp\cc42TACp.o:basicos22-imagenes-clases.cpp:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'

collect2.exe: error: ld returned 1 exit status

Supongo que sera porque habra que configurar el compilador para c++,en realidad no lo se pero me gustaria saber que se puede hacer para usar c++,sobre todo c++11,14 y 17.


Tienes que usar un compilador de C++. Yo te recomiendo utilizar Visual Studio.


Tengo otra pregunta,he estado haciendo una prueba separando el codigo en un archivo.c y otro.h,pero como no lo he hecho nunca con c pues estoy teniendo problemas.

El archivo.h tiene esto:

//prototipo de programacion de jugador

#ifndef JUGADOR_H

#define JUGADOR_H

#include "raylib.h"

typedef struct Jugador{

    int x,y;

    Color color;

    Texture2D imagen;


void cargarTextura();

void actualizar();

void pintar();

void descargarTextura();


Y el archivo.c tiene esto:

//programacion de jugador

#include "jugador.h"


Jugador jugador;

jugador.x = 280;

jugador.y = 380;

jugador.color = WHITE;

void cargarTextura(){

    jugador.imagen = LoadTexture("jugador.png");


void actualizar(){


        jugador.x -= 5;

    }else if(IsKeyDown(KEY_RIGHT)){

        jugador.x += 5;



void pintar(){



void descargarTextura(){



En el archivo del main incluyo el .h y intento llamar a alguna funcion pero me da error.

C:\Users\usuario\AppData\Local\Temp\ccgfCdVf.o:basico27-objeto.c:(.text.startup+0x37): undefined reference to `cargarTextura'

collect2.exe: error: ld returned 1 exit status

¿Que es lo que estoy haciendo mal?

Pues asi a primera vista no lo se... Para este tipo de consultas te recomiendo que entres al Discord de raylib.


Hello Ray! I love raylib and decided to checkout its design. But I am having a hard time understanding the architecture of rlgl. In my understanding, rlgl allocate a big vertex buffer, after every rlVertex call, it will be add to the vertex buffer and render to the screen. Is that correct ?

Hi Fakeley! Glad you like raylib! :D

About rlgl, it's an abstraction layer over several OpenGL versions, actually, it tries to implement an pseudo-OpenGL 1.1 immediate mode over other OpenGL versions (2.1, 3.3, ES 2.0). rlgl initializes a set of vertex buffers to accumulate vertex on every rlVertex*() call, once there is an internal state change request (texture change, shader change...), buffers are flushed, launching all registered draw calls, and the process starts again.

Ahh, I see. Thank you !

Hello Ray! I want to asked that if raylib limited to 1 window per game only?

Yes, by default it's limited to one window but I think there is some closed GitHub Issue with sample code to support multiple windows.

Thank you! I will check it out!

Is RFXR included with this? I was gonna redownload it today but couldn't find it anymore. Thanks!

Sorry, what do you mean? I don't know what is RFXR...

(1 edit)

Oh ok, I thought you made RFXR. I thought I remember it used Raylib. It was like BFXR sound effect generator but better imo.

Oh, do you mean rFXGen?


Yes! Thank you! It's been a while so I couldn't remember the name exactly.

Hello Rayson,

I just want to say that I really admire your work. I'm yet to be accepted to a university, but my dream is to become a software engineer. Looking at raylib's source and documentation really inspired me. In my future professional career I wish to be able to design software as sound as raylib. 

Thank you very much! Glad you like raylib! A lot of work has been put on it! :D

Hello Raysan,

A quick question. What is the generally used approach to importing a 2D tile map into Raylib? Is a .png file the usual approach where everything is hard coded in or can software like tiles be used and if so, how?

You can use Tiled TMX format: https://github.com/OnACoffeeBreak/raylib_tiled_import_with_tmx

Thanks Ray! Really helpful and thanks for the quick reply!

Viewing most recent comments 1 to 40 of 78 · Next page · Last page