happytails.ai

HOCON resolver

Resolve a HOCON configuration, such as application.conf for Akka, Play or Spark, into plain JSON. See the final value of every key, which file and line set it, and how substitutions, merges and includes combined.

Up to 500,000 characters in total, 200 files and 50 nested includes. Everything runs on your device in a background worker. Downloads: resolved.json, a JSON report with includes and origins, and a CSV of origins. Paste application.conf. Start each included file with ### file: and its name. Up to 500,000 characters. Review the settings before running.

Your result

Report a problem or share an idea.

How to use HOCON resolver
  1. Paste application.conf. Add included files after a line ### file: name, such as ### file: db-defaults.conf.
  2. Optionally add NAME=value variables that substitutions may fall back to, like environment variables.
  3. Run the resolver and check the resolved JSON and the origin of each value.
  4. Download resolved.json, the JSON report or the CSV of origins.

Useful next steps

How it resolves

Happytails.ai parses and resolves HOCON following the specification in lightbend/config (HOCON.md, Apache-2.0, read on 16 October 2026). Duplicate keys merge objects and later plain values win, a.b.c keys create nested objects, values on one line are concatenated, and ${path} substitutions look at the final configuration, while a key that refers to itself sees its earlier value. When substitutions refer to each other in a loop, the loop is broken by looking back at an earlier value of one of its keys; a loop with no earlier value to fall back on is reported as a cycle. a += b appends to a list.

Includes and variables

include "name" is resolved relative to the including file among the files you paste; without an extension it tries .properties, .json and .conf and merges them. Substitutions inside an included file are tried at the include point first and then from the root. When a path is not defined, the variables box is used like environment variables, including ${NAME[]} for NAME_0, NAME_1 lists.

Conformance and limits

The parser passes the equivalence tests from the lightbend/config repository (equiv01 to equiv05), which are bundled with their Apache-2.0 notice for the automated checks. url() includes, Java system properties, duration and size conversions and the conversion of numbered keys to lists are not applied.