Is OCaml GUI Yet?

Not quite yet, but we're getting there!

OCaml, traditionally known for its strength in systems programming, formal verification, and as the language of choice for numerous academic endeavors, is steadily maturing in the GUI development landscape.

With its strong static typing, emphasis on immutability, and excellent performance, it is gradually making a case for itself as a viable alternative to mainstream GUI development languages.

OCaml has libraries that aid an easy integration and usage of Graphical User Interface (GUI). It offers a range of GUI libraries, each with unique features and capabilities. These libraries allow developers to create user interfaces for their applications.

Want to Help?

Check out our GitHub repo and contribute there.

  • 🟒 : stable, tested and mature
  • 🟑 : getting there, stable but still maturing
  • 🟠 : not yet stable, but progressing
  • πŸ”΄ : unstable/incomplete, needs work
  • πŸ†˜ : barely there, needs serious work


🟑 Frameworks

These libraries provide a rich toolkit to develop GUI applications.

  • bogue GUI library for ocaml, with animations, based on SDL2
  • lablgtk OCaml interface to GTK+
  • lablqml OCamlfind package and PPX extension to interface OCaml and QtQuick
  • tsdl Thin bindings to SDL for OCaml
  • sfml Bindings to the SFML multimedia library

🟑 3d graphics

These are libraries that are for manipulating 3D graphics. They offer a wide range of functionalities, including geometric transformations, rendering, shading, and handling user input.

  • tgls Thin bindings to OpenGL {3,4} and OpenGL ES {2,3} for OCaml
  • glMLite OpenGL bindings for OCaml
  • irrlicht An OCaml binding for the Irrlicht Engine

🟑 2d graphics

These libraries provides the necessary functionalities to create and manipulate 2D graphics.

  • vg Declarative 2D vector graphics for OCaml
  • gg Basic types for computer graphics in OCaml
  • async_graphics Async wrapper for the OCaml Graphics library
  • cairo2 Binding to Cairo, a 2D Vector Graphics Library

🟒 image processing

Packages for image-processing.

🟒 Plotting

These libraries are used to create visual representations of data. They provide functionalities to generate various types of plots, charts, and diagrams.

  • oplot Mathematical plotter library for ocaml
  • gr OCaml bindings to the GR plotting library
  • jupyter-archimedes A Jupyter-friendly 2D plotting library (Archimedes backend)
  • gnuplot Simple interface to Gnuplot Gnuplot-OCaml provides a simple interface to Gnuplot from OCaml. The API supports only 2D graphs and was inspired by FnuPlot
  • matplotlib Plotting using Matplotlib through python
  • plplot Bindings for the PLplot library
  • plotly Binding for Plotly Open Source Graphing Library

🟑 Events

These libraries are used to handle events, which are signals or occurrences in the program’s environment that require a specific action or response.

  • sel Simple Event Library
  • react Declarative events and signals for OCaml
  • telemetry A lightweight library for dispatching and handling events, with a focus on metrics and instrumentation
  • note Declarative events and signals for OCaml
  • iomux IO Multiplexer bindings

Help Improve Our Documentation

All OCaml docs are open source. See something that's wrong or unclear? Submit a pull request.


Innovation. Community. Security.