Lua Formatter
Format and beautify Lua and Luau scripts with proper indentation and block structure
Lua Formatting Tips
- Use 2-space indentation as is conventional in the Lua community.
- Avoid globals — use local variables whenever possible for better performance.
- Use semicolons only when separating multiple statements on the same line.
- Writing Roblox scripts with type annotations? Try our Luau Formatter for full Luau syntax support. Luau Formatter →
Lua formatting engine: @wasm-fmt/lua_fmt 0.3.2. Formatting parses source without executing it. Luau-specific syntax belongs in the Luau formatter. Lua language reference
Professional Lua Formatter Processing Features
Everything you need to work with Lua Formatter data efficiently and professionally
Block Detection
Automatically detects do/end, if/end, function/end, for/end, while/end, and repeat/until blocks.
Beautify Lua Code
Transform messy Lua scripts into clean, consistently indented code with proper block structure.
Table Formatting
Properly format Lua table constructors with consistent key-value alignment and nested tables.
Function Formatting
Correctly format function definitions, anonymous functions, and method calls with clean parameters.
Fast Processing
Format Lua files up to 10MB instantly with client-side processing, no server round-trips needed.
Syntax Aware
Understands Lua syntax including string patterns, metatables, coroutines, and closures.
How It Works
Simple steps to process your Lua Formatter like a pro
Paste Your Lua Code
Paste your Lua script into the input area, or load a sample to get started.
Customize Options
Choose indentation size to match your project conventions.
Format & Review
Click the format button to beautify your Lua code and review the clean output.
Copy or Download
Copy the formatted code to your clipboard or download it as a file for your project.
Professional Lua Formatter Formatter & Validator
Lua Formatter processing runs entirely in your browser — no uploads, no accounts, no limits.
Processing method
Use this tool’s examples, syntax limits and source documentation to understand its output.
Key Technical Features:
- • Lua syntax-aware parsing with keyword matching
- • Support for Lua 5.4 features including bitwise operators
- • Intelligent indentation for do/end, if/end, function/end blocks
- • Client-side processing for maximum security and speed
- • Support for large scripts up to 10MB
Processing and output
Check the stated processing method and compare the result with your input before using it.
Security & Privacy:
- • 100% client-side processing - data never sent to servers
- • No tracking, cookies or data collection
- • HTTPS encryption for secure connections
- • No data stored or cached after processing
- • GDPR and CCPA compliant approach
Why Professionals Choose EZ Formatter
Your data stays in your browser
Frequently Asked Questions
Common questions about Lua Formatter formatting answered
Yes, our Lua formatter is completely free with no registration required. All processing happens in your browser.
Yes, it handles standard Lua 5.1 through 5.4 syntax and most LuaJIT extensions including FFI.
Yes, the formatter works with Roblox Lua (Luau) and Love2D scripts, as well as standard Lua for any game engine.
No. The formatter only adjusts whitespace and indentation. It never modifies identifiers, values, or logic.
Yes, the formatter properly handles metatable definitions, __index patterns, and object-oriented Lua code structures.
Commonly accepted Lua style (as used by the Lua reference codebase and major projects like Neovim/Kong): 2 or 4 spaces (configurable, never tabs - Lua's semantic ambiguity makes tabs risky), no mandatory semicolons, and method calls with : kept adjacent. There is no BDFL style guide, so the defaults track the dominant community convention.
The classic parser ambiguity a = b (f)(x) vs a = b(f)(x) is neutralized: when a line starts with ( the formatter keeps the previous statement's semicolon if present (or adds whitespace separation), since removing it could merge two statements into one call chain. f{...} and f"..." call sugar is preserved as written.
Yes: integer division //, bitwise operators (&, |, ~, <<, >>), goto/labels, and <close>/<const> attribute annotations on local declarations. LuaJIT-era extensions (goto in 5.1 via patches) also parse. The one deliberate non-feature: no reformatting of long string [[ ]] contents, which are literal.
Authoritative References
Standards and official documentation that define the formats this tool works with.
Related Tools
JSON Formatter
Format, validate, and beautify JSON data with intelligent indentation and syntax highlighting
JSON Repair
Fix malformed, invalid, or broken JSON instantly. Repair truncated LLM output, missing commas, unquoted keys, and trailing commas in your browser
JSONL Formatter
Format JSON Lines (NDJSON) files and convert between JSON and JSONL. Validate each line and pretty-print NDJSON streams