Hacker ApprovedDepartments

Lua

Hacker Approved

The most recommended of 14 scripting languages

A tiny, simple language you can hold in your head, widely chosen for embedding and configuration; critics dislike 1-based indexing and its table-everything, dynamically typed design.

A tiny, simple language you can hold in your head, widely chosen for embedding and configuration; critics dislike 1-based indexing and its table-everything, dynamically typed design.

248 people gave an opinion

recommend it
186
criticize it
62
approval share
75%
Each figure is 2 people. RecommendsCriticizes

Recommended in 12 of 13 months

  1. November 2025: recommended
  2. December 2025: recommended
  3. January 2026: recommended
  4. February 2026: recommended
  5. March 2026: recommended
  6. April 2026: recommended
  7. May 2026: recommended
  8. June 2026: recommended
  9. July 2026: recommended
  10. August 2026: recommended
  11. September 2026: recommended
  12. October 2026: recommended
  13. November 2026: not recommended (month in progress)

Owned for 10 years

Median of the 5 owners who said how long they have had it.

Each square is one year.

Why it carries the badge

  • 186 people recommend itNeeds 10 or more, met.
  • 3 recommenders for every criticNeeds 2 to 1 or better, met.
  • Recommended in 12 of 13 monthsNeeds 4 or more, met.

The same three rules apply to every product, and the badge can’t be bought. How the badge works

What people say about it

The reasons people give, with the number of comments that give each one. Open a reason to read what they said.

Why people recommend it

Each mark is one comment

  • Small, simple, easy to learn

    “Maybe because you can fit the whole language spec on a single sheet of paper and adding more advanced features is pretty easy.”

    Comment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

    “You can learn a clean & fun language (lua) and its JIT is maybe/probably running laps around something like GDScript”

    Comment from 29 Sep 2026 in “Using any C++ library in Godot”

    “small and focused and well-organized enough to (at least roughly) understand what's going on at the various layers”

    Comment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”
  • Easy to embed in applications

    “embedding Lua with support for user supplied libraries is less effort than embedding a whole Python/JS runtime”

    Comment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

    “Lua is intended to be a embedded language, so good for Interop, but also also high level and easy to use.”

    Comment from 30 May 2026 in “Zig: Build System Reworked”

    “Lua is just a small C library so the style remains very friendly to those who like C with classes.”

    Comment from 30 Mar 2026 in “C++26 is done ISO C++ standards meeting, Trip Report”
  • Good for configs and DSLs

    “if your config typically has some logic in it, it makes sense to go for an embedded scripting language”

    Comment from 31 May 2026 in “One year of Roto, a compiled scripting language for Rust”

    “Lua syntax is pretty good for DSL (domain specific language) cases / configuration definitions.”

    Comment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

    “it's simple to learn and I can use that knowledge for things other than just configuring my editor”

    Comment from 14 Sep 2026 in “NEO Emacs – GPU-Accelerated Emacs Powered by Rust”
  • Stable and highly portable

    “It's good to have a simple, stable language that works and that you can depend on to remain sane for the forseeable future.”

    Comment from 24 Dec 2025 in “Lua 5.5”

    “incredibly niche (but otherwise make-it-or-break-it) fact that PUC-Rio is and likely always will be strict C89”

    Comment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

    “You can compile and run pretty much any version of Lua on XP with VS 2010 or lcc and it works just fine”

    Comment from 16 Jan 2026 in “Go-legacy-winxp: Compile Golang 1.24 code for Windows XP”

What people warn about

Each mark is one comment

  • 1-based indexing causes issues

    “The only thing I dislike about Lua is the 1-indexing. I know they had reasons for it but it always caused issues.”

    Comment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

    “Conflation of arrays and maps, conflation of `nil` and empty (both in tables and in function arguments), and the perennially-unpopular 1-based indexing.”

    Comment from 28 Dec 2025 in “Mruby: Ruby for Embedded Systems”

    “Because you are constantly shifting across the C/Lua barrier, 1-based indices becomes a disaster”

    Comment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”
  • Everything-is-a-table design frustrates

    “I ran into enough issues with it's "everything is a table" design that I stopped using it.”

    Comment from 30 Sep 2026 in “Tcl/Tk 9.1”

    “Conflation of arrays and maps, conflation of `nil` and empty (both in tables and in function arguments), and the perennially-unpopular 1-based indexing.”

    Comment from 28 Dec 2025 in “Mruby: Ruby for Embedded Systems”
  • Dynamic typing and weak tooling

    “Lua is good for embedding but the language itself is terrible for LLM usage (too much dynamic typing)”

    Comment from 2 Aug 2026 in “Cyberscript”

    “Lua is garbage collected, dynamically typed, strays far from standard syntax patterns, and has less existing tooling than C.”

    Comment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

    “But I think it's rather infuriating, all those points could be less relevant if the tooling for "real" programming languages was better.”

    Comment from 2 Mar 2026 in “Making Video Games in 2025 (without an engine)”
  • Small ecosystem and libraries

    “I think the problem with lua was that there is a lack of libraries & projects regarding it so this might actually help it”

    Comment from 21 Jan 2026 in “Skip Is Now Free and Open Source”

    “Which is imho the superior scripting language just constrained by a smaller userbase.”

    Comment from 2 Feb 2026 in “MicroPythonOS graphical operating system delivers Android-like user experience”

    “I avoid a language without JSON parsing officially supported because I need that frequently”

    Comment from 24 Apr 2026 in “Bitwarden CLI Compromised in Ongoing Checkmarx Supply Chain”

Other scripting languages people recommend

The four most recommended other scripting languages, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.

Lua compared with 4 alternatives
ProductRecommendCriticizeApprovalMonthsOwnedBadge
LuaThis page1866275%1210 yrs5 ownersApproved
awk671879%12—Approved
AutoHotkey44590%11—Approved
GDScript221658%9——
AppleScript191851%10——
See all 14 scripting languages, ranked

What people said

40 of the 311 comments that mention it, newest first. Each links to the original comment.

“I've used Lua very successfully in many commercial projects, so I'm quite convinced of its power”

RecommendsComment from 12 Oct 2026 in “A Modern Web App in C”

“I ran into enough issues with it's "everything is a table" design that I stopped using it.”

MixedComment from 30 Sep 2026 in “Tcl/Tk 9.1”

“if I were in the market for an extension glue language today, I'd reach for Lua first”

RecommendsComment from 29 Sep 2026 in “Tcl/Tk 9.1”

“You can learn a clean & fun language (lua) and its JIT is maybe/probably running laps around something like GDScript”

RecommendsComment from 29 Sep 2026 in “Using any C++ library in Godot”

“it's simple to learn and I can use that knowledge for things other than just configuring my editor”

RecommendsComment from 14 Sep 2026 in “NEO Emacs – GPU-Accelerated Emacs Powered by Rust”

“Lua is good for embedding but the language itself is terrible for LLM usage (too much dynamic typing)”

MixedComment from 2 Aug 2026 in “Cyberscript”

“Lua is a very small language though and sandboxing it to specific global functions is trivial”

RecommendsComment from 28 Jul 2026 in “Build Systems Discussion”

“For readability, `then` allows splitting with newlines very long conditional expressions”

RecommendsComment from 25 Jun 2026 in “LuaJIT 3.0 proposed syntax extensions”

“if your config typically has some logic in it, it makes sense to go for an embedded scripting language”

RecommendsComment from 31 May 2026 in “One year of Roto, a compiled scripting language for Rust”

“Lua is intended to be a embedded language, so good for Interop, but also also high level and easy to use.”

RecommendsComment from 30 May 2026 in “Zig: Build System Reworked”

“If you drop-in replaced JS today with Lua, you'd have a conceptually similar language with a lot of warts chopped off.”

MixedComment from 20 May 2026 in “Mini Shai-Hulud Strikes Again: 314 npm Packages Compromised”

“I avoid a language without JSON parsing officially supported because I need that frequently”

CriticizesComment from 24 Apr 2026 in “Bitwarden CLI Compromised in Ongoing Checkmarx Supply Chain”

“its really quite unfair on the language and those who have used it quite well to do big things”

RecommendsComment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“embedding Lua with support for user supplied libraries is less effort than embedding a whole Python/JS runtime”

RecommendsComment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“It's a design choice to have a language as small as possible while still offering cool tools.”

RecommendsComment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“It offers just enough functionality while not making it overly complicated to make basic things.”

RecommendsComment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“Lua is so small and simple (but not simplistic) that you can keep it completely in your head.”

RecommendsComment from 6 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“Lua is garbage collected, dynamically typed, strays far from standard syntax patterns, and has less existing tooling than C.”

CriticizesComment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“small and focused and well-organized enough to (at least roughly) understand what's going on at the various layers”

RecommendsComment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“Maybe because you can fit the whole language spec on a single sheet of paper and adding more advanced features is pretty easy.”

RecommendsComment from 5 Apr 2026 in “LÖVE: 2D Game Framework for Lua”

“Lua is just a small C library so the style remains very friendly to those who like C with classes.”

RecommendsComment from 30 Mar 2026 in “C++26 is done ISO C++ standards meeting, Trip Report”

“But I think it's rather infuriating, all those points could be less relevant if the tooling for "real" programming languages was better.”

CriticizesComment from 2 Mar 2026 in “Making Video Games in 2025 (without an engine)”

“lua is #2 behind javascript/typescript's #1 when it comes to scripting language LSP stuff”

RecommendsComment from 14 Feb 2026 in “Vim 9.2 Released”

“Which is imho the superior scripting language just constrained by a smaller userbase.”

RecommendsComment from 2 Feb 2026 in “MicroPythonOS graphical operating system delivers Android-like user experience”

“The language is very minimal, memory safe, and has Pascal-like syntax just like Delphi.”

RecommendsComment from 1 Feb 2026 in “The history of C# and TypeScript with Anders Hejlsberg | GitHub”

“I think the problem with lua was that there is a lack of libraries & projects regarding it so this might actually help it”

RecommendsComment from 21 Jan 2026 in “Skip Is Now Free and Open Source”

“You can compile and run pretty much any version of Lua on XP with VS 2010 or lcc and it works just fine”

RecommendsComment from 16 Jan 2026 in “Go-legacy-winxp: Compile Golang 1.24 code for Windows XP”

“Conflation of arrays and maps, conflation of `nil` and empty (both in tables and in function arguments), and the perennially-unpopular 1-based indexing.”

CriticizesComment from 28 Dec 2025 in “Mruby: Ruby for Embedded Systems”

“Lua syntax is pretty good for DSL (domain specific language) cases / configuration definitions.”

RecommendsComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“incredibly niche (but otherwise make-it-or-break-it) fact that PUC-Rio is and likely always will be strict C89”

MixedComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“It's good to have a simple, stable language that works and that you can depend on to remain sane for the forseeable future.”

RecommendsComment from 24 Dec 2025 in “Lua 5.5”

“Metatables are pretty powerful, and "everything is in a table" made it super easy to do hot reloading.”

RecommendsComment from 24 Dec 2025 in “Lua 5.5”

“it makes sense as an optimization within the context of Lua's design goals of being lightweight and fast”

MixedComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“Because you are constantly shifting across the C/Lua barrier, 1-based indices becomes a disaster”

CriticizesComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“The only thing I dislike about Lua is the 1-indexing. I know they had reasons for it but it always caused issues.”

MixedComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“The first language I learned was Lua, and because of that it seems to have a special place in my heart”

RecommendsComment from 24 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“Lua only departs from norms if you’ve had a very narrow experience with other programming languages.”

RecommendsComment from 23 Dec 2025 in “Fabrice Bellard Releases MicroQuickJS”

“that was surprising to me in Lua. I adapted to it, but it did cause a little bit of awkwardness”

MixedComment from 6 Dec 2025 in “Show HN: SFX – A language where 0.1 and 0.2 = 0.3 and Context is first-class”

“good thing about lua is you avoid the headache of people asking for NPM package support”

RecommendsComment from 29 Nov 2025 in “Show HN: Bodge.app – μFaaS for hacked-together personal tools and small projects”

“Lua does it--exceptions at the language level, and either setjmp/longjmp or C++ exceptions in the VM implementation.”

RecommendsComment from 12 Nov 2025 in “Problems with C++ exceptions”

Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.