An open-source 2D level editor from the creator of Dead Cells,
with a strong focus on user-friendliness
Supported languages (learn more)
Easy to use
Modern UI with a strong focus on ease-of-use and quality-of-life features.
Universal and agnostic
As long as your favorite game engine can read JSON, you can read data created in LDtk. The file format is simple and well documented 🙂
Integer grid layers, Tile layers and Entity layers support
Paint your collision map and see the grass, textures and all the small details being drawn automatically!
Just press a single key to zoom out to world mode! Pick a layout among “grid-vania“, “linear“, or “free” and reorganize all your levels using plain old simple drag-n-drop.
Fully customizable Entity with custom properties (ex: you can have a “Mob” entity, with a “hitPoints” field, which is an Integer limited to [0,10] bounds).
You can define an enumeration (ex: an “ItemType” enum with “Money“, “Ammo“, “Gun” values) and use this enum in your entity custom fields.
Enums can even be imported and synced directly from Haxe source code files!
HTML5 and WebGL
LDtk is built around modern web standards.
You get notified as soon as a stable update is released and it’s up to you to install it when you’re ready, with a single click.
LDtk loves Haxe
If you’re a Haxe dev, a powerful open-source API which gives you access to fully typed values from your levels. It avoids mistakes like mistyping, renaming or removals: you see errors during compilation, not at runtime. For example, having:
var p = new MyLdtkProject();
you can do things like:
var level = p.all_levels.MyIntroLevel; var hp = level.all_enemies.f_hitPoints;
The following features are planned in a quite short term, in no particular order. See official issue tracker fore more.