HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ocornut
imgui
C++2014–2026
ocornut / imgui

imgui

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

162Distinct people
209Mentions
4Explicit recommenders
77.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

GitHub

Where it is used

What people are saying

I have done lots of UI interfaces in different platforms. I have used Motif and X Windows, Win32, MFC, Gtk, Qt, Cocoa, simple Web interfaces, DirectX, OpenGL, Metal. I love…

cracrecry used a recommendation phrase. 4 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 9:01:12 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year209 dated mentions

Observed mentions: 2014-08-11 02:10:27 UTC to 2026-09-03 10:20:38 UTC.

01020302014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 6 mentions; 4 submissions, 2 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 12 mentions; 2 submissions, 10 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 23 mentions; 3 submissions, 20 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 29 mentions; 7 submissions, 22 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 29 mentions; 2 submissions, 27 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 14 mentions; 0 submissions, 14 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 24 mentions; 1 submissions, 23 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 28 mentions; 4 submissions, 24 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 13 mentions; 2 submissions, 11 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 15 mentions; 1 submissions, 14 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC110
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC642
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC716
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC817
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC12210
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC23320
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC29722
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC29227
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC14014
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC24123
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC28424
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC13211
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC15114

What Hacker News says

24 sources
It's fun to see the evolution in e.g. these examples of image loading for Dear Imgui: https://github.com/ocornut/imgui/wiki/Image-Loading-and-Disp... DirectX9 will even load the image for you, DirectX11 okay we get a few more structures to fill out, DirectX12 is where it goes off the rails and we are filling out a bunch of UNKNOWN DONT_CARE JUST_DO_IT. Then of course Vulkan is the one that gets the big fat "this probably won't actually work for you" warning. I understand whats happening, but you know sometimes I just want to display a fucking image.
In Black Triangles (2014)
ImGui is engine/GPU agnostic Themeing isn't a just a retained mode thing, you can do wonders with immediate UIs, even though (dear)ImGui doesn't provide much, you can still do wonders: https://github.com/ocornut/imgui/issues/707#issuecomment-362... The gaming cheating community is quite creative as well: https://www.unknowncheats.me/forum/c-and-c-/505940-advanced-... More on that topic: https://www.youtube.com/watch?v=Z1qyvQsjK5Y
In Dear ImGui: Graphical User Interface library for C++
From the faq https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-w... Q. What is this library called? This library is called Dear ImGui. Please refer to it as Dear ImGui (not ImGui, not IMGUI). (The library misleadingly started its life in 2014 as "ImGui" due to the fact that I didn't give it a proper name when I released 1.0, and had no particular expectation that it would take off. However, the term IMGUI (immediate-mode graphical user interface) was coined before and is being used in variety of other situations e.g. Unity uses it own implementation of the IMGUI paradigm. To reduce the ambiguity without affecting existing code bases, I have decided in December 2015 a fully qualified name "Dear ImGui" for this library.
In Dear ImGui: Graphical User Interface library for C++
The STB headers are mostly built like that: https://github.com/nothings/stb Dear ImGui is a C++ example: https://github.com/ocornut/imgui You could also add an optional 'convenience layer' over the lower-level flexible-but-inconvenient core library, as long as the core library can be built and used without the convenience layer. In essence it's just a way to decouple the actually important library functionality from runtime environment details which might be better implemented outside the C and C++ stdlibs anyway. It's already as simple as the stdlib IO functions not being asynchrononous while many operating systems provide more modern and performant asynchronous IO APIs. For a specific type of library (such as an image decoder) it's often better to delegate such details to the library user instead of either using the stdlib or having the
Read the rest
library talk directly to OS APIs. PS: this type of library design is actually also quite common in game development, because such libraries must be embeddable in game engine code bases which usually implement their own IO-, threading- and memory-management systems.
In Www which WASM works
> [...] you can build UIs that are snappy and keyboard driven. That's not an advantage that is exclusive to TUIs; after all, you're running your TUI inside a graphical application that emulates a terminal. (Unless you're rocking an actual VT102, in which case I bow down to you.) In fact there's an entire class of applications that are extremely snappy and keyboard driven, by their very nature: games. Some people have taken to writing GUI apps like you'd write a game, and the effects range from OK to fantastic. Check out Lagrange (https://gmi.skyjake.fi/lagrange/), AppManager (https://tildegit.org/solene/AppManager), Dear ImGUI (https://github.com/ocornut/imgui), egui (https://github.com/emilk/egui), and many others.
In Textual Web: TUIs for the Web
React is crazy high in abstraction from what's actually happening. Your data goes through many "translation" steps before actually being rendered to the screen. 1. You have your signals and stuff - the actual data you want rendered. 2. React creates a virtual DOM tree thing out of your markup. 3. That virtual DOM gets turned into real DOM. 4. React gives the real DOM to the browser, who probably has to shift a lot of internal data around to accommodate changes. 5. The browser loops through its DOM and draws it on the screen (somehow - another black box). This is a crazy amount of internal bookkeeping. Compare this with something like Dear ImGui (https://github.com/ocornut/imgui) where it's more like: 1. You have raw data in memory (just ints and char arrays). 2. You loop over your data, generating vertices for the GPU. 3. You give those v
Read the rest
ertices to the GPU to render a frame. IMO this is way easier to reason about. It may seem "inefficient" as you're building up the entire screen from scratch for each frame. But if your content is static, who cares? You can draw one frame and leave it there for as long as you need. If your content is animated, you're probably already redrawing each frame from scratch anyway. At least you know that it's happening now that you've removed the endless layers of black box tree structures.
In Front-end is harder than back-end
> Take ImGui (https://github.com/ocornut/imgui, an immediate mode GUI library) for example - the examples are much closer to TUI interfaces than a Swift UI app - the only difference between that an a terminal UI would be that the lines are thinner and that text has non-uniform spacing. What I see there is a spatial interface with complex layout, z-axis and graphical elements. A bit hard to replicate on a normal terminal. > Does that make ImGui a TUI? TUI and GUI are not defined by the actual complexity of a real application, but the environment which gives them theoretical abilities. With a GUI, you can have pixel-perfect control over every element. With a TUI, you are normally limited to character-level of control. Of course can you also use pixels without a desktop, but you would still leave the terminal-environment and enter the frameb
Read the rest
uffer for this or something similar. Though, to be fair, at this point it indeed can become a bit fuzzy.
In Ask HN: Examples of desktop software with 20+ years of longevity?
I would say that the distinction between TUI and GUI - outside "how would I use this tool remotely" - is mainly one for the developer. Take ImGui (https://github.com/ocornut/imgui, an immediate mode GUI library) for example - the examples are much closer to TUI interfaces than a Swift UI app - the only difference between that an a terminal UI would be that the lines are thinner and that text has non-uniform spacing. Does that make ImGui a TUI? Or make TUIs a GUI? Why are those thin visual lines graphical, if the slightly thicker visual lines drawn by your graphical terminal emulator with support arbitrary color precision and inline image rendition is not? Maybe the issue is that it there is a terminal emulator to visualize the representation. But if an application that is not graphically heavy and needs an intermediary is a TUI, does that
Read the rest
make most utility electron apps TUIs? The difference between a TUI and a GUI is just an implementation detail, and these do not matter in the distinction of desktop app or not. Heck, some modern terminal UIs are more graphically appealing than some GUI apps. And remember, the question was about desktop, not GUI specifically. > The established definition of desktop, mobile, gui, tui and commandline is pretty consistent for some decades now I would say. Considering that all good desktop apps were TUI apps 3 decades ago, that mobile apps are in their modern form has basically only existed for 1.5 decades, and that running mobile apps as desktop apps and the general merge between the disciplines is only a few years old at most, I'd say that this statement doesn't quite hold.
In Ask HN: Examples of desktop software with 20+ years of longevity?
It's a trade off. With ImGui you can definitely have a GUI that is: 1. Very complex 2. Able to use custom, complex widgets 3. High performance 4. Written very quickly with a very simple API Those are significant pros. There are a few serious downsides as well: 1. It is not remotely conforming to the platform's standard UI (a bit less a problem for a DAW since they all have custom GUIs and widgets anyway) 2. The font rendering is done by the GPU using cached textures, so it's more limited in terms of what you can achieve there (not so much a problem for DAWs because you don't have much text to display) 3. Power usage can be high unless you use tricks to adjust the frame rate dynamically 4. It's in C++, which can be a con for some people (although it's written in old-school C-like style) If you can live with those, it's a
Read the rest
great solution. People do crazy stuff with Dear ImGui: https://github.com/ocornut/imgui/issues/5886 (And keep in mind that many of those are week-end / hobby projects, by people who prefer to focus on other things than the GUI of their projects.)
In Digital Audio Workstation Front End Development Struggles

Showing the 15 most recent of 24 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.