A macro is a way to extend the syntax of Lisp by defining new language constructs. Macros are defined using the defmacro special form and can be used to generate code at compile time. They are a powerful feature of Lisp that allows programmers to create domain-specific languages and abstractions.