SOML icon
SOML icon

SOML

 Like

SOML is a config format that is pleasant to write and easy to read. The top level needs no braces, keys need no quotes, line breaks replace commas, and comments go almost anywhere. A value's type comes from its syntax, never from its content, so what you see is what you get:...

Cost / License

  • Free
  • Open Source (MIT)

Application type

Since

  • New

Updated

  • Updated Oct 2026

Platforms

  • Self-Hosted
  • Mac
  • Windows
  • Linux
  • BSD
0likes
0articles
Save

Features

Features

Highlights All activities

SOML News & Activities

Recent activities

SOML information

GitHub repository

  •  56 Stars
  •  1 Forks
  •  0 Open Issues
  •   Updated  
View on GitHub

Popular alternatives

View all
SOML was added to AlternativeTo by Paul on and this page was last updated .

No comments or reviews, maybe you want to be first?

Official Links

What is SOML?

SOML is a config format that is pleasant to write and easy to read. The top level needs no braces, keys need no quotes, line breaks replace commas, and comments go almost anywhere. A value's type comes from its syntax, never from its content, so what you see is what you get: '123' is a string and 123 is an int. Durations like 30s and dates like 2026-09-19T14:00:00Z are real values, so nobody has to guess the unit of timeout: 30. Paths and regexes need no escaping, and prose goes in block strings. One canonical form and a shared conformance suite mean every implementation reads your file the same way. JSON has the strictness but not the comfort: quotes, commas, and braces everywhere, and no comments. YAML has the comfort but not the clarity: - list markers, nested indentation, and types guessed from content, so country: no becomes false and version: 3.10 becomes 3.1. SOML gives you the comfort and the strictness, without the guessing.

Why SOML?

  • Less noise than JSON, and comments. Keys need no quotes, even with dashes, a line break replaces a comma, and the top level needs no braces. Comments are allowed wherever whitespace may go.
  • What you see is the type. A string always has quotes, and a value without quotes must be a number, an instant, a duration, or a keyword, or the file has an error. So country: no is an error rather than false, and '10.20' and 10.20 are a string and a float, exactly as written.
  • Strict where JSON is vague. Duplicate keys, lone surrogates, and numbers out of range are errors, not behavior that each parser decides. An int is exact to 64 bits, and 3 and 3.0 stay different types.
  • Pleasant to write. Literal strings, so paths and regexes need no escaping, and dedented block strings for prose.
  • Dates and durations are values. 2026-09-19T14:00:00Z is an instant and 1h30m is a duration, so no reader has to parse a string or guess a unit.
  • Indentation is free. Braces and line breaks give the structure, so tabs, spaces, and copy and paste never change what a file means, except inside a block string, where indentation is text.
  • One canonical form. Equal values give equal bytes, for hashing, signing, and comparing. A separate formatter keeps your comments, member order, and the spelling of each value. Its rules are part of the spec, so every conforming formatter gives the same output for the same file.
  • Small and tested. The grammar is one pass with no lookahead, and every implementation runs the language-neutral conformance suite of nearly 1000 cases, so every implementation reads a file the same way.