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!.

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 or ES 2.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 +120 code examples!
  • Bindings to +60 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
(110 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
MultiplayerLocal multiplayer
LinksHomepage, Patreon, Source code, Support, Community


Download NowName your own price

Click download now to get access to the following files:

raylib 4.5 Windows Installer 64bit (MinGW compiler) 109 MB

Development log

View all posts


Log in with itch.io to leave a comment.

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

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 131 days 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!

Hi ray, i'm doing some 3D modelling and i'm looking at the examples on the raylib home page. most of them include this line 

model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;

but MATERIAL_MAP_DIFFUSE does not seem to be existing in raylib 3.5, what should i use instead?

It was changed for upcoming raylib 3.7, you can just use MAP_DIFFUSE.

Hi ray, every time I compile my raylib project it just logs too much stuff to my terminal, is there a way I could disable that?

I think you can use: SetTraceLogLevel(LOG_NONE)

Thanks! It worked

Hola Ray.

¿Para cuando estara el soporte para software?,la version 3.5 no lo trae asi que sigo sin poder usarla en condiciones.

Yo lo que hago es usar este archivo "opengl32.dll",que creo que emula el soporte por opengl ,pero me va muy lento raylib.

Estara listo para la proxima version o todavia queda mucho.Saludos y a cuidarse en estos momentos complicados.

Antes de que se me olvide,lei algo sobre que estabas preguntando si la gente queria que hicieras tutoriales.A mi si me gustaria que los hicieras,pero seria mejor escritos,de esta manera los puedo traducir con el traductor de google.

En realidad el soporte de render por software ya esta disponible, solo para 2d, usando las funciones `ImageDraw*()` para dibujar sobre imagenes. De momento esta asi. Sobre los tutoriales, me gustaria hacerlo pero prefiero invertir mi tiempo libre en otras cosas.

Vale,pues he estado probando la version 3.5 y he probado el ejemplo mas basico que trae,el core_basic_window y no me funciona.

Luego he ido a raylib_source_compile para ver si hay alguna opcion para compilar por software y no he visto nada,solo he visto:

SET GRAPHIC_API=GRAPHICS_API_OPENGL_33,aqui puedo pone 11 o 21 o 33 pero... para software no veo nada,me puedes decir que hay que hacer para compilar para software porque no tengo ni idea.

Solo usa funciones ImageDraw*() en vez de las otras.

Siento ser tan pesado pero no he conseguido nada.

ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); 

No entiendo los paramentros de esta funcion,puedes poner un pequeño codigo donde cargas la imagen y la muestras,despues lo pruebo y veo si funciona.

El objetivo de estas funciones es dibujar sobre una imagen, el sistema de visionado depende del usuario, raylib no tiene esa funcionalidad. Este ejemplo utiliza estas funciones: https://github.com/raysan5/raylib/blob/master/examples/textures/textures_image_d...

Si esperas activar render por software y que se haga un blit automatico a una window, esa funcionalidad no esta en raylib ni creo que se añada.

Deleted 2 years ago

raylib already works with C++ but you can also use raylib-cpp.

Has anyone a good tutorial series about making a plattformer

I don't know any tutorial but probably a good start could be checking raylib core_2d_camera_platformer example


It helped a lot

In raylib.h, the comment after the definition of BLEND_CUSTOM says “Belnd textures using custom src/dst factors (use SetBlendModeCustom())”. However, I could not find the definition of the function SetBlendModeCustom(). Where is SetBlendModeCustom() defined? I am using raylib 3.5.0 installed with vcpkg.

Hi! I'm afraid that comment was wrong, I already reviewed it. The function to use is rlSetBlendMode(), that is not exposed by raylib but internal to rlgl, you can use it just including rlgl.h.

I’ll try to use rlSetBlendMode(). Thank you for your prompt reply.

Hola Ray,no se podria hacer raylib compatible con direct3d 9 o software.

Mi ordenador es viejo y trae una grafica integrada que no soporta opengl y no puedo usar raylib.

raylib soporta OpenGL 1.1, si tu ordenador es posterior a 1992, raylib deberia funcionar pero debes recompilar la libreria: https://github.com/raysan5/raylib/wiki/Working-on-Windows#build-raylib-using-mak...

Añadir soporte para Direct3D no esta planeado pero la opcion de software rendering esta en proceso (solo para 2d).

Estuve probando lo que comenta el enlace que me pasastes,sobre lo de hacerlo desde la linea de comandos es algo que no suelo usar nunca y no me manejo muy bien pero lo intente y no consegui nada.

Luego lo intente hacer desde el script raylib_source_compile en el archivo raylib.h pero me daba errores al compilar,pero igualmente luego fui al ejemplo que se abre con el notepad++ al principio y lo volvi a compilar con raylib_source_compile y raylib_compile_execute y me da errores.

Estube buscando la forma de ver que opengl soporta mi ordenador y probe el programa GPU_Caps_Viewer,me diice que soporta OpenGL 1.1 (2 ext) - GDI Generic,la tarjeta es Mobile Intel(R) 965 Express Chipset Family,GMA X3100 (rev:  C).

El contralador que uso es la ultima version que salio,por lo que no se puede actualizar.

Hi can someone guide me on how to get raylib working on Visual Studio 2019

please help me

you can use provided project in raylib/projects/VS2017, it should work ok with VS2019

Is there a guide I can use to set this up with Clion? Clion uses cmake if it helps.

raylib Wiki has several IDE configuration guides: https://github.com/raysan5/raylib/wiki Unfortunately not for CLion... feel free to add it.


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