{"slug": "sdl3", "name": "SDL3", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "Cross-platform C library for windowing, input, audio, and GPU-accelerated graphics.", "recommenders": 6, "commenters": 7, "warners": 0, "score": 5.844, "rising": -0.64, "first": "2026-03-02", "latest": "2026-09-16", "why": "Recommended as a cross-platform layer that handles windowing, input, rendering and hardware details, with reported latency gains over SDL2 and a GPU API that newcomers find easier than Vulkan.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 6, "neutral": 1, "compare": 0, "warn": 0}, "spark": [0, 0, 0, 0, 1, 0, 0, 0, 4, 1, 0, 0], "listed": true, "loved": ["Platform abstraction", "Smooth migration"], "caveat": "Fullscreen modes", "short_quote": "I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework.", "icon": true, "domain": null, "github_repo": null, "official_url": "https://www.libsdl.org/", "pricing": "open source", "aliases": ["SDL3", "SDL 3"], "verdict": [{"text": "Recommended as a cross-platform layer that handles windowing, input, rendering and hardware details,", "cites": [{"id": 790831600, "item_id": 49426975, "url": "https://news.ycombinator.com/item?id=49426975", "by": "ovenpasta", "date": "2026-08-24", "stance": "recommend", "quote": "SDL3 was a perfect fit as a backend since it abstracts away the hardware perfectly", "excerpt": "Thanks! You can watch the talk at Ada Developers Workshop Vasteras 2026, where I explain some of your questions: https://www.youtube.com/watch?v=d-RISfK9Sy8 I should write more details in the repo's README file. Basically, I was quite frustrated with the available solutions vs. my requirements and ended up making my own, and this process took me many years. Ada is a language that I always admired, but at the time I d", "context": "author of an Ada GUI library", "use_case": "GUI library backend", "switched_from": "", "story": "Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3"}, {"id": 755507104, "item_id": 47219194, "url": "https://news.ycombinator.com/item?id=47219194", "by": "JKCalhoun", "date": "2026-03-02", "stance": "recommend", "quote": "SDL3 [1] absolutely matched what I wanted.", "excerpt": "100% agree. \u2022 There is overhead in learning how a specific game engine works. \u2022 Often, due to a game engine API, it seems to herd you into writing the same game everyone else is writing with that engine. I wanted just enough \"game engine\" to abstract away the pixel-buffer, windowing, user-events on the various target platforms and then do no more. \"I have been using SDL3 as it does everything I need as a cross-platfo", "context": "indie game developer writing sprite-based games", "use_case": "cross-platform windowing and rendering for games", "switched_from": "", "story": "Making Video Games in 2025 (without an engine)"}]}, {"text": " with reported latency gains over SDL2 and a GPU API that newcomers find easier than Vulkan.", "cites": [{"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}, {"id": 780035616, "item_id": 48752226, "url": "https://news.ycombinator.com/item?id=48752226", "by": "sph", "date": "2026-07-01", "stance": "recommend", "quote": "I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework.", "excerpt": "Thank you! I started recently as a greybeard engineer, and I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework. And if you use it from Odin, the dev experience is so smooth and enjoyable as everything you need to create graphical applications is builtin. I will definitely check out Essential Math for Games and Interactive Applications, I ", "context": "greybeard engineer new to graphics", "use_case": "graphics programming", "switched_from": "", "story": "What to Learn to Be a Graphics Programmer"}]}, {"text": " The main caveat raised is fiddly fullscreen mode handling during migration,", "cites": [{"id": 783586880, "item_id": 48974180, "url": "https://news.ycombinator.com/item?id=48974180", "by": "bondolo", "date": "2026-07-19", "stance": "recommend", "quote": "It was mostly a painless  refactor though I did have some issues with full screen exclusive modes", "excerpt": "I recently converted a game, Tribal Trouble (https://github.com/bondolo/tribaltrouble) from GLFW to SDL3. It was mostly a painless refactor though I did have some issues with full screen exclusive modes and desktop full screen but was eventually able to resolve those. I ended writing a demo for screen mode handling to test and document the fiddly bits. https://github.com/bondolo/SDL3-Fullscreen-Demo The game is Java,", "context": "Java game developer", "use_case": "game windowing and input", "switched_from": "GLFW", "story": "Minecraft: Java Edition now uses SDL3"}]}, {"text": " and one commenter notes that adoption has been slow.", "cites": [{"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}]}], "praise": [{"label": "Platform abstraction", "summary": "Commenters say it abstracts windowing, controllers, rendering and hardware across platforms without imposing a game engine.", "quotes": [{"id": 790831600, "item_id": 49426975, "url": "https://news.ycombinator.com/item?id=49426975", "by": "ovenpasta", "date": "2026-08-24", "stance": "recommend", "quote": "SDL3 was a perfect fit as a backend since it abstracts away the hardware perfectly", "excerpt": "Thanks! You can watch the talk at Ada Developers Workshop Vasteras 2026, where I explain some of your questions: https://www.youtube.com/watch?v=d-RISfK9Sy8 I should write more details in the repo's README file. Basically, I was quite frustrated with the available solutions vs. my requirements and ended up making my own, and this process took me many years. Ada is a language that I always admired, but at the time I d", "context": "author of an Ada GUI library", "use_case": "GUI library backend", "switched_from": "", "story": "Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3"}, {"id": 755507104, "item_id": 47219194, "url": "https://news.ycombinator.com/item?id=47219194", "by": "JKCalhoun", "date": "2026-03-02", "stance": "recommend", "quote": "SDL3 [1] absolutely matched what I wanted.", "excerpt": "100% agree. \u2022 There is overhead in learning how a specific game engine works. \u2022 Often, due to a game engine API, it seems to herd you into writing the same game everyone else is writing with that engine. I wanted just enough \"game engine\" to abstract away the pixel-buffer, windowing, user-events on the various target platforms and then do no more. \"I have been using SDL3 as it does everything I need as a cross-platfo", "context": "indie game developer writing sprite-based games", "use_case": "cross-platform windowing and rendering for games", "switched_from": "", "story": "Making Video Games in 2025 (without an engine)"}, {"id": 780035616, "item_id": 48752226, "url": "https://news.ycombinator.com/item?id=48752226", "by": "sph", "date": "2026-07-01", "stance": "recommend", "quote": "I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework.", "excerpt": "Thank you! I started recently as a greybeard engineer, and I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework. And if you use it from Odin, the dev experience is so smooth and enjoyable as everything you need to create graphical applications is builtin. I will definitely check out Essential Math for Games and Interactive Applications, I ", "context": "greybeard engineer new to graphics", "use_case": "graphics programming", "switched_from": "", "story": "What to Learn to Be a Graphics Programmer"}]}, {"label": "Smooth migration", "summary": "Projects moving from GLFW or SDL2 describe the switch as mostly painless and worthwhile.", "quotes": [{"id": 783586880, "item_id": 48974180, "url": "https://news.ycombinator.com/item?id=48974180", "by": "bondolo", "date": "2026-07-19", "stance": "recommend", "quote": "It was mostly a painless  refactor though I did have some issues with full screen exclusive modes", "excerpt": "I recently converted a game, Tribal Trouble (https://github.com/bondolo/tribaltrouble) from GLFW to SDL3. It was mostly a painless refactor though I did have some issues with full screen exclusive modes and desktop full screen but was eventually able to resolve those. I ended writing a demo for screen mode handling to test and document the fiddly bits. https://github.com/bondolo/SDL3-Fullscreen-Demo The game is Java,", "context": "Java game developer", "use_case": "game windowing and input", "switched_from": "GLFW", "story": "Minecraft: Java Edition now uses SDL3"}, {"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}]}, {"label": "Performance", "summary": "osu reportedly saw significant performance and latency improvements after moving from SDL2.", "quotes": [{"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}]}, {"label": "Approachable GPU API", "summary": "SDL3 GPU is described as modern but not too low level for a graphics newcomer compared to Vulkan.", "quotes": [{"id": 780035616, "item_id": 48752226, "url": "https://news.ycombinator.com/item?id=48752226", "by": "sph", "date": "2026-07-01", "stance": "recommend", "quote": "I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework.", "excerpt": "Thank you! I started recently as a greybeard engineer, and I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework. And if you use it from Odin, the dev experience is so smooth and enjoyable as everything you need to create graphical applications is builtin. I will definitely check out Essential Math for Games and Interactive Applications, I ", "context": "greybeard engineer new to graphics", "use_case": "graphics programming", "switched_from": "", "story": "What to Learn to Be a Graphics Programmer"}]}], "caveats": [{"label": "Fullscreen modes", "summary": "One developer hit issues with exclusive and desktop fullscreen modes, though they resolved them.", "quotes": [{"id": 783586880, "item_id": 48974180, "url": "https://news.ycombinator.com/item?id=48974180", "by": "bondolo", "date": "2026-07-19", "stance": "recommend", "quote": "It was mostly a painless  refactor though I did have some issues with full screen exclusive modes", "excerpt": "I recently converted a game, Tribal Trouble (https://github.com/bondolo/tribaltrouble) from GLFW to SDL3. It was mostly a painless refactor though I did have some issues with full screen exclusive modes and desktop full screen but was eventually able to resolve those. I ended writing a demo for screen mode handling to test and document the fiddly bits. https://github.com/bondolo/SDL3-Fullscreen-Demo The game is Java,", "context": "Java game developer", "use_case": "game windowing and input", "switched_from": "GLFW", "story": "Minecraft: Java Edition now uses SDL3"}]}, {"label": "Slow adoption", "summary": "One commenter observes that SDL3 adoption seems slow.", "quotes": [{"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}]}], "who": [{"by": "SyneRyder", "context": "built voice harness in Go", "url": "https://news.ycombinator.com/item?id=49731152", "date": "2026-09-16"}, {"by": "ovenpasta", "context": "author of an Ada GUI library", "url": "https://news.ycombinator.com/item?id=49426975", "date": "2026-08-24"}, {"by": "bondolo", "context": "Java game developer", "url": "https://news.ycombinator.com/item?id=48974180", "date": "2026-07-19"}, {"by": "sph", "context": "greybeard engineer new to graphics", "url": "https://news.ycombinator.com/item?id=48752226", "date": "2026-07-01"}, {"by": "JKCalhoun", "context": "indie game developer writing sprite-based games", "url": "https://news.ycombinator.com/item?id=47219194", "date": "2026-03-02"}], "tags": ["for game developers", "for graphics beginners", "usable from many languages", "for audio and microphone I/O"], "use_cases": ["audio and microphone handling", "gui library backend", "cross-platform graphics", "game windowing and input", "game windowing/input library", "graphics programming"], "compared": [{"slug": "sdl2", "name": "SDL2", "co": 1, "switched_from": 1, "switched_to": 0}, {"slug": "vulkan", "name": "Vulkan", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48967256", "title": "Minecraft: Java Edition now uses SDL3", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49715947", "title": "Gemini 3.8 Live and 3.8 Live Extended Thinking", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49422243", "title": "Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49022634", "title": "Learn OpenGL, extensive tutorial resource for learning Modern OpenGL", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48750710", "title": "What to Learn to Be a Graphics Programmer", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47176576", "title": "Making Video Games in 2025 (without an engine)", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 4}, "2026-08": {"recommend": 1}, "2026-09": {"neutral": 1}, "2026-10": {}}, "quotes": [{"id": 795698434, "item_id": 49731152, "url": "https://news.ycombinator.com/item?id=49731152", "by": "SyneRyder", "date": "2026-09-16", "stance": "neutral", "quote": "I used Go for the language, and SDL 3 to handle the audio & microphone side", "excerpt": "So, the way GPT-Live-1 works, the Live model just handles the conversation layer in a lightweight manner. For any deeper thinking (and I think tool calls) it will delegate to the Backend. It's like how Fable can delegate tasks to Opus while it keeps going. The Live voice can keep chatting to you while it waits for results from the Backend. The default for the Backend is a Responses Delegation that just sends it to an", "context": "built voice harness in Go", "use_case": "audio and microphone handling", "switched_from": "", "story": "Gemini 3.8 Live and 3.8 Live Extended Thinking"}, {"id": 790831600, "item_id": 49426975, "url": "https://news.ycombinator.com/item?id=49426975", "by": "ovenpasta", "date": "2026-08-24", "stance": "recommend", "quote": "SDL3 was a perfect fit as a backend since it abstracts away the hardware perfectly", "excerpt": "Thanks! You can watch the talk at Ada Developers Workshop Vasteras 2026, where I explain some of your questions: https://www.youtube.com/watch?v=d-RISfK9Sy8 I should write more details in the repo's README file. Basically, I was quite frustrated with the available solutions vs. my requirements and ended up making my own, and this process took me many years. Ada is a language that I always admired, but at the time I d", "context": "author of an Ada GUI library", "use_case": "GUI library backend", "switched_from": "", "story": "Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3"}, {"id": 784394545, "item_id": 49024659, "url": "https://news.ycombinator.com/item?id=49024659", "by": "cyber_kinetist", "date": "2026-07-23", "stance": "recommend", "quote": "I recommend SDL3", "excerpt": "The one and only Holy Bible of Graphics Programming. If you're starting to learn computer graphics, just study through the entire site and do the examples one by one. It doesn't matter one bit that it uses a slightly outdated API called OpenGL - you're supposed to learn how to render things first, not about some weird obscure hardware / driver details! After you've learned it, you can start learning CUDA if you want ", "context": "", "use_case": "cross-platform graphics", "switched_from": "", "story": "Learn OpenGL, extensive tutorial resource for learning Modern OpenGL"}, {"id": 783586880, "item_id": 48974180, "url": "https://news.ycombinator.com/item?id=48974180", "by": "bondolo", "date": "2026-07-19", "stance": "recommend", "quote": "It was mostly a painless  refactor though I did have some issues with full screen exclusive modes", "excerpt": "I recently converted a game, Tribal Trouble (https://github.com/bondolo/tribaltrouble) from GLFW to SDL3. It was mostly a painless refactor though I did have some issues with full screen exclusive modes and desktop full screen but was eventually able to resolve those. I ended writing a demo for screen mode handling to test and document the fiddly bits. https://github.com/bondolo/SDL3-Fullscreen-Demo The game is Java,", "context": "Java game developer", "use_case": "game windowing and input", "switched_from": "GLFW", "story": "Minecraft: Java Edition now uses SDL3"}, {"id": 783486864, "item_id": 48967929, "url": "https://news.ycombinator.com/item?id=48967929", "by": "nekiwo", "date": "2026-07-19", "stance": "recommend", "quote": "it came with significant performance/latency improvements", "excerpt": "osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time. One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.", "context": "", "use_case": "game windowing/input library", "switched_from": "SDL2", "story": "Minecraft: Java Edition now uses SDL3"}, {"id": 780035616, "item_id": 48752226, "url": "https://news.ycombinator.com/item?id=48752226", "by": "sph", "date": "2026-07-01", "stance": "recommend", "quote": "I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework.", "excerpt": "Thank you! I started recently as a greybeard engineer, and I found SDL3 GPU to be modern enough yet not too low level for a newbie compared to Vulkan. SDL in general is a fantastic framework. And if you use it from Odin, the dev experience is so smooth and enjoyable as everything you need to create graphical applications is builtin. I will definitely check out Essential Math for Games and Interactive Applications, I ", "context": "greybeard engineer new to graphics", "use_case": "graphics programming", "switched_from": "", "story": "What to Learn to Be a Graphics Programmer"}, {"id": 755507104, "item_id": 47219194, "url": "https://news.ycombinator.com/item?id=47219194", "by": "JKCalhoun", "date": "2026-03-02", "stance": "recommend", "quote": "SDL3 [1] absolutely matched what I wanted.", "excerpt": "100% agree. \u2022 There is overhead in learning how a specific game engine works. \u2022 Often, due to a game engine API, it seems to herd you into writing the same game everyone else is writing with that engine. I wanted just enough \"game engine\" to abstract away the pixel-buffer, windowing, user-events on the various target platforms and then do no more. \"I have been using SDL3 as it does everything I need as a cross-platfo", "context": "indie game developer writing sprite-based games", "use_case": "cross-platform windowing and rendering for games", "switched_from": "", "story": "Making Video Games in 2025 (without an engine)"}]}