🎉 Get daily to weekly release news in the blog (last update April 16th) and bimonthly updates in the newsletter.

eno is currently transitioning from its first to its final specification!

eno final - If you want to try out the release candidate ecosystem for the final specification you are already there - have a look around, we're excited to have you on board!
eno first - If you need Ruby or PHP libraries before they become available for the final specification in the next weeks or want to work with the first, completely stable ecosystem for now, visit the website for eno first.
A modern plaintext data format for file-based content. More
enoauthor: Jane Doe
email: jane@eno-lang.org

-- my_content
Multi-line embedded content (e.g. markdown) here ...
-- my_content

active = #fff
hover = #b6b6b6

# cities
Den Haag: 52.069961, 4.302315
Málaga: 36.721447, -4.421291
서울특별시: 37.566984, 126.977041

# cities expanded < cities
Springfield: 38.790312, -77.186418


  • Esthetic, intuitive and simple
  • Inclusively designed for you and your team
  • Predefined and custom type support for keys, values and comments
  • Elements and hierarchies can be copied and merged for complex usecases


  • Authoring blogs, up to entire websites, from the macro to the micro level
  • Generating documentation, invoices, CVs, reports, you name it
  • Large scale textfile-based databases and archives
  • Configuration files, from the simplest to the most complex

More about eno

The cross-language eno standard library. More
javascriptimport enolib from 'enolib';

const document = enolib.parse(`
  author: Jane Doe

  // returns 'Jane Doe'
  // throws "The field 'title' must contain a value.
  //   Line | Content
  //      1 | author: Jane Doe
  // >    2 | title:


  • Dynamically extensible query API for custom and third party type support
  • Cursor lookup API (by index or line/column) for easy authoring of rich IDE plugins
  • Querying equals validating - guaranteed data structure and type-safety
  • Fully localized, handwritten, team-friendly error messages
  • Rich error metadata: message, document snippet, cursor position, selection range


  • Static site generation, scalable up to massive amounts of content
  • Generating documentation, code, reports, invoices, CVs, you name it
  • Highly reliable application configuration data with minimal development effort
  • Content management tooling for apps, websites, editors, IDEs, ...

More about enolib

Functional type implementations for use with (or without) enolib. More
javascriptimport { latLng } from 'enotype';

latLng('36.721447, -4.421291');
  // returns { lat: 36.721447, lng: -4.421291 } 

enolib.register({ latLng });

  // returns { lat: 36.721447, lng: -4.421291 }

enotype is a collection of minimalist functions that validate and convert type-unsafe string representations into type-safe, native types. It is the standard type library for enolib but can be utilized in a multitude of other contexts as well.

More about enotype

In development community projects around eno. More

enotcl - Tcl parser
Enohar - (Incomplete) Java library for parsing and emitting Eno documents