MicroUI – A tiny, portable, immediate-mode UI library written in ANSI C
peter_d_sherman
219 points
73 comments
June 17, 2026
Related Discussions
Found 5 related stories in 111.0ms across 10,813 title embeddings via pgvector HNSW
- Show HN: TinyOS – A minimalist RTOS for Cortex-M written in C hpscript · 95 pts · April 03, 2026 · 52% similar
- Show HN: µJS, a 5KB alternative to Htmx and Turbo with zero dependencies amaury_bouchard · 124 pts · March 07, 2026 · 52% similar
- Show HN: Ilha – a UI library that fits in an AI context window ryuzyy · 20 pts · April 16, 2026 · 51% similar
- mino: A tiny, embeddable, REPL-friendly Lisp implemented in pure ANSI C tosh · 29 pts · May 11, 2026 · 51% similar
- Xilem – An experimental Rust native UI framework Levitating · 58 pts · April 07, 2026 · 50% similar
Discussion Highlights (17 comments)
peter_d_sherman
>"Features o Tiny: around 1100 sloc of ANSI C o Works within a fixed-sized memory region: no additional memory is allocated o Built-in controls: window, scrollable panel, button, slider, textbox, label, checkbox, wordwrapped text o Works with any rendering system that can draw rectangles and text o Designed to allow the user to easily add custom controls o Simple layout system"
Littice
Immediate-mode in pure C is a nice constraint. how does it handle text rendering, do you bring your own atlas or is there something built in? Thats usually the part that balloons the dependency footprint.
ur-whale
Nice, except the hard part seems to be missing: interfacing with an actual window system (X11, TUI, WIN32, whatever ...)
abtinf
The first thing I look for in any UI library is accessibility support. Makes it trivial to filter out toy projects.
synergy20
how is this different from lvgl? is this immediate mode or retained mode?
kartoffelsaft
This has been my goto for personal toy projects for a while now. Trivial to slot in to basically anything that can display text and takes mouse input. I will mention, however, it's kinda abandonware at this point. There is some bug with the draw call iterator which does a misaligned pointer access, which, if your environment is set up to catch that, can get annoying (Zig for example panics on it). There's a github issue that some have used as reason to fork it but all the forks I tried were subtly wrong, for what that's worth.
afavour
Cool to see a demo in there that you can run in a browser, presumably compiled to WebAssembly. The kind of thing that was unimaginable years ago.
OvervCW
What is the advantage of this compared to Dear Imgui?
kettlez
This is included in the Odin vendor libraries, it's fantastic for Raylib debug menus
flohofwoe
I wrote a little demo to run microui on top of the sokol headers here, it's really interesting in how minimal it is. WASM demo: https://floooh.github.io/sokol-html5/sgl-microui-sapp.html Source code: https://github.com/floooh/sokol-samples/blob/master/sapp/sgl... The renderer backend is just a bunch of C functions you need to provide: https://github.com/floooh/sokol-samples/blob/3f4185a8578cd2b... It's also interesting to compare the binary sizes: microui sample ( https://floooh.github.io/sokol-html5/sgl-microui-sapp.html ): 79.6 KBytes compressed download Nuklear sample ( https://floooh.github.io/sokol-html5/nuklear-sapp.html ): 155 kb compressed download Dear ImGui sample ( https://floooh.github.io/sokol-html5/imgui-sapp.html ): 491 KB compressed download
jacereda
I used this one in 2022 to make a proof of concept for a build once / run anywhere graphical app and IIRC the library was quite nice, even if a bit limited. The resulting kludge is at https://github.com/jacereda/cosmogfx and there's a prebuilt binary that should run on Linux, Windows and some BSDs. https://github.com/jacereda/cosmogfx/releases/download/v0.0.... Cosmopolitan Libc has since integrated the bits to make OpenGL work in cross-platform binaries and it's awesome.
jmiskovic
Also see: https://rxi.github.io/microui_v2_an_implementation_overview....
em-bee
anyone working on bindings to other languages? (go, python, ruby, etc)
shideneyu
love the web assembly demo. By the way, I hope this kind of interface for the web becomes more mainstream in the future, I start to hate html / css cuz everything looks the same because of it (even in the train stations they use it for scheduling)
einpoklum
How can such a library be both tiny and portable, when the C standard library has no graphics facilities? Don't you need to lay down a lot of basis for different platforms and graphics backends, to be portable? And if you do that, how can you be tiny?
hparadiz
I need something like this but with a few more bells and whistles.
0x0203
For a slightly larger, cross-platform, retained mode GUI written in C, there's libagar [0]. Different use case than MicroUI, but still a neat project. [0] https://libagar.org/