Il tipo boolean ha due valori, falsi e veri, che rappresentano i valori tradizionali booleani. Tuttavia, essi non detengono il monopolio dei valori di condizione: In Lua, qualsiasi valore può rappresentare una condizione. Condizionali (come quelli in strutture di controllo) considerano falso e nil come falso e qualsiasi altra cosa come vero. Attenzione che, a differenza di altri linguaggi di scripting, Lua considera sia pari a zero e la stringa vuota come vero nei test condizionali.