# HCL

10 Hacker News commenters recommended HCL and 15 criticized it, November 2025 to November 2026. It was recommended in 6 of 13 months.

**Verdict:** Recommended as a simple, declarative configuration language that covers its main use case well, especially in Terraform. Critics say it is hard to refactor and has grown imperative constructs.

## Why people recommend it

- Deliberate limits act as guardrails (3 comments): "The lack of expressiveness of HCL is the point and what makes it so good" ([source](https://news.ycombinator.com/item?id=46223145)) "You can have conditions and types without having the full flexibility" ([source](https://news.ycombinator.com/item?id=46204389)) "HCL is simple enough and can have pretty good guardrails on it" ([source](https://news.ycombinator.com/item?id=47083380))
- Simple to read and write (2 comments): "HCL is simple enough and can have pretty good guardrails on it" ([source](https://news.ycombinator.com/item?id=47083380)) "I do find HCL to be simpler." ([source](https://news.ycombinator.com/item?id=47175131))
- Good fit for its DSL role (2 comments): "HCL solves the problem of unknown values. It's certainly not a "horrible design" unless you're trying to compare it to something that does a different job." ([source](https://news.ycombinator.com/item?id=50137457)) "We use it as what it is - a DSL - that covers its main use case in an elegant manner" ([source](https://news.ycombinator.com/item?id=45963695))

## What people warn about

- Poorly designed language (5 comments): "It's a half baked idea that became production way too fast." ([source](https://news.ycombinator.com/item?id=49426240)) "I NEVER liked HCL, it never made sense to me." ([source](https://news.ycombinator.com/item?id=48085560)) "rather than the poor pseudo-language of hcl" ([source](https://news.ycombinator.com/item?id=46227787))
- Adds imperative constructs to compensate (2 comments): "Yet said language continues to add imperative-inspired constructs to make up for its limitations." ([source](https://news.ycombinator.com/item?id=46224680)) "HCL 2 has loops and conditionals. It is most definitely imperative." ([source](https://news.ycombinator.com/item?id=46160807))
- Hard to refactor or reuse (3 comments): "I always found HCL to be quite terrible, slowly becoming less painful, but not really refactoring-friendly." ([source](https://news.ycombinator.com/item?id=46222566)) "First-class deep merge support is something that I really miss in hacky configuration languages like HCL" ([source](https://news.ycombinator.com/item?id=46275782)) "DRY is not something HCL is good at." ([source](https://news.ycombinator.com/item?id=46223631))
- Hard to learn or parse (2 comments): "their parser and implementing it was actually a little bit more difficult that doing just raw YAML parsing" ([source](https://news.ycombinator.com/item?id=47307288)) "I thought that it would be too complex to learn" ([source](https://news.ycombinator.com/item?id=47134572))

## Alternatives hackers recommend

- [CUE](https://hackerapproved.com/p/cue.md): 29 recommend
- [TOML](https://hackerapproved.com/p/toml.md): 19 recommend
- [Jsonnet](https://hackerapproved.com/p/jsonnet.md): 12 recommend
- [Dhall](https://hackerapproved.com/p/dhall.md): 9 recommend
- [Nickel configuration language](https://hackerapproved.com/p/nickel.md): 8 recommend

## Cite as

Hacker Approved, "HCL", https://hackerapproved.com/p/hcl/ (counts from 1,795,640 Hacker News comments, November 2025 to November 2026).
